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

import SignalServiceKit
import SignalUI

class LegacyGroupView: UIView {

    private weak var viewController: UIViewController?

    init(viewController: UIViewController) {
        self.viewController = viewController

        super.init(frame: .zero)
    }

    @available(*, unavailable, message: "use other init() instead.")
    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    private let label = UILabel()

    private func configureLabel(format: String, highlightedSubstring: String) {
        let text = String.nonPluralLocalizedStringWithFormat(format, highlightedSubstring)

        let attributedString = NSMutableAttributedString(string: text)
        attributedString.setAttributes(
            [.foregroundColor: Theme.accentBlueColor],
            forSubstring: highlightedSubstring,
        )

        label.attributedText = attributedString
    }

    private func configureDefaultLabelContents() {
        let format = OWSLocalizedString(
            "LEGACY_GROUP_UNSUPPORTED_MESSAGE",
            comment: "Message explaining that this group can no longer be used because it is unsupported. Embeds a {{ learn more link }}.",
        )
        let learnMoreText = CommonStrings.learnMore

        configureLabel(format: format, highlightedSubstring: learnMoreText)

        isUserInteractionEnabled = true
        addGestureRecognizer(UITapGestureRecognizer(
            target: self,
            action: #selector(didTapLearnMore),
        ))
    }

    func configure() {
        backgroundColor = Theme.secondaryBackgroundColor
        layer.cornerRadius = 4
        layoutMargins = UIEdgeInsets(top: 10, leading: 12, bottom: 10, trailing: 12)

        label.textColor = Theme.secondaryTextAndIconColor
        label.font = .dynamicTypeFootnote
        label.textAlignment = .center
        label.numberOfLines = 0
        label.lineBreakMode = .byWordWrapping
        addSubview(label)
        label.autoPinEdgesToSuperviewMargins()

        configureDefaultLabelContents()
    }

    // MARK: - Events

    @objc
    private func didTapLearnMore() {
        guard let viewController else {
            owsFailDebug("Missing viewController.")
            return
        }

        viewController.presentFormSheet(
            LegacyGroupLearnMoreViewController(mode: .explainUnsupportedLegacyGroups),
            animated: true,
        )
    }
}