From 6ffd82a9ec513d2ebbb9df21a421a15a32842a7d Mon Sep 17 00:00:00 2001 From: Alexander Romanov Date: Sun, 10 Nov 2024 14:10:03 +0300 Subject: [PATCH] Update routing, onboarding and up to Swift6 --- .github/workflows/release.yml | 2 +- .../ContentView.swift | 6 +- .../Example__watchOS_App.swift | 3 +- .../UserInterfaceState.xcuserstate | Bin 296780 -> 296188 bytes .../xcschemes/xcschememanagement.plist | 4 +- .../Screens/Onboarding/OnboardingView.swift | 2 - AppExample/Example/Test/TestView.swift | 8 +- AppExample/Package.swift | 4 + Package.swift | 14 +- .../CreateEventScreen/CreateEventView.swift | 38 ++-- .../CreateEventViewSheet.swift | 1 - .../SaveForView/SaveForView.swift | 4 +- .../Pickers/RepeatPicker.swift | 2 +- .../AttendeesList/AttendeesView.swift | 2 +- .../ContactsPicker/EmailPickerView.swift | 6 +- Sources/OversizeKit/AdsKit/AdView.swift | 5 +- .../OversizeKit/LauncherKit/Launcher.swift | 38 ++-- .../LauncherKit/LauncherViewModel.swift | 6 +- .../LauncherKit/RateAppScreen.swift | 10 +- .../LockscreenKit/LockscreenView.swift | 19 +- .../SettingsRouter/SettingsRouting.swift | 73 ------- .../SettingsRouter/ResolveRouter.swift | 7 +- .../{Views => SettingsRouter}/Screens.swift | 72 +++---- .../SettingsRouter/SettingsRouting.swift | 23 +++ .../Views/About/About/AboutView.swift | 39 ++-- .../Views/About/FeedbackView.swift | 7 +- .../SettingsKit/Views/About/SupportView.swift | 7 +- .../Apperance/AppearanceSettingView.swift | 19 +- .../Views/Apperance/BorderSettingView.swift | 8 +- .../Views/Apperance/FontSettingView.swift | 34 ++-- .../Views/Apperance/RadiusSettingView.swift | 4 +- .../Security/PINCode/SetPINCodeView.swift | 7 +- .../PINCode/SetPINCodeViewModel.swift | 5 +- .../Views/Security/SecuritySettingsView.swift | 9 +- .../SettingsKit/Views/SettingsView.swift | 25 ++- .../StateKit/LoadingViewState.swift | 39 +++- .../AppStoreProductViewController.swift | 2 +- .../StoreScreen/StoreInstuctinsView.swift | 22 +- .../StoreScreen/StoreSpecialOfferView.swift | 16 +- .../StoreKit/StoreScreen/StoreView.swift | 14 +- .../ViewModel/StoreViewModel.swift | 1 - .../ViewModifier/PremiumBlockOverlay.swift | 4 +- .../StoreKit/Views/BuyButtonStyle.swift | 6 +- .../StoreKit/Views/FireworksBubbles.swift | 2 +- .../StoreKit/Views/PrmiumBannerRow.swift | 8 +- .../Views/StoreFeatureDetailView.swift | 17 +- .../Views/StoreFeaturesLargeView.swift | 8 +- .../StoreKit/Views/StoreFeaturesView.swift | 2 +- .../Views/StorePaymentButtonBar.swift | 2 +- .../StoreKit/Views/StoreProductView.swift | 30 +-- .../Views/SubscriptionPrivacyView.swift | 6 +- .../SystemKit/SystemServices.swift | 89 ++++---- .../AddressField/AddressField.swift | 8 +- .../AddressPicker/AddressPicker.swift | 4 +- .../MapCoordinateView/MapCoordinateView.swift | 6 +- .../LocalNotificationSetScreenViewModel.swift | 9 +- .../OnboardingItem.swift | 20 -- .../OnboardingItemPreferenceKey.swift | 14 -- .../OnboardingItemViewModifier.swift | 21 -- .../OnboardingView.swift | 190 ++++++++++-------- .../OversizePhotoKit/PhotosGalleryView.swift | 2 +- 61 files changed, 515 insertions(+), 540 deletions(-) create mode 100644 AppExample/Package.swift delete mode 100644 Sources/OversizeKit/RouterKit/SettingsRouter/SettingsRouting.swift rename Sources/OversizeKit/{RouterKit => SettingsKit}/SettingsRouter/ResolveRouter.swift (92%) rename Sources/OversizeKit/SettingsKit/{Views => SettingsRouter}/Screens.swift (54%) create mode 100644 Sources/OversizeKit/SettingsKit/SettingsRouter/SettingsRouting.swift delete mode 100644 Sources/OversizeOnboardingKit/OnboardingItem.swift delete mode 100644 Sources/OversizeOnboardingKit/OnboardingItemPreferenceKey.swift delete mode 100644 Sources/OversizeOnboardingKit/OnboardingItemViewModifier.swift diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3065293..988e905 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -6,7 +6,7 @@ on: - "*.*.*" jobs: - build: + release: name: Create release runs-on: ubuntu-latest steps: diff --git a/AppExample/Example (watchOS) Watch App/ContentView.swift b/AppExample/Example (watchOS) Watch App/ContentView.swift index 9cce011..b173e94 100644 --- a/AppExample/Example (watchOS) Watch App/ContentView.swift +++ b/AppExample/Example (watchOS) Watch App/ContentView.swift @@ -3,14 +3,14 @@ // ContentView.swift, created on 19.05.2024 // -import OversizeKit +import OversizeCalendarKit import OversizeContactsKit +import OversizeKit import OversizeLocationKit -import OversizePhotoKit -import OversizeCalendarKit import OversizeNoticeKit import OversizeNotificationKit import OversizeOnboardingKit +import OversizePhotoKit import SwiftUI struct ContentView: View { diff --git a/AppExample/Example (watchOS) Watch App/Example__watchOS_App.swift b/AppExample/Example (watchOS) Watch App/Example__watchOS_App.swift index fbf5231..c00dd47 100644 --- a/AppExample/Example (watchOS) Watch App/Example__watchOS_App.swift +++ b/AppExample/Example (watchOS) Watch App/Example__watchOS_App.swift @@ -11,9 +11,8 @@ import SwiftUI @main struct Example__watchOS__Watch_AppApp: App { - @Injected(\.appStateService) var appStateService: AppStateService - + var body: some Scene { WindowGroup { ContentView() diff --git a/AppExample/Example.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate b/AppExample/Example.xcodeproj/project.xcworkspace/xcuserdata/admin.xcuserdatad/UserInterfaceState.xcuserstate index 7fd748273a650a7b4098d1bbf3ab309c853b465d..131e000660ba577a09909ee096c13a3c2472852b 100644 GIT binary patch literal 296188 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

