// // SettingsView.swift // Feels // // Created by Trey Tartt on 1/8/22. // import SwiftUI struct SettingsView: View { @Environment(\.dismiss) var dismiss let editedDataClosure: (() -> Void) @State private var showOnboarding = false @AppStorage("savedOnboardingData") private var savedOnboardingData = OnboardingData() @AppStorage("showReminder") private var showReminder: Bool = false var body: some View { ZStack { Color(UIColor.secondarySystemBackground) VStack { closeButtonView .padding() randomShitCell addTestDataCell clearDB whyBackgroundMode changeIcon showOnboardingButton Spacer() } .padding() }.sheet(isPresented: $showOnboarding) { OnboardingMain(onboardingData: savedOnboardingData, completionClosure: { onboardingData in showOnboarding = false savedOnboardingData = onboardingData }) } } private var closeButtonView: some View { HStack{ Spacer() Button(action: { dismiss() }, label: { Text("Exit") .font(.body) .foregroundColor(Color(UIColor.systemBlue)) }) } } private var randomShitCell: some View { ZStack { Color(UIColor.systemBackground) VStack { Button(action: { }, label: { Text("Special thanks to") }) .padding() } } .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } private var addTestDataCell: some View { ZStack { Color(UIColor.systemBackground) Button(action: { PersistenceController.shared.populateTestData() editedDataClosure() }, label: { Text("Add test data") }) .padding() } .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } private var clearDB: some View { ZStack { Color(UIColor.systemBackground) Button(action: { PersistenceController.shared.clearDB() editedDataClosure() }, label: { Text("Clear DB") }) .padding() } .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } private var whyBackgroundMode: some View { ZStack { Color(UIColor.systemBackground) Text("we do bg mode b/c we can") .padding() } .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } let iconSets: [(String,String)] = [ ("PurpleFeelsAppIcon", "PurpleAppIcon"), ("RedFeelsAppIcon", "RedAppIcon") ] private var changeIcon: some View { ZStack { Color(UIColor.systemBackground) VStack { Text("Change Icon") HStack { Button(action: { UIApplication.shared.setAlternateIconName(nil) }, label: { Image("FeelsAppIcon", bundle: .main) .resizable() .frame(width: 50, height:50) .cornerRadius(10) }) .padding() ForEach(iconSets, id: \.self.0){ iconSet in Button(action: { UIApplication.shared.setAlternateIconName(iconSet.1) { (error) in // FIXME: Handle error } }, label: { Image(iconSet.0, bundle: .main) .resizable() .frame(width: 50, height:50) .cornerRadius(10) }) .padding() } } } } .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } private func updateNotificationTimes(toDate date: Date) { LocalNotification.removeNotificaiton() LocalNotification.scheduleReminder(atTime: date) } private var showOnboardingButton: some View { ZStack { Color(UIColor.systemBackground) Button(action: { showOnboarding.toggle() }, label: { Text("Show Onboarding") }) .padding() } .fixedSize(horizontal: false, vertical: true) .clipShape(RoundedRectangle(cornerRadius: 25, style: .continuous)) } } struct SettingsView_Previews: PreviewProvider { static var previews: some View { SettingsView(editedDataClosure: { }) SettingsView(editedDataClosure: { }) .preferredColorScheme(.dark) } }