| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- //
- // SetupCompleteView.swift
- // OmniKit
- //
- // Created by Pete Schwamb on 3/2/21.
- // Copyright © 2021 LoopKit Authors. All rights reserved.
- //
- import SwiftUI
- import LoopKitUI
- struct SetupCompleteView: View {
-
- @Environment(\.verticalSizeClass) var verticalSizeClass
- @Environment(\.appName) private var appName
-
- private var onSaveScheduledExpirationReminder: ((_ selectedDate: Date?, _ completion: @escaping (_ error: Error?) -> Void) -> Void)?
- private var didFinish: () -> Void
- private var didRequestDeactivation: () -> Void
- private var dateFormatter: DateFormatter
- @State private var scheduledReminderDate: Date?
- @State private var scheduleReminderDateEditViewIsShown: Bool = false
- var allowedDates: [Date]
- init(scheduledReminderDate: Date?, dateFormatter: DateFormatter, allowedDates: [Date], onSaveScheduledExpirationReminder: ((_ selectedDate: Date?, _ completion: @escaping (_ error: Error?) -> Void) -> Void)?, didFinish: @escaping () -> Void, didRequestDeactivation: @escaping () -> Void)
- {
- self._scheduledReminderDate = State(initialValue: scheduledReminderDate)
- self.dateFormatter = dateFormatter
- self.allowedDates = allowedDates
- self.onSaveScheduledExpirationReminder = onSaveScheduledExpirationReminder
- self.didFinish = didFinish
- self.didRequestDeactivation = didRequestDeactivation
- }
-
- var body: some View {
- GuidePage(content: {
- VStack {
- LeadingImage("Pod")
- Text(String(format: LocalizedString("Your Pod is ready for use.\n\n%1$@ will remind you to change your pod before it expires. You can change this to a time convenient for you.", comment: "Format string for instructions for setup complete view. (1: app name)"), appName))
- .fixedSize(horizontal: false, vertical: true)
- Divider()
- VStack(alignment: .leading) {
- Text(LocalizedString("Scheduled Reminder", comment: "Scheduled reminder card title on SetupCompleteView"))
- Divider()
- NavigationLink(
- destination: ScheduledExpirationReminderEditView(
- scheduledExpirationReminderDate: scheduledReminderDate,
- allowedDates: allowedDates,
- dateFormatter: dateFormatter,
- onSave: { (newDate, completion) in
- onSaveScheduledExpirationReminder?(newDate) { (error) in
- if error == nil {
- scheduledReminderDate = newDate
- }
- completion(error)
- }
- },
- onFinish: { scheduleReminderDateEditViewIsShown = false }),
- isActive: $scheduleReminderDateEditViewIsShown)
- {
- RoundedCardValueRow(
- label: LocalizedString("Time", comment: "Label for expiration reminder row"),
- value: scheduledReminderDateString(scheduledReminderDate),
- highlightValue: false
- )
- }
- }
- }
- .padding(.bottom, 8)
- .accessibility(sortPriority: 1)
- }) {
- Button(action: {
- didFinish()
- }) {
- Text(LocalizedString("Finish Setup", comment: "Action button title to continue at Setup Complete"))
- .actionButtonStyle(.primary)
- }
- .padding()
- .background(Color(UIColor.systemBackground))
- .zIndex(1)
- }
- .animation(.default)
- .navigationBarTitle(LocalizedString("Setup Complete", comment: "Title of SetupCompleteView"), displayMode: .automatic)
- }
-
- private func scheduledReminderDateString(_ scheduledDate: Date?) -> String {
- if let scheduledDate = scheduledDate {
- return dateFormatter.string(from: scheduledDate)
- } else {
- return LocalizedString("No Reminder", comment: "Value text for no expiration reminder")
- }
- }
- }
- struct SetupCompleteView_Previews: PreviewProvider {
- static var previews: some View {
- SetupCompleteView(
- scheduledReminderDate: Date(),
- dateFormatter: DateFormatter(),
- allowedDates: [Date()],
- onSaveScheduledExpirationReminder: { (date, completion) in
- },
- didFinish: {
- },
- didRequestDeactivation: {
- }
- )
- }
- }
|