oO^~nYJlsW7b7>Zry!f7)bzvNzB7Zaao5|no z3(U8f?9F6vX3ovbxtSiC>7kkY&5m#k_toqSzj6Wjo11HM*_s!?-kTT2jGMnjS;|uj z_ukw+HSd7EH}6It`ZI_j3}q?aX#OOKvLiU@KE z`@n7Q@tpB*a257}K@e_5-H1!2lmctfN(l<1z=(p1C_*AyM4J%W^_UGjcXo4s=l8y| z9)7d;e}5WPv~Y+c9Ho;JoWU%j51ob_VQ-?z1>^~NA|X>u;EdsH;cPL*4Q7~S9=Qxl3D?Qh zMW%9_JKSXk*~$uQJY=26=&Hz6Ua`#^KJbap=&b0h=&0;As=A_$c8<}7thE`{x~qG! cSM>mcjB=4njepmHmi>EkXaD~Hx2muF1+E;U?*IS* literal 296780 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 z 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 z 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 O&!+dCpZ~uH<=#Ko2J*82 diff --git a/AppExample/Example.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist b/AppExample/Example.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist index 747e56b..33cfa4a 100644 --- a/AppExample/Example.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/AppExample/Example.xcodeproj/xcuserdata/admin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -7,12 +7,12 @@ Example (watchOS) Watch App.xcscheme_^#shared#^_ orderHint - 1 + 2 Example.xcscheme_^#shared#^_ orderHint - 0 + 1 SuppressBuildableAutocreation diff --git a/AppExample/Example/Screens/Onboarding/OnboardingView.swift b/AppExample/Example/Screens/Onboarding/OnboardingView.swift index ab5152a..c3b89b6 100644 --- a/AppExample/Example/Screens/Onboarding/OnboardingView.swift +++ b/AppExample/Example/Screens/Onboarding/OnboardingView.swift @@ -3,8 +3,6 @@ // OnboardingView.swift, created on 25.09.2023 // - - import Factory import OversizeServices import OversizeUI diff --git a/AppExample/Example/Test/TestView.swift b/AppExample/Example/Test/TestView.swift index 979fd84..9787784 100644 --- a/AppExample/Example/Test/TestView.swift +++ b/AppExample/Example/Test/TestView.swift @@ -1,16 +1,16 @@ // // Copyright © 2024 Alexander Romanov // TestView.swift, created on 19.05.2024 -// +// -import OversizeKit +import OversizeCalendarKit import OversizeContactsKit +import OversizeKit import OversizeLocationKit -import OversizePhotoKit -import OversizeCalendarKit import OversizeNoticeKit import OversizeNotificationKit import OversizeOnboardingKit +import OversizePhotoKit import SwiftUI struct TestView: View { diff --git a/AppExample/Package.swift b/AppExample/Package.swift new file mode 100644 index 0000000..9fdca6f --- /dev/null +++ b/AppExample/Package.swift @@ -0,0 +1,4 @@ +// swift-tools-version: 5.6 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription diff --git a/Package.swift b/Package.swift index f08bfb2..81a3155 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import Foundation @@ -6,7 +6,7 @@ import PackageDescription let productionDependencies: [PackageDescription.Package.Dependency] = [ .package(url: "https://github.com/oversizedev/OversizeUI.git", .upToNextMajor(from: "3.0.2")), - .package(url: "https://github.com/oversizedev/OversizeCore.git", .upToNextMajor(from: "1.3.0")), + .package(url: "https://github.com/oversizedev/OversizeCore.git", .upToNextMajor(from: "2.0.0")), .package(url: "https://github.com/oversizedev/OversizeServices.git", .upToNextMajor(from: "1.4.0")), .package(url: "https://github.com/oversizedev/OversizeLocalizable.git", .upToNextMajor(from: "1.4.0")), .package(url: "https://github.com/oversizedev/OversizeComponents.git", .upToNextMajor(from: "1.2.0")), @@ -43,10 +43,10 @@ if ProcessInfo.processInfo.environment["RELEASE_DEPENDENCIES"].flatMap(Bool.init let package = Package( name: "OversizeKit", platforms: [ - .iOS(.v16), - .macOS(.v13), - .tvOS(.v16), - .watchOS(.v9), + .iOS(.v17), + .macOS(.v14), + .tvOS(.v17), + .watchOS(.v10), ], products: [ .library(name: "OversizeKit", targets: ["OversizeKit"]), @@ -58,7 +58,7 @@ let package = Package( .library(name: "OversizeNotificationKit", targets: ["OversizeNotificationKit"]), .library(name: "OversizePhotoKit", targets: ["OversizePhotoKit"]), ], - dependencies: productionDependencies, + dependencies: developmentDependencies, targets: [ .target( name: "OversizeKit", diff --git a/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventView.swift b/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventView.swift index d75db38..cfdb2ca 100644 --- a/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventView.swift +++ b/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventView.swift @@ -71,7 +71,7 @@ import SwiftUI .controlBorderShape(.capsule) .controlSize(.mini) } - .navigationBarDividerColor(Color.onSurfaceHighEmphasis.opacity(0.1)) + .navigationBarDividerColor(Color.onSurfacePrimary.opacity(0.1)) .safeAreaInset(edge: .bottom) { bottomBar } @@ -98,7 +98,7 @@ import SwiftUI TextField("Event name", text: $viewModel.title) .title(.bold) .focused($focusedField, equals: .title) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .padding(.bottom, .xxxSmall) .padding(.horizontal, .small) @@ -129,7 +129,7 @@ import SwiftUI HStack { Text("All-day event") .headline(.semibold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .padding(.leading, .xxxSmall) Spacer() @@ -148,7 +148,7 @@ import SwiftUI var textEditor: some View { VStack(spacing: 2) { TextEditor(text: $viewModel.note) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .padding(.horizontal, .xSmall) .padding(.vertical, .xxSmall) .focused($focusedField, equals: .note) @@ -162,7 +162,7 @@ import SwiftUI if viewModel.note.isEmpty { Text("Note") .body(.medium) - .onSurfaceDisabledForegroundColor() + .onSurfaceTertiaryForeground() .padding(.small) } } @@ -173,7 +173,7 @@ import SwiftUI if viewModel.note.isEmpty { Text("Note") .body(.medium) - .onSurfaceDisabledForegroundColor() + .onSurfaceTertiaryForeground() .padding(.small) } } @@ -183,7 +183,7 @@ import SwiftUI TextField("URL", text: $viewModel.url) .focused($focusedField, equals: .url) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .body(.medium) .padding(.horizontal, .small) .padding(.vertical, 18) @@ -209,7 +209,7 @@ import SwiftUI viewModel.present(.repeat) } leading: { IconDeprecated(.refresh) - .iconColor(.onSurfaceHighEmphasis) + .iconColor(.onSurfacePrimary) } .rowClearButton(style: .onSurface) { viewModel.repitRule = .never @@ -235,7 +235,7 @@ import SwiftUI viewModel.present(.invites) } leading: { IconDeprecated(.user) - .iconColor(.onSurfaceHighEmphasis) + .iconColor(.onSurfacePrimary) } .rowClearButton(style: .onSurface) { viewModel.members.remove(email) @@ -269,7 +269,7 @@ import SwiftUI viewModel.present(.alarm) } leading: { IconDeprecated(.bell) - .iconColor(.onSurfaceHighEmphasis) + .iconColor(.onSurfacePrimary) } .rowClearButton(style: .onSurface) { viewModel.alarms.remove(alarm) @@ -303,7 +303,7 @@ import SwiftUI viewModel.present(.location) } leading: { IconDeprecated(.mapPin) - .iconColor(.onSurfaceHighEmphasis) + .iconColor(.onSurfacePrimary) } .rowClearButton(style: .onSurface) { viewModel.locationName = nil @@ -356,16 +356,16 @@ import SwiftUI } label: { VStack(alignment: .leading, spacing: .xxxSmall) { Text("Starts") - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .subheadline(.semibold) Text(startDateText) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .headline(.semibold) if !isCurrentYearEvent { Text(viewModel.dateStart.formatted(.dateTime.year())) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .headline(.semibold) } } @@ -384,16 +384,16 @@ import SwiftUI } label: { VStack(alignment: .leading, spacing: .xxxSmall) { Text("Ended") - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .subheadline(.semibold) Text(endDateText) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .headline(.semibold) if !isCurrentYearEvent { Text(viewModel.dateEnd.formatted(.dateTime.year())) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() .headline(.semibold) } } @@ -478,13 +478,13 @@ import SwiftUI .buttonStyle(.scale) .padding(.horizontal, .medium) .padding(.vertical, 20) - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() #if !os(watchOS) .background(.ultraThinMaterial) #endif .overlay(alignment: .top) { Rectangle() - .fill(Color.onSurfaceHighEmphasis.opacity(0.05)) + .fill(Color.onSurfacePrimary.opacity(0.05)) .frame(height: 1) } } diff --git a/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventViewSheet.swift b/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventViewSheet.swift index f9fac0f..beb178c 100644 --- a/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventViewSheet.swift +++ b/Sources/OversizeCalendarKit/CreateEventScreen/CreateEventViewSheet.swift @@ -102,7 +102,6 @@ import SwiftUI #endif case .repeat: RepeatPicker(selectionRule: $viewModel.repitRule, selectionEndRule: $viewModel.repitEndRule) - case .alarm: AlarmPicker(selection: $viewModel.alarms) .presentationDetents([.height(630), .large]) diff --git a/Sources/OversizeCalendarKit/CreateEventScreen/SaveForView/SaveForView.swift b/Sources/OversizeCalendarKit/CreateEventScreen/SaveForView/SaveForView.swift index ba4f08f..676b9a5 100644 --- a/Sources/OversizeCalendarKit/CreateEventScreen/SaveForView/SaveForView.swift +++ b/Sources/OversizeCalendarKit/CreateEventScreen/SaveForView/SaveForView.swift @@ -28,7 +28,7 @@ import SwiftUI } leading: { Image.Date.calendar .renderingMode(.template) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } Row("Save for feature events") { @@ -37,7 +37,7 @@ import SwiftUI } leading: { Image.Base.calendar .renderingMode(.template) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } } } diff --git a/Sources/OversizeCalendarKit/Pickers/RepeatPicker.swift b/Sources/OversizeCalendarKit/Pickers/RepeatPicker.swift index be20de4..2c32cb8 100644 --- a/Sources/OversizeCalendarKit/Pickers/RepeatPicker.swift +++ b/Sources/OversizeCalendarKit/Pickers/RepeatPicker.swift @@ -113,7 +113,7 @@ import SwiftUI #if os(iOS) .keyboardType(.numberPad) #endif - .textFieldStyle(DefaultPlaceholderTextFieldStyle()) + .textFieldStyle(.default) .focused($isFocusedRepitCount) case .endDate: #if !os(watchOS) diff --git a/Sources/OversizeContactsKit/AttendeesList/AttendeesView.swift b/Sources/OversizeContactsKit/AttendeesList/AttendeesView.swift index 25d53c8..3bca2d1 100644 --- a/Sources/OversizeContactsKit/AttendeesList/AttendeesView.swift +++ b/Sources/OversizeContactsKit/AttendeesList/AttendeesView.swift @@ -83,7 +83,7 @@ import SwiftUI .fillBackgroundPrimary() } Image(systemName: participant.symbolName) - .onPrimaryHighEmphasisForegroundColor() + .onPrimaryForeground() .font(.system(size: 9, weight: .black)) } } diff --git a/Sources/OversizeContactsKit/ContactsPicker/EmailPickerView.swift b/Sources/OversizeContactsKit/ContactsPicker/EmailPickerView.swift index c575fcb..053b539 100644 --- a/Sources/OversizeContactsKit/ContactsPicker/EmailPickerView.swift +++ b/Sources/OversizeContactsKit/ContactsPicker/EmailPickerView.swift @@ -50,7 +50,7 @@ import SwiftUI } .topToolbar { TextField("Email or name", text: $viewModel.searchText) - .textFieldStyle(DefaultPlaceholderTextFieldStyle()) + .textFieldStyle(.default) .focused($isFocusSearth) #if os(iOS) .keyboardType(.emailAddress) @@ -98,7 +98,7 @@ import SwiftUI Spacer() } .title3() - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .padding(.vertical, .xxSmall) .paddingContent(.horizontal) @@ -136,7 +136,7 @@ import SwiftUI Spacer() } .title3() - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .padding(.vertical, .xxSmall) .paddingContent(.horizontal) .padding(.top, viewModel.lastSelectedEmails.isEmpty ? .zero : .small) diff --git a/Sources/OversizeKit/AdsKit/AdView.swift b/Sources/OversizeKit/AdsKit/AdView.swift index a115595..b2e4836 100644 --- a/Sources/OversizeKit/AdsKit/AdView.swift +++ b/Sources/OversizeKit/AdsKit/AdView.swift @@ -30,6 +30,7 @@ public struct AdView: View { await viewModel.fetchAd() } } + case let .result(appAd): #if os(iOS) Surface { @@ -79,7 +80,7 @@ public struct AdView: View { HStack { Text(appAd.title) .subheadline(.bold) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() Bage(color: .warning) { Text("Our app") @@ -89,7 +90,7 @@ public struct AdView: View { Text(appAd.description) .subheadline() - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() } .padding(.leading, .xSmall) diff --git a/Sources/OversizeKit/LauncherKit/Launcher.swift b/Sources/OversizeKit/LauncherKit/Launcher.swift index 4576ace..51a704f 100644 --- a/Sources/OversizeKit/LauncherKit/Launcher.swift +++ b/Sources/OversizeKit/LauncherKit/Launcher.swift @@ -14,10 +14,8 @@ public struct Launcher: View { private var onboarding: Onboarding? private let content: Content - private var transaction = Transaction() @StateObject private var viewModel = LauncherViewModel() - @State private var blurRadius: CGFloat = 0 public init(@ViewBuilder content: () -> Content) { self.content = content() @@ -39,15 +37,19 @@ public struct Launcher: View { .appLaunchCover(item: $viewModel.activeFullScreenSheet) { fullScreenCover(sheet: $0) .systemServices() + #if os(macOS) + .frame(width: 840, height: 672) + // .interactiveDismissDisabled(!viewModel.appStateService.isCompletedOnbarding) + #endif } - .onChange(of: viewModel.appStateService.isCompletedOnbarding) { isCompletedOnbarding in + .onChange(of: viewModel.appStateService.isCompletedOnbarding) { _, isCompletedOnbarding in if isCompletedOnbarding, !viewModel.isPremium { viewModel.setPayWall() } else { viewModel.activeFullScreenSheet = nil } } - .onChange(of: scenePhase, perform: { value in + .onChange(of: scenePhase) { _, value in switch value { case .background: viewModel.authState = .locked @@ -55,7 +57,7 @@ public struct Launcher: View { default: break } - }) + } } @ViewBuilder @@ -67,7 +69,9 @@ public struct Launcher: View { } else { content .onAppear { - viewModel.reviewService.launchEvent() + Task { @MainActor in + await viewModel.reviewService.launchEvent() + } viewModel.launcherSheetsChek() } } @@ -84,14 +88,15 @@ public struct Launcher: View { } private var lockscreenView: some View { - LockscreenView(pinCode: $viewModel.pinCodeField, - state: $viewModel.authState, - title: L10n.Security.enterPINCode, - errorText: L10n.Security.invalidPIN, - pinCodeEnabled: viewModel.settingsService.pinCodeEnabend, - biometricEnabled: viewModel.settingsService.biometricEnabled, - biometricType: viewModel.biometricService.biometricType) - { + LockscreenView( + pinCode: $viewModel.pinCodeField, + state: $viewModel.authState, + title: L10n.Security.enterPINCode, + errorText: L10n.Security.invalidPIN, + pinCodeEnabled: viewModel.settingsService.pinCodeEnabend, + biometricEnabled: viewModel.settingsService.biometricEnabled, + biometricType: viewModel.biometricService.biometricType + ) { viewModel.checkPassword() } biometricAction: { viewModel.appLockValidation() @@ -122,7 +127,6 @@ public extension View { Launcher { self } - .systemServices() } func appLaunch(@ViewBuilder onboarding: @escaping () -> some View) -> some View { @@ -130,7 +134,6 @@ public extension View { self } .onboarding(onboarding: onboarding) - .systemServices() } } @@ -139,8 +142,7 @@ private extension View { item: Binding, onDismiss: (() -> Void)? = nil, @ViewBuilder content: @escaping (Item) -> some View ) -> some View where Item: Identifiable { #if os(macOS) - interactiveDismissDisabled() - .sheet(item: item, onDismiss: onDismiss, content: content) + sheet(item: item, onDismiss: onDismiss, content: content) #else fullScreenCover(item: item, onDismiss: onDismiss, content: content) #endif diff --git a/Sources/OversizeKit/LauncherKit/LauncherViewModel.swift b/Sources/OversizeKit/LauncherKit/LauncherViewModel.swift index a8e4e0c..8899600 100644 --- a/Sources/OversizeKit/LauncherKit/LauncherViewModel.swift +++ b/Sources/OversizeKit/LauncherKit/LauncherViewModel.swift @@ -49,7 +49,7 @@ public final class LauncherViewModel: ObservableObject { } extension LauncherViewModel { - enum FullScreenSheet: Identifiable, Equatable { + enum FullScreenSheet: Identifiable, Equatable, Sendable { case onboarding case payWall case rate @@ -124,7 +124,9 @@ public extension LauncherViewModel { func setPayWall() { activeFullScreenSheet = nil delay(time: 0.2) { - self.activeFullScreenSheet = .payWall + Task { @MainActor in + self.activeFullScreenSheet = .payWall + } } } diff --git a/Sources/OversizeKit/LauncherKit/RateAppScreen.swift b/Sources/OversizeKit/LauncherKit/RateAppScreen.swift index 54a5bd2..b859b0d 100644 --- a/Sources/OversizeKit/LauncherKit/RateAppScreen.swift +++ b/Sources/OversizeKit/LauncherKit/RateAppScreen.swift @@ -17,7 +17,7 @@ struct RateAppScreen: View { VStack { Text("If you love, evaluate)") .largeTitle(.bold) - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() Spacer() @@ -29,14 +29,14 @@ struct RateAppScreen: View { Text((Info.app.name ?? "App") + " is developed only one person, and your assessment would very much drop in") .title3() - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() Spacer() if let reviewUrl = Info.url.appStoreReview { HStack(spacing: .large) { Link(destination: reviewUrl) { - IconDeprecated(.thumbsUp, color: .onPrimaryHighEmphasis) + IconDeprecated(.thumbsUp, color: .onPrimary) } .buttonStyle(.primary(infinityWidth: false)) .accent() @@ -49,7 +49,7 @@ struct RateAppScreen: View { reviewService.estimate(goodRating: false) dismiss() } label: { - IconDeprecated(.thumbsDown, color: .onSurfaceHighEmphasis) + IconDeprecated(.thumbsDown, color: .onSurfacePrimary) } .buttonStyle(.secondary(infinityWidth: false)) } @@ -67,7 +67,7 @@ struct RateAppScreen: View { reviewService.rewiewBunnerClosed() dismiss() } label: { - IconDeprecated(.xMini, color: .onSurfaceHighEmphasis) + IconDeprecated(.xMini, color: .onSurfacePrimary) } .buttonStyle(.tertiary(infinityWidth: false)) .controlBorderShape(.capsule) diff --git a/Sources/OversizeKit/LockscreenKit/LockscreenView.swift b/Sources/OversizeKit/LockscreenKit/LockscreenView.swift index 0833b73..cfb01ef 100644 --- a/Sources/OversizeKit/LockscreenKit/LockscreenView.swift +++ b/Sources/OversizeKit/LockscreenKit/LockscreenView.swift @@ -87,7 +87,7 @@ public struct LockscreenView: View { public var body: some View { content() .background(Color.surfacePrimary.ignoresSafeArea(.all)) - .onChange(of: scenePhase) { phase in + .onChange(of: scenePhase) { _, phase in switch phase { case .active: if state == .locked, biometricEnabled { @@ -125,14 +125,14 @@ public struct LockscreenView: View { #else Text(biometricType.rawValue) .title2(.bold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) #endif } else { Text(biometricType.rawValue) .title2(.semibold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } Spacer() @@ -165,7 +165,7 @@ public struct LockscreenView: View { Text(title ?? "") .title2(.bold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .opacity(title != nil ? 1 : 0) Spacer() @@ -180,7 +180,7 @@ public struct LockscreenView: View { Text(errorText ?? "") .subheadline() - .errorForegroundColor() + .errorForeground() .opacity(state == .error ? 1 : 0) if isShowTitle { @@ -247,18 +247,18 @@ public struct LockscreenView: View { EmptyView() case .touchID: Image(systemName: "touchid") - .foregroundColor(Color.onBackgroundHighEmphasis) + .foregroundColor(Color.onBackgroundPrimary) .font(.system(size: 26)) .frame(width: 24, height: 24, alignment: .center) case .faceID: Image(systemName: "faceid") .font(.system(size: 26)) - .foregroundColor(Color.onBackgroundHighEmphasis) + .foregroundColor(Color.onBackgroundPrimary) .frame(width: 24, height: 24, alignment: .center) case .opticID: Image(systemName: "opticid") .font(.system(size: 26)) - .foregroundColor(Color.onBackgroundHighEmphasis) + .foregroundColor(Color.onBackgroundPrimary) .frame(width: 24, height: 24, alignment: .center) } } @@ -284,7 +284,6 @@ public struct LockscreenView: View { .frame(width: 12, height: 12) .offset(x: leftOffset) // .animation(Animation.easeInOut(duration: 1).delay(0.2 * Double(number))) - .scaleEffect(shouldAnimate ? 0.5 : 1) .animation(Animation.easeInOut(duration: 0.5) .repeatForever() @@ -332,7 +331,7 @@ public struct NumpadButtonStyle: ButtonStyle { public func makeBody(configuration: Self.Configuration) -> some View { configuration.label .title2() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .frame(width: 72, height: 72, alignment: .center) .background( Circle() diff --git a/Sources/OversizeKit/RouterKit/SettingsRouter/SettingsRouting.swift b/Sources/OversizeKit/RouterKit/SettingsRouter/SettingsRouting.swift deleted file mode 100644 index 9a7c7fc..0000000 --- a/Sources/OversizeKit/RouterKit/SettingsRouter/SettingsRouting.swift +++ /dev/null @@ -1,73 +0,0 @@ -// -// Copyright © 2024 Alexander Romanov -// SettingsRouting.swift, created on 10.05.2024 -// - -import OversizeRouter -import SwiftUI - -public struct SettingsRoutingView: View where Root: View { - @StateObject private var router: Router = .init() - @StateObject private var hudRouter: HUDRouter = .init() - private let root: () -> Root - - public init(@ViewBuilder root: @escaping () -> Root) { - self.root = root - } - - public var body: some View { - NavigationStack(path: $router.path) { - root() - .navigationDestination(for: SettingsScreen.self) { destination in - destination.view() - } - } - .onSettingsNavigate(routerNavigate) - .sheet( - item: $router.sheet, - content: { sheet in - NavigationStack(path: $router.sheetPath) { - sheet.view() - .navigationDestination(for: SettingsScreen.self) { destination in - destination.view() - } - } - .presentationDetents(router.sheetDetents) - .presentationDragIndicator(router.dragIndicator) - .interactiveDismissDisabled(router.dismissDisabled) - .systemServices() - .onSettingsNavigate(routerNavigate) - } - ) - #if os(iOS) - .fullScreenCover(item: $router.fullScreenCover) { fullScreenCover in - fullScreenCover.view() - .systemServices() - .onSettingsNavigate(routerNavigate) - } - #endif - } - - func routerNavigate(navigationType: SettingsNavigationType) { - switch navigationType { - case let .move(screen): - router.move(screen) - case .backToRoot: - router.backToRoot() - case let .back(count): - router.back(count) - case let .present(sheet, detents: detents, indicator: indicator, dismissDisabled: dismissDisabled): - router.present(sheet, detents: detents, indicator: indicator, dismissDisabled: dismissDisabled) - case .dismiss: - router.dismiss() - case .dismissSheet: - router.dismissSheet() - case .dismissFullScreenCover: - router.dismissFullScreenCover() - case let .dismissDisabled(isDismissDisabled): - router.dismissDisabled(isDismissDisabled) - case let .presentHUD(text, type): - hudRouter.present(text, type: type) - } - } -} diff --git a/Sources/OversizeKit/RouterKit/SettingsRouter/ResolveRouter.swift b/Sources/OversizeKit/SettingsKit/SettingsRouter/ResolveRouter.swift similarity index 92% rename from Sources/OversizeKit/RouterKit/SettingsRouter/ResolveRouter.swift rename to Sources/OversizeKit/SettingsKit/SettingsRouter/ResolveRouter.swift index 48a29ec..0da5cbe 100644 --- a/Sources/OversizeKit/RouterKit/SettingsRouter/ResolveRouter.swift +++ b/Sources/OversizeKit/SettingsKit/SettingsRouter/ResolveRouter.swift @@ -7,11 +7,12 @@ import Foundation import OversizeComponents import OversizeLocalizable import OversizeNetwork +import OversizeRouter import SwiftUI -extension SettingsScreen { - @ViewBuilder - func view() -> some View { +extension SettingsScreen: @preconcurrency RoutableView { + @MainActor @ViewBuilder + public func view() -> some View { switch self { case .premium: StoreView() diff --git a/Sources/OversizeKit/SettingsKit/Views/Screens.swift b/Sources/OversizeKit/SettingsKit/SettingsRouter/Screens.swift similarity index 54% rename from Sources/OversizeKit/SettingsKit/Views/Screens.swift rename to Sources/OversizeKit/SettingsKit/SettingsRouter/Screens.swift index fa48fb7..33e34fe 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Screens.swift +++ b/Sources/OversizeKit/SettingsKit/SettingsRouter/Screens.swift @@ -1,8 +1,9 @@ // // Copyright © 2024 Alexander Romanov -// File.swift, created on 15.04.2024 +// SettingsScreen.swift, created on 15.04.2024 // +import OversizeComponents import OversizeModels import OversizeNetwork import OversizeRouter @@ -75,39 +76,40 @@ public extension SettingsScreen { } } -public struct SettingsNavigateAction { - public typealias Action = (SettingsNavigationType) -> Void - public let action: Action - public func callAsFunction(_ navigationType: SettingsNavigationType) { - action(navigationType) - } -} +//public struct SettingsNavigateAction { +// public typealias Action = (SettingsNavigationType) -> Void +// public let action: Action +// public func callAsFunction(_ navigationType: SettingsNavigationType) { +// action(navigationType) +// } +//} -public enum SettingsNavigationType { - case move(SettingsScreen) - case backToRoot - case back(Int = 1) - case present(_ sheet: SettingsScreen, detents: Set = [.large], indicator: Visibility = .hidden, dismissDisabled: Bool = false) - case dismiss - case dismissSheet - case dismissFullScreenCover - case dismissDisabled(_ isDismissDisabled: Bool = true) - case presentHUD(_ text: String, type: HUDMessageType) -} +//public enum SettingsNavigationType { +// case move(SettingsScreen) +// case backToRoot +// case back(Int = 1) +// case present(_ sheet: SettingsScreen, detents: Set = [.large], indicator: Visibility = .hidden, dismissDisabled: Bool = false) +// case dismiss +// case dismissSheet +// case dismissFullScreenCover +// case dismissDisabled(_ isDismissDisabled: Bool = true) +// case presentHUD(_ text: String, type: HUDMessageType) +//} -public struct SettingsNavigateEnvironmentKey: EnvironmentKey { - public static var defaultValue: SettingsNavigateAction = .init(action: { _ in }) -} - -public extension EnvironmentValues { - var settingsNavigate: SettingsNavigateAction { - get { self[SettingsNavigateEnvironmentKey.self] } - set { self[SettingsNavigateEnvironmentKey.self] = newValue } - } -} - -public extension View { - func onSettingsNavigate(_ action: @escaping SettingsNavigateAction.Action) -> some View { - environment(\.settingsNavigate, SettingsNavigateAction(action: action)) - } -} +// +// public struct SettingsNavigateEnvironmentKey: EnvironmentKey { +// public static var defaultValue: SettingsNavigateAction = .init(action: { _ in }) +// } +// +// public extension EnvironmentValues { +// var settingsNavigate: SettingsNavigateAction { +// get { self[SettingsNavigateEnvironmentKey.self] } +// set { self[SettingsNavigateEnvironmentKey.self] = newValue } +// } +// } +// +// public extension View { +// func onSettingsNavigate(_ action: @escaping SettingsNavigateAction.Action) -> some View { +// environment(\.settingsNavigate, SettingsNavigateAction(action: action)) +// } +// } diff --git a/Sources/OversizeKit/SettingsKit/SettingsRouter/SettingsRouting.swift b/Sources/OversizeKit/SettingsKit/SettingsRouter/SettingsRouting.swift new file mode 100644 index 0000000..3045579 --- /dev/null +++ b/Sources/OversizeKit/SettingsKit/SettingsRouter/SettingsRouting.swift @@ -0,0 +1,23 @@ +// +// Copyright © 2024 Alexander Romanov +// SettingsRouting.swift, created on 10.05.2024 +// + + import OversizeRouter + import SwiftUI + + public struct SettingsRoutingView: View { + + public init() { + + } + + public var body: some View { + RoutingView { + SettingsView { + EmptyView() + } + } + .systemServices() + } + } diff --git a/Sources/OversizeKit/SettingsKit/Views/About/About/AboutView.swift b/Sources/OversizeKit/SettingsKit/Views/About/About/AboutView.swift index be4a46e..d852126 100644 --- a/Sources/OversizeKit/SettingsKit/Views/About/About/AboutView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/About/About/AboutView.swift @@ -8,6 +8,7 @@ import OversizeComponents import OversizeCore import OversizeLocalizable import OversizeResources +import OversizeRouter import OversizeServices import OversizeUI import SwiftUI @@ -18,7 +19,7 @@ import SwiftUI #endif public struct AboutView: View { - @Environment(\.settingsNavigate) var settingsNavigate + @Environment(Router.self) var router @Environment(\.screenSize) var screenSize @Environment(\.iconStyle) var iconStyle: IconStyle @@ -118,7 +119,7 @@ public struct AboutView: View { Text(app.name) .caption(.medium) .multilineTextAlignment(.center) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) .frame(width: 74) } } @@ -146,7 +147,7 @@ public struct AboutView: View { Text("All apps") .caption(.medium) .multilineTextAlignment(.center) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) .frame(width: 74) } } @@ -166,12 +167,12 @@ public struct AboutView: View { Image.Brands.Oversize.fill .resizable() .renderingMode(.template) - .foregroundColor(Color.onSurfaceHighEmphasis) + .foregroundColor(Color.onSurfacePrimary) .frame(width: 32, height: 32) Resource.overszieTextLogo .renderingMode(.template) - .foregroundColor(Color.onSurfaceHighEmphasis) + .foregroundColor(Color.onSurfacePrimary) } .padding(.top, -40) .padding(.bottom, .xSmall) @@ -181,12 +182,12 @@ public struct AboutView: View { Image.Brands.Oversize.fill .resizable() .renderingMode(.template) - .foregroundColor(Color.onSurfaceHighEmphasis) + .foregroundColor(Color.onSurfacePrimary) .frame(width: 48, height: 48) Resource.overszieTextLogo .renderingMode(.template) - .foregroundColor(Color.onSurfaceHighEmphasis) + .foregroundColor(Color.onSurfacePrimary) } .padding(.top, 42) .padding(.bottom, .medium) @@ -194,7 +195,7 @@ public struct AboutView: View { Text("The Oversize project is made with love and attention to the design of the forces of only one person") .title3(.semibold) - .foregroundColor(.onBackgroundHighEmphasis) + .foregroundColor(.onBackgroundPrimary) .padding(.horizontal, isLargeScreen ? 72 : 52) .padding(.bottom, .large) .multilineTextAlignment(.center) @@ -259,7 +260,7 @@ public struct AboutView: View { HStack { Text(L10n.About.otherApplications.uppercased()) .caption(true) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) .padding(.top, 12) .padding(.leading, 26) .padding(.bottom, 18) @@ -273,19 +274,19 @@ public struct AboutView: View { SectionView { VStack(spacing: .zero) { Row("Our open resources") { - settingsNavigate(.move(.ourResorses)) + router.move(.ourResorses) } .rowArrow() if let privacyUrl = Info.url.appPrivacyPolicyUrl { Row(L10n.Store.privacyPolicy) { - settingsNavigate(.present(.webView(url: privacyUrl))) + router.present(.webView(url: privacyUrl)) } } if let termsOfUde = Info.url.appTermsOfUseUrl { Row(L10n.Store.termsOfUse) { - settingsNavigate(.present(.webView(url: termsOfUde))) + router.present(.webView(url: termsOfUde)) } } } @@ -339,7 +340,7 @@ public struct AboutView: View { Spacer() Image.Brands.Facebook.Circle.fill .renderingMode(.template) - .foregroundColor(Color.onSurfaceMediumEmphasis) + .foregroundColor(Color.onSurfaceSecondary) Spacer() } // } @@ -353,7 +354,7 @@ public struct AboutView: View { Spacer() Image.Brands.Instagram.fill .renderingMode(.template) - .foregroundColor(Color.onSurfaceMediumEmphasis) + .foregroundColor(Color.onSurfaceSecondary) Spacer() } // } @@ -367,7 +368,7 @@ public struct AboutView: View { Spacer() Image.Brands.xCom .renderingMode(.template) - .foregroundColor(Color.onSurfaceMediumEmphasis) + .foregroundColor(Color.onSurfaceSecondary) Spacer() } // } @@ -381,7 +382,7 @@ public struct AboutView: View { Spacer() Image.Brands.Telegram.fill .renderingMode(.template) - .foregroundColor(Color.onSurfaceMediumEmphasis) + .foregroundColor(Color.onSurfaceSecondary) Spacer() } // } @@ -395,7 +396,7 @@ public struct AboutView: View { Spacer() Image.Brands.Dribbble.fill .renderingMode(.template) - .foregroundColor(Color.onSurfaceMediumEmphasis) + .foregroundColor(Color.onSurfaceSecondary) Spacer() } // } @@ -476,11 +477,11 @@ public struct AboutView: View { { Text("© 2024 \(developerName). \(appName) \(appVersion) (\(appBuild))") .footnote() - .foregroundColor(.onBackgroundDisabled) + .foregroundColor(.onBackgroundTertiary) } else { Text("Developer") .footnote() - .foregroundColor(.onBackgroundDisabled) + .foregroundColor(.onBackgroundTertiary) } } } diff --git a/Sources/OversizeKit/SettingsKit/Views/About/FeedbackView.swift b/Sources/OversizeKit/SettingsKit/Views/About/FeedbackView.swift index dfc01ac..bd8491f 100644 --- a/Sources/OversizeKit/SettingsKit/Views/About/FeedbackView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/About/FeedbackView.swift @@ -9,12 +9,13 @@ import OversizeComponents import OversizeLocalizable import OversizeResources +import OversizeRouter import OversizeServices import OversizeUI import SwiftUI public struct FeedbackView: View { - @Environment(\.settingsNavigate) var settingsNavigate + @Environment(Router.self) var router @Environment(\.iconStyle) var iconStyle: IconStyle public init() {} @@ -31,7 +32,7 @@ public struct FeedbackView: View { .toolbar { ToolbarItem(placement: .cancellationAction) { Button { - settingsNavigate(.dismiss) + router.dismiss() } label: { Image.Base.close.icon() } @@ -69,7 +70,7 @@ public struct FeedbackView: View { let subject = "Feedback" Row(L10n.Settings.feedbakAuthor) { - settingsNavigate(.present(.sendMail(to: mail, subject: subject, content: contentPreText))) + router.present(.sendMail(to: mail, subject: subject, content: contentPreText)) } leading: { mailIcon.icon() } diff --git a/Sources/OversizeKit/SettingsKit/Views/About/SupportView.swift b/Sources/OversizeKit/SettingsKit/Views/About/SupportView.swift index 42fe265..d0aa8cc 100644 --- a/Sources/OversizeKit/SettingsKit/Views/About/SupportView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/About/SupportView.swift @@ -9,12 +9,13 @@ import OversizeComponents import OversizeLocalizable import OversizeResources +import OversizeRouter import OversizeServices import OversizeUI import SwiftUI public struct SupportView: View { - @Environment(\.settingsNavigate) var settingsNavigate + @Environment(Router.self) var router @Environment(\.iconStyle) var iconStyle: IconStyle public init() {} @@ -31,7 +32,7 @@ public struct SupportView: View { .toolbar { ToolbarItem(placement: .cancellationAction) { Button { - settingsNavigate(.dismissSheet) + router.dismissSheet() } label: { Image.Base.close.icon() } @@ -60,7 +61,7 @@ public struct SupportView: View { let subject = "Support" Row("Contact Us") { - settingsNavigate(.present(.sendMail(to: mail, subject: subject, content: contentPreText))) + router.present(.sendMail(to: mail, subject: subject, content: contentPreText)) } leading: { mailIcon.icon() } diff --git a/Sources/OversizeKit/SettingsKit/Views/Apperance/AppearanceSettingView.swift b/Sources/OversizeKit/SettingsKit/Views/Apperance/AppearanceSettingView.swift index 6a4e4be..89946c5 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Apperance/AppearanceSettingView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Apperance/AppearanceSettingView.swift @@ -5,12 +5,13 @@ import OversizeCore import OversizeLocalizable +import OversizeRouter import OversizeServices import OversizeUI import SwiftUI public struct AppearanceSettingView: View { - @Environment(\.settingsNavigate) var settingsNavigate + @Environment(Router.self) var router @Environment(\.theme) private var theme: ThemeSettings @Environment(\.iconStyle) var iconStyle: IconStyle @Environment(\.isPremium) var isPremium: Bool @@ -62,7 +63,6 @@ public struct AppearanceSettingView: View { } .frame(width: 400, height: 300) // swiftlint:disable multiple_closures_with_trailing_closure superfluous_disable_command - .navigationTitle("Appearance") .preferredColorScheme(theme.appearance.colorScheme) } @@ -77,7 +77,7 @@ public struct AppearanceSettingView: View { VStack(spacing: .zero) { Text(appearance.name) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .font(.subheadline) .bold() @@ -87,7 +87,7 @@ public struct AppearanceSettingView: View { if appearance == theme.appearance { IconDeprecated(.checkCircle, color: Color.accent) } else { - IconDeprecated(.circle, color: .onSurfaceMediumEmphasis) + IconDeprecated(.circle, color: .onSurfaceSecondary) } } Spacer() @@ -129,7 +129,7 @@ public struct AppearanceSettingView: View { ) .onTapGesture { if index != 0, isPremium == false { - settingsNavigate(.present(.premium)) + router.present(.premium) } else { let defaultIconIndex = iconSettings.iconNames .firstIndex(of: UIApplication.shared.alternateIconName) ?? 0 @@ -158,7 +158,7 @@ public struct AppearanceSettingView: View { SectionView("Advanced settings") { VStack(spacing: .zero) { Row("Fonts") { - settingsNavigate(.move(.font)) + router.move(.font) } leading: { textIcon.icon() } @@ -168,14 +168,14 @@ public struct AppearanceSettingView: View { Switch(isOn: theme.$borderApp) { Row("Borders") { - settingsNavigate(.move(.border)) + router.move(.border) } leading: { borderIcon.icon() } .premium() } .onPremiumTap() - .onChange(of: theme.borderApp) { value in + .onChange(of: theme.borderApp) { _, value in theme.borderSurface = value theme.borderButtons = value theme.borderControls = value @@ -183,7 +183,7 @@ public struct AppearanceSettingView: View { } Row("Radius") { - settingsNavigate(.move(.radius)) + router.move(.radius) } leading: { radiusIcon.icon() } @@ -229,6 +229,7 @@ public struct AppearanceSettingView: View { } #if os(iOS) + @MainActor public class AppIconSettings: ObservableObject { public var iconNames: [String?] = [nil] @Published public var currentIndex = 0 diff --git a/Sources/OversizeKit/SettingsKit/Views/Apperance/BorderSettingView.swift b/Sources/OversizeKit/SettingsKit/Views/Apperance/BorderSettingView.swift index 70cba4f..6a41ab4 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Apperance/BorderSettingView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Apperance/BorderSettingView.swift @@ -31,14 +31,14 @@ public struct BorderSettingView: View { SectionView { VStack(spacing: .zero) { Toggle("Borders in app", isOn: theme.$borderApp) - .onChange(of: theme.borderApp) { value in + .onChange(of: theme.borderApp) { _, value in theme.borderSurface = value theme.borderButtons = value theme.borderControls = value theme.borderTextFields = value } .headline() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .padding(.horizontal, .medium) .padding(.vertical, .small) @@ -50,13 +50,13 @@ public struct BorderSettingView: View { HStack { Text("Size") .subheadline() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Spacer() Text(String(format: "%.1f", theme.borderSize) + " px") .subheadline() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } Slider(value: theme.$borderSize, in: 0.5 ... 2, step: 0.5) diff --git a/Sources/OversizeKit/SettingsKit/Views/Apperance/FontSettingView.swift b/Sources/OversizeKit/SettingsKit/Views/Apperance/FontSettingView.swift index ed4fba7..ad9c8cf 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Apperance/FontSettingView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Apperance/FontSettingView.swift @@ -56,11 +56,11 @@ public struct FontSettingView: View { VStack(alignment: .leading, spacing: 8) { Text("Aa") .font(.system(size: 34, weight: .heavy, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(fontStyle.rawValue.capitalizingFirstLetter()) .font(.system(size: 16, weight: .medium, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } Spacer() }.padding() @@ -74,11 +74,11 @@ public struct FontSettingView: View { VStack(alignment: .leading, spacing: 8) { Text("Aa") .font(.system(size: 34, weight: .heavy, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(fontStyle.rawValue.capitalizingFirstLetter()) .font(.system(size: 16, weight: .medium, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } Spacer() }.padding() @@ -91,16 +91,16 @@ public struct FontSettingView: View { Text("Button".uppercased()) .bold() .caption() - .onBackgroundMediumEmphasisForegroundColor() + .onBackgroundSecondaryForeground() SegmentedPickerSelector(FontDesignType.allCases, selection: theme.$fontButton) { fontStyle, _ in VStack(alignment: .center, spacing: 8) { Text("Aa") .font(.system(size: 28, weight: .heavy, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(fontStyle.rawValue.capitalizingFirstLetter()) .font(.system(size: 12, weight: .medium, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } } .segmentedControlStyle(.island(selected: .graySurface)) @@ -110,16 +110,16 @@ public struct FontSettingView: View { Text("Overline & caption".uppercased()) .bold() .caption() - .onBackgroundMediumEmphasisForegroundColor() + .onBackgroundSecondaryForeground() SegmentedPickerSelector(FontDesignType.allCases, selection: theme.$fontOverline) { fontStyle, _ in VStack(alignment: .center, spacing: 8) { Text("Aa") .font(.system(size: 28, weight: .heavy, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(fontStyle.rawValue.capitalizingFirstLetter()) .font(.system(size: 12, weight: .medium, design: fontStyle.system)) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } } .segmentedControlStyle(.island(selected: .graySurface)) @@ -138,34 +138,34 @@ extension FontSettingView { Text("Overline".uppercased()) .bold() .caption() - .onBackgroundMediumEmphasisForegroundColor() + .onBackgroundSecondaryForeground() Text("Large title") .largeTitle() - .onBackgroundHighEmphasisForegroundColor() + .onBackgroundPrimaryForeground() Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") .body() - .onBackgroundMediumEmphasisForegroundColor() + .onBackgroundSecondaryForeground() } VStack(alignment: .leading, spacing: Space.xxSmall.rawValue) { Text("Title") .title3() - .onBackgroundHighEmphasisForegroundColor() + .onBackgroundPrimaryForeground() Text("Subtitle") .headline() - .onBackgroundHighEmphasisForegroundColor() + .onBackgroundPrimaryForeground() Text("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.") .bold() .subheadline() - .onBackgroundHighEmphasisForegroundColor() + .onBackgroundPrimaryForeground() Text("Button") .body() - .onBackgroundHighEmphasisForegroundColor() + .onBackgroundPrimaryForeground() .padding(.top, .xxxSmall) } } diff --git a/Sources/OversizeKit/SettingsKit/Views/Apperance/RadiusSettingView.swift b/Sources/OversizeKit/SettingsKit/Views/Apperance/RadiusSettingView.swift index 277773a..1d63b74 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Apperance/RadiusSettingView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Apperance/RadiusSettingView.swift @@ -32,13 +32,13 @@ public struct RadiusSettingView: View { HStack { Text("Size") .subheadline() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Spacer() Text(String(format: "%.0f", theme.radius) + " px") .subheadline() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) } Slider(value: theme.$radius, in: 0 ... 12, step: 4) diff --git a/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeView.swift b/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeView.swift index bd3d913..c0484ee 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeView.swift @@ -9,8 +9,8 @@ import OversizeUI import SwiftUI public struct SetPINCodeView: View { - @Environment(\.settingsNavigate) var settingsNavigate - @EnvironmentObject private var hudRouter: HUDRouter + @Environment(Router.self) var router + @Environment(HUDRouter.self) private var hudRouter: HUDRouter @ObservedObject var viewModel: SetPINCodeViewModel @Environment(\.dismiss) var dismiss @@ -23,7 +23,7 @@ public struct SetPINCodeView: View { .toolbar { ToolbarItem(placement: .cancellationAction) { Button { - settingsNavigate(.dismiss) + router.dismiss() } label: { Image.Base.close.icon() } @@ -53,6 +53,7 @@ public struct SetPINCodeView: View { { viewModel.checkNewPINCode() } biometricAction: {} + case .confirmNewPINField: LockscreenView(pinCode: $viewModel.confirmNewCodeField, state: $viewModel.authState, diff --git a/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeViewModel.swift b/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeViewModel.swift index a75ebd3..3ef7f19 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeViewModel.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Security/PINCode/SetPINCodeViewModel.swift @@ -9,17 +9,18 @@ import OversizeServices import OversizeUI import SwiftUI -public enum PINCodeAction: Identifiable { +public enum PINCodeAction: Identifiable, Sendable { case set, update public var id: Int { hashValue } } -public enum SetPINCodeViewState { +public enum SetPINCodeViewState: Sendable { case oldPINField, newPINField, confirmNewPINField } +@MainActor public final class SetPINCodeViewModel: ObservableObject { @Published public var settingsStore: SettingsService diff --git a/Sources/OversizeKit/SettingsKit/Views/Security/SecuritySettingsView.swift b/Sources/OversizeKit/SettingsKit/Views/Security/SecuritySettingsView.swift index 1bb69ed..dc09593 100644 --- a/Sources/OversizeKit/SettingsKit/Views/Security/SecuritySettingsView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/Security/SecuritySettingsView.swift @@ -5,6 +5,7 @@ import Factory import OversizeLocalizable +import OversizeRouter import OversizeServices import OversizeUI import SwiftUI @@ -13,7 +14,7 @@ import SwiftUI public struct SecuritySettingsView: View { @Injected(\.biometricService) var biometricService - @Environment(\.settingsNavigate) var settingsNavigate + @Environment(Router.self) var router @StateObject var settingsService = SettingsService() public init() {} @@ -51,7 +52,7 @@ extension SecuritySettingsView { ) { Row(biometricService.biometricType.rawValue) { Image(systemName: biometricImageName) - .foregroundColor(Color.onBackgroundHighEmphasis) + .foregroundColor(Color.onBackgroundPrimary) .font(.system(size: 20, weight: .semibold)) .frame(width: 24, height: 24, alignment: .center) } @@ -66,7 +67,7 @@ extension SecuritySettingsView { if settingsService.isSetedPinCode() { settingsService.pinCodeEnabend = $0 } else { - settingsNavigate(.present(.setPINCode)) + router.present(.setPINCode) } }) ) { @@ -77,7 +78,7 @@ extension SecuritySettingsView { if settingsService.isSetedPinCode() { Row(L10n.Security.changePINCode) { - settingsNavigate(.present(.updatePINCode)) + router.present(.updatePINCode) } .rowArrow() } diff --git a/Sources/OversizeKit/SettingsKit/Views/SettingsView.swift b/Sources/OversizeKit/SettingsKit/Views/SettingsView.swift index 3799b59..dec2871 100644 --- a/Sources/OversizeKit/SettingsKit/Views/SettingsView.swift +++ b/Sources/OversizeKit/SettingsKit/Views/SettingsView.swift @@ -5,14 +5,15 @@ import OversizeLocalizable import OversizeResources +import OversizeRouter import OversizeServices import OversizeUI import SwiftUI // swiftlint:disable line_length - public struct SettingsView: View { - @Environment(\.settingsNavigate) var settingsNavigate + + @Environment(Router.self) var router @Environment(\.iconStyle) var iconStyle: IconStyle @Environment(\.theme) var theme: ThemeSettings @StateObject var settingsService = SettingsService() @@ -78,7 +79,7 @@ extension SettingsView { VStack(spacing: .zero) { if FeatureFlags.app.apperance.valueOrFalse { Row(L10n.Settings.apperance) { - settingsNavigate(.move(.appearance)) + router.move(.appearance) } leading: { apperanceSettingsIcon.icon() } @@ -87,7 +88,7 @@ extension SettingsView { if FeatureFlags.app.сloudKit.valueOrFalse || FeatureFlags.app.healthKit.valueOrFalse { Row(L10n.Title.synchronization) { - settingsNavigate(.move(.sync)) + router.move(.sync) } leading: { cloudKitIcon.icon() } @@ -103,7 +104,7 @@ extension SettingsView { || FeatureFlags.secure.photoBreaker.valueOrFalse { Row(L10n.Security.title) { - settingsNavigate(.move(.security)) + router.move(.security) } leading: { securityIcon.icon() } @@ -112,7 +113,7 @@ extension SettingsView { if FeatureFlags.app.sounds.valueOrFalse || FeatureFlags.app.vibration.valueOrFalse { Row(soundsAndVibrationTitle) { - settingsNavigate(.move(.soundAndVibration)) + router.move(.soundAndVibration) } leading: { FeatureFlags.app.sounds.valueOrFalse ? soundIcon.icon() : vibrationIcon.icon() } @@ -121,7 +122,7 @@ extension SettingsView { if FeatureFlags.app.notifications.valueOrFalse { Row(L10n.Settings.notifications) { - settingsNavigate(.move(.notifications)) + router.move(.notifications) } leading: { notificationsIcon.icon() } @@ -204,7 +205,9 @@ extension SettingsView { SectionView(L10n.Settings.supportSection) { VStack(alignment: .leading) { Row("Get help") { - settingsNavigate(.present(.support, detents: [.medium])) + #if os(iOS) + router.present(.support, detents: [.medium]) + #endif } leading: { helpIcon.icon() } @@ -212,7 +215,9 @@ extension SettingsView { .buttonStyle(.row) Row("Send feedback") { - settingsNavigate(.present(.feedback, detents: [.medium])) + #if os(iOS) + router.present(.feedback, detents: [.medium]) + #endif } leading: { chatIcon.icon() } @@ -292,7 +297,7 @@ extension SettingsView { SectionView { VStack(spacing: .zero) { Row(L10n.Settings.about) { - settingsNavigate(.move(.about)) + router.move(.about) } leading: { infoIcon.icon() } diff --git a/Sources/OversizeKit/StateKit/LoadingViewState.swift b/Sources/OversizeKit/StateKit/LoadingViewState.swift index 07b19d2..05176b8 100644 --- a/Sources/OversizeKit/StateKit/LoadingViewState.swift +++ b/Sources/OversizeKit/StateKit/LoadingViewState.swift @@ -6,9 +6,44 @@ import Foundation import OversizeModels -public enum LoadingViewState { +public enum LoadingViewState: Equatable { + case idle case loading case result(Result) - case empty(String) case error(AppError) } + +public extension LoadingViewState { + var isLoading: Bool { + switch self { + case .loading, .idle: + return true + default: + return false + } + } + + var result: Result? { + switch self { + case let .result(result): + return result + default: + return nil + } + } + + static func == (lhs: LoadingViewState, rhs: LoadingViewState) -> Bool { + switch (lhs, rhs) { + case (.idle, .idle): + return true + case (.loading, .loading): + return true + case (.result, .result): + return true + case (.error, .error): + return true + default: + return false + } + } +} diff --git a/Sources/OversizeKit/StoreKit/StoreScreen/AppStoreProduct/AppStoreProductViewController.swift b/Sources/OversizeKit/StoreKit/StoreScreen/AppStoreProduct/AppStoreProductViewController.swift index 3b18d10..1928817 100644 --- a/Sources/OversizeKit/StoreKit/StoreScreen/AppStoreProduct/AppStoreProductViewController.swift +++ b/Sources/OversizeKit/StoreKit/StoreScreen/AppStoreProduct/AppStoreProductViewController.swift @@ -57,7 +57,7 @@ } } - extension AppStoreProductViewController: SKStoreProductViewControllerDelegate { + extension AppStoreProductViewController: @preconcurrency SKStoreProductViewControllerDelegate { public func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) { viewController.dismiss(animated: true) } diff --git a/Sources/OversizeKit/StoreKit/StoreScreen/StoreInstuctinsView.swift b/Sources/OversizeKit/StoreKit/StoreScreen/StoreInstuctinsView.swift index a736466..b579acd 100644 --- a/Sources/OversizeKit/StoreKit/StoreScreen/StoreInstuctinsView.swift +++ b/Sources/OversizeKit/StoreKit/StoreScreen/StoreInstuctinsView.swift @@ -59,7 +59,7 @@ public struct StoreInstuctinsView: View { .environmentObject(viewModel) } } - .onChange(of: isPremium) { status in + .onChange(of: isPremium) { _, status in if status { dismiss() } @@ -80,12 +80,12 @@ public struct StoreInstuctinsView: View { VStack(spacing: .xSmall) { Text("How your free trial works") .largeTitle() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) if viewModel.isHaveSale { Group { Text("Begin your path towards feeling better with a ") - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) + Text("--% discount") .foregroundColor(.accent) @@ -107,7 +107,7 @@ public struct StoreInstuctinsView: View { .overlay { ScrollArrow(width: 30, offset: -5 + (offset * 0.05)) .stroke(style: StrokeStyle(lineWidth: 5, lineCap: .round)) - .foregroundColor(.onSurfaceHighEmphasis.opacity(0.3)) + .foregroundColor(.onSurfacePrimary.opacity(0.3)) .frame(width: 30) .offset(y: screenSize.safeAreaHeight - 300) // .opacity(1 - (offset * 0.01)) @@ -128,12 +128,12 @@ public struct StoreInstuctinsView: View { VStack(spacing: .xSmall) { Text("How your free trial works") .largeTitle() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) if viewModel.isHaveSale { Group { Text("Begin your path towards feeling better with a ") - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) + Text("\(viewModel.saleProcent)% discount") .foregroundColor(.accent) @@ -155,7 +155,7 @@ public struct StoreInstuctinsView: View { .overlay { ScrollArrow(width: 30, offset: -5 + (offset * 0.05)) .stroke(style: StrokeStyle(lineWidth: 5, lineCap: .round)) - .foregroundColor(.onSurfaceHighEmphasis.opacity(0.3)) + .foregroundColor(.onSurfacePrimary.opacity(0.3)) .frame(width: 30) .offset(y: screenSize.safeAreaHeight - 300) // .opacity(1 - (offset * 0.01)) @@ -179,7 +179,7 @@ public struct StoreInstuctinsView: View { await viewModel.updateSubscriptionStatus(products: data) } } - .onChange(of: data.purchasedAutoRenewable) { _ in + .onChange(of: data.purchasedAutoRenewable) { _, _ in Task { await viewModel.updateSubscriptionStatus(products: data) } @@ -192,7 +192,7 @@ public struct StoreInstuctinsView: View { HStack(alignment: .top, spacing: .small) { Resource.Store.zap .renderingMode(.template) - .foregroundColor(.onPrimaryHighEmphasis) + .foregroundColor(.onPrimary) .padding(.small) .background { Circle() @@ -226,7 +226,7 @@ public struct StoreInstuctinsView: View { HStack(alignment: .top, spacing: .small) { Image.Base.Notification.fill .renderingMode(.template) - .foregroundColor(Color.onSurfaceDisabled) + .foregroundColor(Color.onSurfaceTertiary) .padding(14) .background { Circle() @@ -252,7 +252,7 @@ public struct StoreInstuctinsView: View { HStack(alignment: .top, spacing: .small) { Image.Base.Star.fill .renderingMode(.template) - .foregroundColor(Color.onSurfaceDisabled) + .foregroundColor(Color.onSurfaceTertiary) .padding(14) .background { Circle() diff --git a/Sources/OversizeKit/StoreKit/StoreScreen/StoreSpecialOfferView.swift b/Sources/OversizeKit/StoreKit/StoreScreen/StoreSpecialOfferView.swift index 2f522b6..e2c0f39 100644 --- a/Sources/OversizeKit/StoreKit/StoreScreen/StoreSpecialOfferView.swift +++ b/Sources/OversizeKit/StoreKit/StoreScreen/StoreSpecialOfferView.swift @@ -43,7 +43,7 @@ public struct StoreSpecialOfferView: View { } } - .onChange(of: isPremium) { status in + .onChange(of: isPremium) { _, status in if status { dismiss() } @@ -223,7 +223,7 @@ public struct StoreSpecialOfferView: View { .overlay { ScrollArrow(width: 30, offset: -5 + (offset * 0.05)) .stroke(style: StrokeStyle(lineWidth: 5, lineCap: .round)) - .foregroundColor(.onSurfaceHighEmphasis.opacity(0.3)) + .foregroundColor(.onSurfacePrimary.opacity(0.3)) .frame(width: 30) .offset(y: screenSize.safeAreaHeight - 280) .opacity(1 - (offset * 0.01)) @@ -232,7 +232,7 @@ public struct StoreSpecialOfferView: View { VStack(spacing: .zero) { Text("Additional features in\nthe subscription") .title() - .onBackgroundHighEmphasisForegroundColor() + .onBackgroundPrimaryForeground() .multilineTextAlignment(.center) .fixedSize() .padding(.top, .large) @@ -252,7 +252,7 @@ public struct StoreSpecialOfferView: View { .task { await viewModel.updateSubscriptionStatus(products: data) } - .onChange(of: data.purchasedAutoRenewable) { _ in + .onChange(of: data.purchasedAutoRenewable) { _, _ in Task { await viewModel.updateSubscriptionStatus(products: data) } @@ -264,12 +264,12 @@ public struct StoreSpecialOfferView: View { VStack(spacing: .zero) { Text(badgeText.uppercased()) .footnote(.semibold) - .onBackgroundMediumEmphasisForegroundColor() + .onBackgroundSecondaryForeground() .padding(.bottom, .xxxSmall) Text(headline) .title(.bold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .frame(maxWidth: .infinity, alignment: .center) Text(event.title) @@ -277,7 +277,7 @@ public struct StoreSpecialOfferView: View { .foregroundColor(titleColor) Text(description) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) .headline(.regular) .padding(.top, .xSmall) } @@ -332,7 +332,7 @@ public struct StoreSpecialOfferView: View { if let accentColor = event.accentColor { return Color(hex: accentColor) } else { - return Color.onBackgroundHighEmphasis + return Color.onBackgroundPrimary } } diff --git a/Sources/OversizeKit/StoreKit/StoreScreen/StoreView.swift b/Sources/OversizeKit/StoreKit/StoreScreen/StoreView.swift index 42f78c7..861a886 100644 --- a/Sources/OversizeKit/StoreKit/StoreScreen/StoreView.swift +++ b/Sources/OversizeKit/StoreKit/StoreScreen/StoreView.swift @@ -93,11 +93,11 @@ import SwiftUI VStack(spacing: .xxSmall) { Text(titleText) .title() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(subtitleText) .headline() - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) } .multilineTextAlignment(.center) @@ -120,11 +120,11 @@ import SwiftUI VStack(spacing: .xxSmall) { Text(titleText) .title() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(subtitleText) .headline() - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) } .multilineTextAlignment(.center) @@ -163,14 +163,14 @@ import SwiftUI await viewModel.updateSubscriptionStatus(products: data) } } - .onChange(of: data.purchasedAutoRenewable) { _ in + .onChange(of: data.purchasedAutoRenewable) { _, _ in Task { // When `purchasedSubscriptions` changes, get the latest subscription status. await viewModel.updateSubscriptionStatus(products: data) } } - .onChange(of: viewModel.isPremium) { newValue in - isShowFireworks = newValue + .onChange(of: viewModel.isPremium) { _, status in + isShowFireworks = status DispatchQueue.main.asyncAfter(deadline: .now() + 30) { isShowFireworks = false } diff --git a/Sources/OversizeKit/StoreKit/StoreScreen/ViewModel/StoreViewModel.swift b/Sources/OversizeKit/StoreKit/StoreScreen/ViewModel/StoreViewModel.swift index fc1d271..346fe95 100644 --- a/Sources/OversizeKit/StoreKit/StoreScreen/ViewModel/StoreViewModel.swift +++ b/Sources/OversizeKit/StoreKit/StoreScreen/ViewModel/StoreViewModel.swift @@ -138,7 +138,6 @@ extension StoreViewModel { } } - // Percentage of decrease = |239.88 - 59.99|/239.88 = 179.89/239.88 = 0.74991662497916 = 74.991662497916% var saleProcent: String { guard let yearSubscriptionProduct else { return "" } if let monthSubscriptionProduct { diff --git a/Sources/OversizeKit/StoreKit/ViewModifier/PremiumBlockOverlay.swift b/Sources/OversizeKit/StoreKit/ViewModifier/PremiumBlockOverlay.swift index 0594af7..7fa7602 100644 --- a/Sources/OversizeKit/StoreKit/ViewModifier/PremiumBlockOverlay.swift +++ b/Sources/OversizeKit/StoreKit/ViewModifier/PremiumBlockOverlay.swift @@ -45,12 +45,12 @@ public struct PremiumBlockOverlay: ViewModifier { VStack(spacing: .small) { Text(title) .title() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) if let subtitle { Text(subtitle) .headline(.medium) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) } } .multilineTextAlignment(.center) diff --git a/Sources/OversizeKit/StoreKit/Views/BuyButtonStyle.swift b/Sources/OversizeKit/StoreKit/Views/BuyButtonStyle.swift index caa0b85..9e71cad 100644 --- a/Sources/OversizeKit/StoreKit/Views/BuyButtonStyle.swift +++ b/Sources/OversizeKit/StoreKit/Views/BuyButtonStyle.swift @@ -49,7 +49,7 @@ public struct PaymentButtonStyle: ButtonStyle { configuration.label .body(true) .opacity(isLoading ? 0 : 1) - .foregroundColor(.onPrimaryHighEmphasis) + .foregroundColor(.onPrimary) .padding(.horizontal, horizontalPadding) .padding(.vertical, verticalPadding) .frame(maxWidth: maxWidth) @@ -67,7 +67,7 @@ public struct PaymentButtonStyle: ButtonStyle { ) .overlay { RoundedRectangle(cornerRadius: 10, style: .continuous) - .strokeBorder(Color.onSurfaceHighEmphasis.opacity(0.15), lineWidth: 2) + .strokeBorder(Color.onSurfacePrimary.opacity(0.15), lineWidth: 2) .opacity(isBordered || theme.borderButtons ? 1 : 0) } } @@ -76,7 +76,7 @@ public struct PaymentButtonStyle: ButtonStyle { private func loadingView(for _: ButtonRole?) -> some View { if isLoading { ProgressView() - .progressViewStyle(CircularProgressViewStyle(tint: Color.onPrimaryHighEmphasis)) + .progressViewStyle(CircularProgressViewStyle(tint: Color.onPrimary)) } else { EmptyView() } diff --git a/Sources/OversizeKit/StoreKit/Views/FireworksBubbles.swift b/Sources/OversizeKit/StoreKit/Views/FireworksBubbles.swift index c2e78af..6db793a 100644 --- a/Sources/OversizeKit/StoreKit/Views/FireworksBubbles.swift +++ b/Sources/OversizeKit/StoreKit/Views/FireworksBubbles.swift @@ -54,7 +54,7 @@ struct FireworksBubbles: View { ZStack { ForEach(0 ..< Int.random(in: 2 ... 5), id: \.self) { _ in Circle() - .fill(Color.onPrimaryDisabled) + .fill(Color.onPrimaryTertiary) .frame(width: 30, height: 30) .modifier(ParticlesBubblesModifier()) .offset(x: CGFloat.random(in: -200 ... 200), y: CGFloat.random(in: -200 ... 200)) diff --git a/Sources/OversizeKit/StoreKit/Views/PrmiumBannerRow.swift b/Sources/OversizeKit/StoreKit/Views/PrmiumBannerRow.swift index d479082..7818f76 100644 --- a/Sources/OversizeKit/StoreKit/Views/PrmiumBannerRow.swift +++ b/Sources/OversizeKit/StoreKit/Views/PrmiumBannerRow.swift @@ -67,14 +67,14 @@ public struct PrmiumBannerRow: View { Text(Info.store.subscriptionsName) .headline(.semibold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Spacer() HStack(spacing: .small) { Text(viewModel.subsribtionStatusText) .headline(.medium) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) Circle() .foregroundColor(viewModel.subsribtionStatusColor) @@ -118,13 +118,13 @@ public extension PrmiumBannerRow { } .background( RoundedRectangle(cornerRadius: Radius.small.rawValue, style: .continuous) - .fill(Color.onPrimaryHighEmphasis + .fill(Color.onPrimary )) Text(Info.store.subscriptionsDescription) .headline(.semibold) - .onPrimaryHighEmphasisForegroundColor() + .onPrimaryForeground() .multilineTextAlignment(.center) .padding(.top, Space.xSmall) .frame(maxWidth: 260) diff --git a/Sources/OversizeKit/StoreKit/Views/StoreFeatureDetailView.swift b/Sources/OversizeKit/StoreKit/Views/StoreFeatureDetailView.swift index d0ff026..d192629 100644 --- a/Sources/OversizeKit/StoreKit/Views/StoreFeatureDetailView.swift +++ b/Sources/OversizeKit/StoreKit/Views/StoreFeatureDetailView.swift @@ -45,13 +45,16 @@ public struct StoreFeatureDetailView: View { Button { dismiss() } label: { - IconDeprecated(.xMini, color: selection.screenURL != nil ? .onPrimaryHighEmphasis : .onSurfaceDisabled) - .padding(.xxSmall) - .background { - Circle() - .fill(.ultraThinMaterial) - } - .padding(.small) + IconDeprecated( + .xMini, + color: selection.screenURL != nil ? .onPrimary : .onSurfaceTertiary + ) + .padding(.xxSmall) + .background { + Circle() + .fill(.ultraThinMaterial) + } + .padding(.small) } } #endif diff --git a/Sources/OversizeKit/StoreKit/Views/StoreFeaturesLargeView.swift b/Sources/OversizeKit/StoreKit/Views/StoreFeaturesLargeView.swift index 0668344..3b20f80 100644 --- a/Sources/OversizeKit/StoreKit/Views/StoreFeaturesLargeView.swift +++ b/Sources/OversizeKit/StoreKit/Views/StoreFeaturesLargeView.swift @@ -54,11 +54,11 @@ struct StoreFeaturesLargeView: View { VStack(spacing: .xxSmall) { Text(feature.title.valueOrEmpty) .title2(.bold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(feature.subtitle.valueOrEmpty) .body(.medium) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) } .padding(.vertical, .medium) .padding(.horizontal, .xSmall) @@ -119,11 +119,11 @@ struct StoreFeaturesLargeView: View { VStack(spacing: .xSmall) { Text(feature.title.valueOrEmpty) .title2(.bold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(feature.subtitle.valueOrEmpty) .body(.medium) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) } } .padding(.vertical, .large) diff --git a/Sources/OversizeKit/StoreKit/Views/StoreFeaturesView.swift b/Sources/OversizeKit/StoreKit/Views/StoreFeaturesView.swift index a0c895b..c20fc1a 100644 --- a/Sources/OversizeKit/StoreKit/Views/StoreFeaturesView.swift +++ b/Sources/OversizeKit/StoreKit/Views/StoreFeaturesView.swift @@ -31,7 +31,7 @@ struct StoreFeaturesView: View { .renderingMode(.template) } } - .onPrimaryHighEmphasisForegroundColor() + .onPrimaryForeground() .iconOnSurface(surfaceSolor: backgroundColor(feature: feature)) } .rowArrow() diff --git a/Sources/OversizeKit/StoreKit/Views/StorePaymentButtonBar.swift b/Sources/OversizeKit/StoreKit/Views/StorePaymentButtonBar.swift index 0399d3b..42ad0df 100644 --- a/Sources/OversizeKit/StoreKit/Views/StorePaymentButtonBar.swift +++ b/Sources/OversizeKit/StoreKit/Views/StorePaymentButtonBar.swift @@ -23,7 +23,7 @@ struct StorePaymentButtonBar: View { if showDescription { Text(viewModel.selectedProductButtonDescription) .subheadline(.semibold) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) .padding(.vertical, 20) } diff --git a/Sources/OversizeKit/StoreKit/Views/StoreProductView.swift b/Sources/OversizeKit/StoreKit/Views/StoreProductView.swift index 2fa0d08..a10a81c 100644 --- a/Sources/OversizeKit/StoreKit/Views/StoreProductView.swift +++ b/Sources/OversizeKit/StoreKit/Views/StoreProductView.swift @@ -148,7 +148,7 @@ public struct StoreProductView: View { if isSelected { Circle() - .fill(Color.onPrimaryHighEmphasis) + .fill(Color.onPrimary) .frame(width: 20, height: 20) .overlay { IconDeprecated(.checkMini, color: topLabelbackgroundColor) @@ -174,21 +174,21 @@ public struct StoreProductView: View { VStack(spacing: .zero) { Text(product.displayMonthsCount) .title2() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Text(product.displayMonthsCountDescription) .footnote(.bold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) HStack(spacing: .zero) { Text(product.displayPrice) .subheadline(.semibold) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .padding(.top, .xxxSmall) Text(product.displayPeriod) .caption2() - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) .padding(.top, .xxxSmall) } .padding(.top, .xxxSmall) @@ -209,7 +209,7 @@ public struct StoreProductView: View { .fill(topLabelbackgroundColor) .frame(width: 20, height: 20) .overlay { - IconDeprecated(.checkMini, color: Color.onPrimaryHighEmphasis) + IconDeprecated(.checkMini, color: Color.onPrimary) } .padding(.top, .xxxSmall) .padding(.trailing, .xxxSmall) @@ -230,12 +230,12 @@ public struct StoreProductView: View { HStack { Text(product.displayName) .headline() - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) if isHaveSale, !isPurchased { Text("Save " + saleProcent + "%") .caption2(.bold) - .foregroundColor(.onPrimaryHighEmphasis) + .foregroundColor(.onPrimary) .padding(.horizontal, .xxSmall) .padding(.vertical, .xxxSmall) .background { @@ -267,14 +267,14 @@ public struct StoreProductView: View { .caption2() .padding(.top, .xxxSmall) } - .foregroundColor(.onSurfaceDisabled) + .foregroundColor(.onSurfaceTertiary) .padding(.vertical, .xxSmall) #if os(iOS) if isHaveSale, !isPurchased { Text("Save " + saleProcent + "%") .caption2(.bold) - .foregroundColor(.onPrimaryHighEmphasis) + .foregroundColor(.onPrimary) .padding(.vertical, .xxxSmall) .frame(maxWidth: .infinity) .background { @@ -299,7 +299,7 @@ public struct StoreProductView: View { VStack(alignment: .trailing, spacing: .xxSmall) { Text(product.displayPriceWithPeriod) .headline(.semibold) - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) if let subscriptionUnit = product.subscription?.subscriptionPeriod.unit, subscriptionUnit == .year { HStack(spacing: 2) { @@ -307,12 +307,12 @@ public struct StoreProductView: View { Text(monthSubscriptionProduct.displayPrice) .strikethrough() .subheadline() - .foregroundColor(.onSurfaceDisabled) + .foregroundColor(.onSurfaceTertiary) } Text(product.displayMonthPrice + product.displayMonthPricePeriod) .subheadline() - .foregroundColor(.onSurfaceMediumEmphasis) + .foregroundColor(.onSurfaceSecondary) } } } @@ -379,7 +379,7 @@ public struct StoreProductView: View { var topLabelForegroundColor: Color { if isPurchased || isSelected { - return .onPrimaryHighEmphasis + return .onPrimary } else { return Palette.violet.color } @@ -387,7 +387,7 @@ public struct StoreProductView: View { var descriptionForegroundColor: Color { if isPurchased || product.type != .autoRenewable { - return .onSurfaceMediumEmphasis + return .onSurfaceSecondary } else { return .warning } diff --git a/Sources/OversizeKit/StoreKit/Views/SubscriptionPrivacyView.swift b/Sources/OversizeKit/StoreKit/Views/SubscriptionPrivacyView.swift index 692e91e..6b8ec96 100644 --- a/Sources/OversizeKit/StoreKit/Views/SubscriptionPrivacyView.swift +++ b/Sources/OversizeKit/StoreKit/Views/SubscriptionPrivacyView.swift @@ -21,11 +21,11 @@ struct SubscriptionPrivacyView: View { VStack(spacing: .xxSmall) { Text("About \(Info.store.subscriptionsName) subscription") .subheadline(.bold) - .foregroundColor(Color.onSurfaceDisabled) + .foregroundColor(Color.onSurfaceTertiary) Text("\(Info.store.subscriptionsName) subscription is required to get access to all functions. Regardless whether the subscription has free trial period or not it automatically renews with the price and duration given above unless it is canceled at least 24 hours before the end of the current period. Payment will be charged to your Apple ID account at the confirmation of purchase. Your account will be charged for renewal within 24 hours prior to the end of the current period. You can manage and cancel your subscriptions by going to your account settings on the App Store after purchase. Any unused portion of a free trial period, if offered, will be forfeited when the user purchases a subscription to that publication, where applicable.") .caption() - .foregroundColor(Color.onSurfaceMediumEmphasis) + .foregroundColor(Color.onSurfaceSecondary) #if os(iOS) HStack(spacing: .xxSmall) { @@ -62,7 +62,7 @@ struct SubscriptionPrivacyView: View { } } .subheadline(.bold) - .foregroundColor(Color.onSurfaceDisabled) + .foregroundColor(Color.onSurfaceTertiary) .padding(.top, .xxxSmall) #endif } diff --git a/Sources/OversizeKit/SystemKit/SystemServices.swift b/Sources/OversizeKit/SystemKit/SystemServices.swift index dbbef9a..a9cc75f 100644 --- a/Sources/OversizeKit/SystemKit/SystemServices.swift +++ b/Sources/OversizeKit/SystemKit/SystemServices.swift @@ -4,26 +4,25 @@ // import Factory -import OversizeCore -import OversizeLocalizable import OversizeServices import OversizeStoreService import OversizeUI import SwiftUI public struct SystemServicesModifier: ViewModifier { - @Injected(\.appStateService) var appState: AppStateService - @Injected(\.settingsService) var settingsService: SettingsServiceProtocol - @Injected(\.appStoreReviewService) var appStoreReviewService: AppStoreReviewServiceProtocol + @Injected(\.appStateService) private var appState: AppStateService + @Injected(\.settingsService) private var settingsService: SettingsServiceProtocol + @Injected(\.appStoreReviewService) private var appStoreReviewService: AppStoreReviewServiceProtocol - @Environment(\.scenePhase) var scenePhase: ScenePhase - @Environment(\.theme) var theme: ThemeSettings - @AppStorage("AppState.PremiumState") var isPremium: Bool = false + @Environment(\.scenePhase) private var scenePhase: ScenePhase + @Environment(\.theme) private var theme: ThemeSettings + @AppStorage("AppState.PremiumState") private var isPremium: Bool = false - @State var blurRadius: CGFloat = 0 - @State var oppacity: CGFloat = 1 + @State private var blurRadius: CGFloat = 0 + @State private var oppacity: CGFloat = 1 + @State private var screnSize: ScreenSize = .init(width: 375, height: 667) - enum FullScreenSheet: Identifiable, Equatable { + private enum FullScreenSheet: Identifiable, Equatable, Sendable { case onboarding case payWall case lockscreen @@ -32,41 +31,11 @@ public struct SystemServicesModifier: ViewModifier { } } - public init() {} - - @State private var screnSize: ScreenSize = .init(width: 375, height: 667) + public nonisolated init() {} public func body(content: Content) -> some View { GeometryReader { geometry in content - .onChange(of: scenePhase, perform: { value in - switch value { - case .active: - if settingsService.blurMinimizeEnabend { - withAnimation { - blurRadius = 0 - } - } - case .background: - if settingsService.blurMinimizeEnabend { - withAnimation { - blurRadius = 10 - } - } - case .inactive: - if settingsService.blurMinimizeEnabend { - withAnimation { - blurRadius = 10 - } - } - @unknown default: - break - } - }) - .onAppear { - let updatedScreenSize = ScreenSize(geometry: geometry) - screnSize = updatedScreenSize - } .blur(radius: blurRadius) .preferredColorScheme(theme.appearance.colorScheme) .premiumStatus(isPremium) @@ -75,12 +44,46 @@ public struct SystemServicesModifier: ViewModifier { #if os(iOS) .accentColor(theme.accentColor) #endif + .onAppear(perform: { onAppear(geometry: geometry) }) + .onChange(of: scenePhase) { _, phase in + onChangeScenePhase(phase) + } } } + + private func onChangeScenePhase(_ phase: ScenePhase) { + switch phase { + case .active: + if settingsService.blurMinimizeEnabend { + withAnimation { + blurRadius = 0 + } + } + case .background: + if settingsService.blurMinimizeEnabend { + withAnimation { + blurRadius = 10 + } + } + case .inactive: + if settingsService.blurMinimizeEnabend { + withAnimation { + blurRadius = 10 + } + } + @unknown default: + break + } + } + + private func onAppear(geometry: GeometryProxy) { + let updatedScreenSize = ScreenSize(geometry: geometry) + screnSize = updatedScreenSize + } } public extension View { - func systemServices() -> some View { + nonisolated func systemServices() -> some View { modifier(SystemServicesModifier()) } } diff --git a/Sources/OversizeLocationKit/AddressField/AddressField.swift b/Sources/OversizeLocationKit/AddressField/AddressField.swift index a126453..2582a24 100644 --- a/Sources/OversizeLocationKit/AddressField/AddressField.swift +++ b/Sources/OversizeLocationKit/AddressField/AddressField.swift @@ -59,7 +59,7 @@ public struct AddressField: View { HStack { Text(title) .subheadline(.medium) - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) Spacer() } } @@ -70,7 +70,7 @@ public struct AddressField: View { Text(title) .font(!isSlectedAddress ? .headline : .subheadline) .fontWeight(!isSlectedAddress ? .medium : .semibold) - .onSurfaceDisabledForegroundColor() + .onSurfaceTertiaryForeground() .offset(y: !isSlectedAddress ? 0 : -13) .opacity(!isSlectedAddress ? 0 : 1) } @@ -81,12 +81,12 @@ public struct AddressField: View { .lineLimit(1) } Spacer() - IconDeprecated(.chevronDown, color: .onSurfaceHighEmphasis) + IconDeprecated(.chevronDown, color: .onSurfacePrimary) } } .contentShape(Rectangle()) } - .foregroundColor(.onSurfaceHighEmphasis) + .foregroundColor(.onSurfacePrimary) .buttonStyle(.field) #if !os(watchOS) .sheet(isPresented: $isShowPicker) { diff --git a/Sources/OversizeLocationKit/AddressPicker/AddressPicker.swift b/Sources/OversizeLocationKit/AddressPicker/AddressPicker.swift index d4a92a4..c46b204 100644 --- a/Sources/OversizeLocationKit/AddressPicker/AddressPicker.swift +++ b/Sources/OversizeLocationKit/AddressPicker/AddressPicker.swift @@ -44,7 +44,7 @@ import SwiftUI Spacer() } .title3() - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .padding(.vertical, .xxSmall) .paddingContent(.horizontal) @@ -60,7 +60,7 @@ import SwiftUI .topToolbar { TextField("Search places or addresses", text: $viewModel.searchTerm) .submitScope(viewModel.searchTerm.count < 2) - .textFieldStyle(DefaultPlaceholderTextFieldStyle()) + .textFieldStyle(.default) .focused($isFocusSearth) .submitLabel(.done) .onSubmit { diff --git a/Sources/OversizeLocationKit/MapCoordinateView/MapCoordinateView.swift b/Sources/OversizeLocationKit/MapCoordinateView/MapCoordinateView.swift index f004927..e36b40d 100644 --- a/Sources/OversizeLocationKit/MapCoordinateView/MapCoordinateView.swift +++ b/Sources/OversizeLocationKit/MapCoordinateView/MapCoordinateView.swift @@ -81,7 +81,7 @@ import SwiftUI viewModel.zoomIn() } label: { IconDeprecated(.plus) - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .padding(.xxSmall) } @@ -89,7 +89,7 @@ import SwiftUI viewModel.zoomOut() } label: { IconDeprecated(.minus) - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .padding(.xxSmall) } } @@ -106,7 +106,7 @@ import SwiftUI } label: { IconDeprecated(.navigation) - .onSurfaceMediumEmphasisForegroundColor() + .onSurfaceSecondaryForeground() .padding(.xxSmall) } .background { diff --git a/Sources/OversizeNotificationKit/LocalNotificationSetScreenViewModel.swift b/Sources/OversizeNotificationKit/LocalNotificationSetScreenViewModel.swift index 66f9e4e..94d24ed 100644 --- a/Sources/OversizeNotificationKit/LocalNotificationSetScreenViewModel.swift +++ b/Sources/OversizeNotificationKit/LocalNotificationSetScreenViewModel.swift @@ -38,13 +38,20 @@ import SwiftUI func setNotification(timeBefore: LocalNotificationTime) async { let notificationTime = date.addingTimeInterval(timeBefore.timeInterval) let dateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute], from: notificationTime) + + let stringUserInfo = userInfo?.reduce(into: [String: String]()) { result, pair in + if let key = pair.key as? String, let value = pair.value as? String { + result[key] = value + } + } + await localNotificationService.schedule(localNotification: .init( id: id, title: title, body: body, dateComponents: dateComponents, repeats: false, - userInfo: userInfo + userInfo: stringUserInfo )) } diff --git a/Sources/OversizeOnboardingKit/OnboardingItem.swift b/Sources/OversizeOnboardingKit/OnboardingItem.swift deleted file mode 100644 index 76e1028..0000000 --- a/Sources/OversizeOnboardingKit/OnboardingItem.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// Copyright © 2022 Alexander Romanov -// OnboardingItem.swift -// - -import SwiftUI - -public struct OnboardingItem: Identifiable, Equatable { - public var id = UUID() - public var image: Image? - public var title: String? - public var subtitle: String? - - public init(id: UUID = UUID(), image: Image? = nil, title: String? = nil, subtitle: String? = nil) { - self.id = id - self.image = image - self.title = title - self.subtitle = subtitle - } -} diff --git a/Sources/OversizeOnboardingKit/OnboardingItemPreferenceKey.swift b/Sources/OversizeOnboardingKit/OnboardingItemPreferenceKey.swift deleted file mode 100644 index 0335c7f..0000000 --- a/Sources/OversizeOnboardingKit/OnboardingItemPreferenceKey.swift +++ /dev/null @@ -1,14 +0,0 @@ -// -// Copyright © 2022 Alexander Romanov -// OnboardingItemPreferenceKey.swift -// - -import SwiftUI - -struct OnboardingItemPreferenceKey: PreferenceKey { - static var defaultValue: [OnboardingItem] = [] - - static func reduce(value: inout [OnboardingItem], nextValue: () -> [OnboardingItem]) { - value += nextValue() - } -} diff --git a/Sources/OversizeOnboardingKit/OnboardingItemViewModifier.swift b/Sources/OversizeOnboardingKit/OnboardingItemViewModifier.swift deleted file mode 100644 index 23590f6..0000000 --- a/Sources/OversizeOnboardingKit/OnboardingItemViewModifier.swift +++ /dev/null @@ -1,21 +0,0 @@ -// -// Copyright © 2022 Alexander Romanov -// OnboardingItemViewModifier.swift -// - -import SwiftUI - -struct OnboardingItemViewModifier: ViewModifier { - let onboardingItem: OnboardingItem - - func body(content: Content) -> some View { - content - .preference(key: OnboardingItemPreferenceKey.self, value: [onboardingItem]) - } -} - -public extension View { - func onboardingItem(_ label: () -> OnboardingItem) -> some View { - modifier(OnboardingItemViewModifier(onboardingItem: label())) - } -} diff --git a/Sources/OversizeOnboardingKit/OnboardingView.swift b/Sources/OversizeOnboardingKit/OnboardingView.swift index a12d76e..6ac81eb 100644 --- a/Sources/OversizeOnboardingKit/OnboardingView.swift +++ b/Sources/OversizeOnboardingKit/OnboardingView.swift @@ -1,111 +1,125 @@ // -// Copyright © 2023 Alexander Romanov -// OnboardingView.swift +// Copyright © 2024 Alexander Romanov +// OnboardView.swift, created on 16.09.2024 // import OversizeUI import SwiftUI -public struct OnboardingView: View { - @Environment(\.screenSize) var screenSize - - @Binding private var selection: Int - - @Namespace private var onboardingItem - - @State private var slides: [OnboardingItem] = [] - - private let finishAction: (() -> Void)? - - private var content: Content - - public init(selection: Binding, finishAction: (() -> Void)? = nil, @ViewBuilder content: () -> Content) { +public struct OnboardView: View where A: View, C: View { + private let content: C + private let actions: Group + private let backAction: (() -> Void)? + private let skipAction: (() -> Void)? + private let helpAction: (() -> Void)? + + public init( + @ViewBuilder content: () -> C, + @ViewBuilder actions: () -> A, + backAction: (() -> Void)? = nil, + skipAction: (() -> Void)? = nil, + helpAction: (() -> Void)? = nil + ) { self.content = content() - self.finishAction = finishAction - _selection = selection + self.actions = Group { actions() } + self.backAction = backAction + self.skipAction = skipAction + self.helpAction = helpAction } public var body: some View { - ZStack { - VStack { - PageIndexView($selection, maxIndex: slides.count) - .padding(.top, .large) - Spacer() - } - - TabView(selection: $selection) { - // ForEach(Array(slides.enumerated()), id: \.offset) { index, element in + content + .ignoresSafeArea(.all) + .frame( + maxWidth: .infinity, + maxHeight: .infinity + ) + .safeAreaInset(edge: .top, content: topButtons) + .safeAreaInset(edge: .bottom, content: bottomButtons) + } - tabItem(tabItem: OnboardingItem(title: "Title", subtitle: "Sub"), index: 0) - // .tag(index) - // } - } + private func topButtons() -> some View { + HStack { #if os(iOS) - .tabViewStyle(.page(indexDisplayMode: .never)) - .indexViewStyle(.page(backgroundDisplayMode: .never)) + if helpAction != nil { + Button { + helpAction?() + } label: { + Text("Help") + } + .buttonStyle(.tertiary) + .controlBorderShape(.capsule) + .accent() + .controlSize(.mini) + } #endif + + Spacer() + + if skipAction != nil { + Button { + skipAction?() + } label: { + Text("Skip") + } + .buttonStyle(.tertiary) + .controlBorderShape(.capsule) + .accent() + #if !os(tvOS) + .controlSize(.mini) + #endif + } } - .background( - Color.backgroundSecondary.ignoresSafeArea() - ) - .onPreferenceChange(OnboardingItemPreferenceKey.self) { value in - slides = value - } + .padding(.medium) } - private func tabItem(tabItem: OnboardingItem, index _: Int) -> some View { - VStack(spacing: .small) { - if let image = tabItem.image { - image - } + private func bottomButtons() -> some View { + #if os(iOS) + HStack(spacing: .small) { + if let backAction { + Button { + backAction() + } label: { + Image.Base.arrowLeft.icon() + } + .buttonStyle(.quaternary) + .accentColor(.secondary) + } - VStack { - if let title = tabItem.title { - Text(title) - .largeTitle() - .foregroundColor(.onSurfaceHighEmphasis) - .padding(.bottom, .small) + VStack(spacing: .xxxSmall) { + actions + } + } + .padding(.medium) + #else + HStack(spacing: .xSmall) { + if let helpAction { + Button("Help", action: helpAction) + .help("Help") + .controlSize(.extraLarge) + .buttonStyle(.bordered) } - if let subtitle = tabItem.subtitle { - Text(subtitle) - .foregroundColor(.onSurfaceMediumEmphasis) - .fontWeight(.regular) - .font(.system(size: 19)) + Spacer() + + if let backAction { + Button( + "Back", + action: backAction + ) + .controlSize(.extraLarge) + .buttonStyle(.bordered) } + + actions + .controlSize(.extraLarge) + .buttonStyle(.borderedProminent) } - .offset(y: screenSize.height < 812 ? -50 : 0) - } - .multilineTextAlignment(.center) - .frame(maxWidth: 320) - .offset(y: -50) - .padding(.bottom, .xLarge) + .padding(.small) + .background(Color.surfacePrimary) + .overlay(alignment: .top) { + Separator() + } + #endif } } - -// struct FloatingTabBarExample: View { -// @State var selection = 0 -// -// var body: some View { -// FloatingTabBar(selection: $selection, plusAction: { print("plus") }) { -// Color.gray -// .floatingTabItem { -// TabItem(icon: Image(systemName: "star")) -// } -// .opacity(selection == 0 ? 1 : 0) -// -// Color.blue -// .floatingTabItem { -// TabItem(icon: Image(systemName: "plus")) -// } -// .opacity(selection == 1 ? 1 : 0) -// } -// } -// } - -// struct FloatingTabBar_Previews: PreviewProvider { -// static var previews: some View { -// FloatingTabBarExample() -// } -// } -// diff --git a/Sources/OversizePhotoKit/PhotosGalleryView.swift b/Sources/OversizePhotoKit/PhotosGalleryView.swift index 7aff10e..5c13e1c 100644 --- a/Sources/OversizePhotoKit/PhotosGalleryView.swift +++ b/Sources/OversizePhotoKit/PhotosGalleryView.swift @@ -23,7 +23,7 @@ public struct PhotosGalleryView: View { if images.isEmpty { Text("Not photos") .title3() - .onSurfaceHighEmphasisForegroundColor() + .onSurfacePrimaryForeground() } else { ImageGridView(images, columnCount: .constant(3)) { image in let index = images.firstIndex(of: image)