Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
signalapp
GitHub Repository: signalapp/Signal-iOS
Path: blob/main/Signal/src/ViewControllers/MemberLabels/MemberLabelHeroSheets.swift
1 views
//
// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//

import SignalServiceKit
import SignalUI

class MemberLabelAboutOverrideHeroSheet: HeroSheetViewController {
    init(dontShowAgainHandler: @escaping () -> Void) {
        super.init(
            hero: .image(.tag22, tintColor: UIColor.Signal.label),
            title: OWSLocalizedString(
                "MEMBER_LABEL_HERO_SHEET_ABOUT_OVERRIDE_TITLE",
                comment: "Title for a sheet shown if a user will show their member label over their About message in a group.",
            ),
            body: OWSLocalizedString(
                "MEMBER_LABEL_HERO_SHEET_ABOUT_OVERRIDE_BODY",
                comment: "Body for a sheet shown if a user will show their member label over their About message in a group.",
            ),
            primaryButton: HeroSheetViewController.Button(
                title: CommonStrings.okButton,
                action: .dismiss,
            ),
            secondaryButton: HeroSheetViewController.Button(
                title: CommonStrings.dontShowAgainButton,
                style: .secondary,
                action: .custom({ sheet in
                    sheet.dismiss(animated: true)
                    dontShowAgainHandler()
                }),
            ),
        )
    }
}

class MemberLabelEducationHeroSheet: HeroSheetViewController {
    init(hasMemberLabel: Bool, editMemberLabelHandler: (() -> Void)?) {
        let memberLabelEditString: String
        if hasMemberLabel {
            memberLabelEditString = OWSLocalizedString("MEMBER_LABEL_EDIT", comment: "Text for a button to set a member label")
        } else {
            memberLabelEditString = OWSLocalizedString("MEMBER_LABEL_SET", comment: "Text for a button to edit an existing member label")
        }

        let title = OWSLocalizedString(
            "MEMBER_LABEL_HERO_SHEET_EDUCATION_TITLE",
            comment: "Title for a sheet shown if a user taps on someone else's member label.",
        )
        let body = OWSLocalizedString(
            "MEMBER_LABEL_HERO_SHEET_EDUCATION_BODY",
            comment: "Body for a sheet shown if a user taps on someone else's member label.",
        )

        let primaryButton: HeroSheetViewController.Button
        var secondaryButton: HeroSheetViewController.Button?
        if let editMemberLabelHandler {
            primaryButton = HeroSheetViewController.Button(
                title: memberLabelEditString,
                action: .custom({ sheet in
                    sheet.dismiss(animated: true)
                    editMemberLabelHandler()
                }),
            )
            secondaryButton = HeroSheetViewController.Button(
                title: CommonStrings.okButton,
                style: .secondary,
                action: .dismiss,
            )
        } else {
            primaryButton = HeroSheetViewController.Button(
                title: CommonStrings.okButton,
                style: .primary,
                action: .dismiss,
            )
        }

        super.init(
            hero: .image(.tag22, tintColor: UIColor.Signal.label),
            title: title,
            body: body,
            primaryButton: primaryButton,
            secondaryButton: secondaryButton,
        )
    }
}