mirror of
https://github.com/home-assistant/iOS.git
synced 2026-02-09 10:11:23 -06:00
<!-- Thank you for submitting a Pull Request and helping to improve Home Assistant. Please complete the following sections to help the processing and review of your changes. Please do not delete anything from this template. --> ## Summary <!-- Provide a brief summary of the changes you have made and most importantly what they aim to achieve --> ## Screenshots <!-- If this is a user-facing change not in the frontend, please include screenshots in light and dark mode. -->  ## Link to pull request in Documentation repository <!-- Pull requests that add, change or remove functionality must have a corresponding pull request in the Companion App Documentation repository (https://github.com/home-assistant/companion.home-assistant). Please add the number of this pull request after the "#" --> Documentation: home-assistant/companion.home-assistant# ## Any other notes <!-- If there is any other information of note, like if this Pull Request is part of a bigger change, please include it here. --> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
63 lines
2.2 KiB
Swift
63 lines
2.2 KiB
Swift
import Shared
|
|
import SwiftUI
|
|
|
|
struct NotificationPermissionRequestView: View {
|
|
@Environment(\.dismiss) private var dismiss
|
|
@State private var bottomSheetState: AppleLikeBottomSheetViewState?
|
|
|
|
var body: some View {
|
|
AppleLikeBottomSheet(
|
|
title: L10n.Permission.Notification.title, content: {
|
|
VStack(spacing: DesignSystem.Spaces.three) {
|
|
ScrollView {
|
|
Text(L10n.Permission.Notification.body)
|
|
.foregroundStyle(.secondary)
|
|
.multilineTextAlignment(.center)
|
|
.padding(.vertical, DesignSystem.Spaces.one)
|
|
.fixedSize(horizontal: false, vertical: true)
|
|
}
|
|
.frame(maxHeight: 200)
|
|
VStack(spacing: DesignSystem.Spaces.one) {
|
|
Button {
|
|
triggerNativePopup()
|
|
} label: {
|
|
Text(L10n.Permission.Notification.primaryButton)
|
|
}
|
|
.buttonStyle(.primaryButton)
|
|
Button {
|
|
triggerNativePopup()
|
|
} label: {
|
|
Text(L10n.Permission.Notification.secondaryButton)
|
|
}
|
|
.buttonStyle(.secondaryButton)
|
|
}
|
|
}
|
|
},
|
|
contentInsets: .init(
|
|
top: .zero,
|
|
leading: DesignSystem.Spaces.two,
|
|
bottom: DesignSystem.Spaces.three,
|
|
trailing: DesignSystem.Spaces.two
|
|
),
|
|
bottomSheetMinHeight: 310,
|
|
state: $bottomSheetState
|
|
)
|
|
}
|
|
|
|
private func triggerNativePopup() {
|
|
dismiss()
|
|
UNUserNotificationCenter.current().requestAuthorization(options: .defaultOptions) { _, error in
|
|
if let error {
|
|
Current.Log.error("Error when requesting notifications permissions: \(error)")
|
|
}
|
|
DispatchQueue.main.async {
|
|
UIApplication.shared.registerForRemoteNotifications()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
NotificationPermissionRequestView()
|
|
}
|