Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
signalapp
GitHub Repository: signalapp/Signal-iOS
Path: blob/main/SignalUI/RecipientPickers/ContactAccessLimitedReminderView.swift
1 views
//
// Copyright 2024 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//

import SignalServiceKit
import SwiftUI

@available(iOS 18, *)
struct ContactAccessLimitedReminderView: View {
    private let completion: () -> Void
    init(completion: @escaping () -> Void) {
        self.completion = completion
    }

    @State private var displayPicker = false
    var body: some View {
        HStack {
            Text(
                OWSLocalizedString(
                    "COMPOSE_SCREEN_LIMITED_CONTACTS_PERMISSION",
                    comment: "Multi-line label explaining why compose-screen contact picker is empty.",
                ),
            )
            .font(.system(.subheadline))
            Spacer()
            VStack {
                Menu {
                    Button {
                        displayPicker.toggle()
                    } label: {
                        Label {
                            Text(
                                OWSLocalizedString(
                                    "COMPOSE_SCREEN_LIMITED_CONTACTS_ACTION_MANAGE",
                                    comment: "Menu action to display limited contact picker.",
                                ),
                            )
                        } icon: {
                            Image(systemName: "person.crop.circle")
                        }
                    }
                    Button {
                        CurrentAppContext().openSystemSettings()
                    } label: {
                        Label {
                            Text(
                                OWSLocalizedString(
                                    "COMPOSE_SCREEN_LIMITED_CONTACTS_ACTION_SETTINGS",
                                    comment: "Menu action visit app contact permission in settings.",
                                ),
                            )
                        } icon: {
                            Image(systemName: "gear")
                        }
                    }
                } label: {
                    Text(
                        OWSLocalizedString(
                            "COMPOSE_SCREEN_LIMITED_CONTACTS_CTA",
                            comment: "Multi-line label explaining why compose-screen contact picker may be missing contacts.",
                        ),
                    )
                    .font(.system(.subheadline).weight(.bold))
                }
            }
        }
        .contactAccessPicker(isPresented: $displayPicker) { _ in
            completion()
        }
    }
}