diff --git a/ElementX.xcodeproj/project.pbxproj b/ElementX.xcodeproj/project.pbxproj index 7f8a5ae21..07e8e2e7e 100644 --- a/ElementX.xcodeproj/project.pbxproj +++ b/ElementX.xcodeproj/project.pbxproj @@ -7458,9 +7458,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 17.6; KEYCHAIN_ACCESS_GROUP_IDENTIFIER = "$(AppIdentifierPrefix)$(BASE_BUNDLE_IDENTIFIER)"; - MACOSX_DEPLOYMENT_TARGET = 13.3; MARKETING_VERSION = 1.9.4; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; @@ -7535,9 +7534,8 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.4; + IPHONEOS_DEPLOYMENT_TARGET = 17.6; KEYCHAIN_ACCESS_GROUP_IDENTIFIER = "$(AppIdentifierPrefix)$(BASE_BUNDLE_IDENTIFIER)"; - MACOSX_DEPLOYMENT_TARGET = 13.3; MARKETING_VERSION = 1.9.4; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; diff --git a/ElementX/Sources/Application/AppCoordinator.swift b/ElementX/Sources/Application/AppCoordinator.swift index 75fa3da1d..1b878c785 100644 --- a/ElementX/Sources/Application/AppCoordinator.swift +++ b/ElementX/Sources/Application/AppCoordinator.swift @@ -575,7 +575,7 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationFlowCoordinatorDeleg // The user will log out, clear any existing notifications and unregister from receving new ones UNUserNotificationCenter.current().removeAllPendingNotificationRequests() UNUserNotificationCenter.current().removeAllDeliveredNotifications() - UIApplication.shared.applicationIconBadgeNumber = 0 + UNUserNotificationCenter.current().setBadgeCount(0) unregisterForRemoteNotifications() diff --git a/ElementX/Sources/Application/Navigation/NavigationCoordinators.swift b/ElementX/Sources/Application/Navigation/NavigationCoordinators.swift index 7441c85df..e17c24781 100644 --- a/ElementX/Sources/Application/Navigation/NavigationCoordinators.swift +++ b/ElementX/Sources/Application/Navigation/NavigationCoordinators.swift @@ -452,15 +452,15 @@ private struct NavigationSplitCoordinatorView: View { } // Handle `horizontalSizeClass` changes breaking the navigation bar // https://github.com/element-hq/element-x-ios/issues/617 - .onChange(of: horizontalSizeClass) { value in + .onChange(of: horizontalSizeClass) { _, newValue in guard scenePhase != .background else { return } - isInSplitMode = value == .regular + isInSplitMode = newValue == .regular } - .onChange(of: scenePhase) { value in - guard value == .active else { + .onChange(of: scenePhase) { _, newValue in + guard newValue == .active else { return } diff --git a/ElementX/Sources/Other/Pills/PillView.swift b/ElementX/Sources/Other/Pills/PillView.swift index 2a0deee76..2e51831a2 100644 --- a/ElementX/Sources/Other/Pills/PillView.swift +++ b/ElementX/Sources/Other/Pills/PillView.swift @@ -30,7 +30,7 @@ struct PillView: View { .padding(.trailing, 6) .padding(.vertical, 1) .background { Capsule().foregroundColor(backgroundColor) } - .onChange(of: context.viewState.displayText) { _ in + .onChange(of: context.viewState.displayText) { didChangeText() } } diff --git a/ElementX/Sources/Other/SwiftUI/Search.swift b/ElementX/Sources/Other/SwiftUI/Search.swift index e9ba31983..cb951305d 100644 --- a/ElementX/Sources/Other/SwiftUI/Search.swift +++ b/ElementX/Sources/Other/SwiftUI/Search.swift @@ -171,7 +171,7 @@ struct IsSearchingModifier: ViewModifier { func body(content: Content) -> some View { content - .onChange(of: isSearchingEnv) { isSearching = $0 } + .onChange(of: isSearchingEnv) { isSearching = $1 } } } diff --git a/ElementX/Sources/Screens/AppLock/AppLockScreen/View/AppLockScreen.swift b/ElementX/Sources/Screens/AppLock/AppLockScreen/View/AppLockScreen.swift index f607fbdc3..45c20b95b 100644 --- a/ElementX/Sources/Screens/AppLock/AppLockScreen/View/AppLockScreen.swift +++ b/ElementX/Sources/Screens/AppLock/AppLockScreen/View/AppLockScreen.swift @@ -29,7 +29,7 @@ struct AppLockScreen: View { pinInputField .padding(.bottom, 16) .offset(x: pinInputFieldOffset) - .onChange(of: context.viewState.numberOfPINAttempts) { newValue in + .onChange(of: context.viewState.numberOfPINAttempts) { _, newValue in guard newValue > 0 else { return } // Reset without animation in Previews. accessibilitySubtitleFocus = true Task { await animatePINFailure() } diff --git a/ElementX/Sources/Screens/AppLock/AppLockSetupPINScreen/View/PINTextField.swift b/ElementX/Sources/Screens/AppLock/AppLockSetupPINScreen/View/PINTextField.swift index 09f10d365..408a7f838 100644 --- a/ElementX/Sources/Screens/AppLock/AppLockSetupPINScreen/View/PINTextField.swift +++ b/ElementX/Sources/Screens/AppLock/AppLockSetupPINScreen/View/PINTextField.swift @@ -20,7 +20,7 @@ struct PINTextField: View { .textFieldStyle(PINTextFieldStyle(pinCode: pinCode, isSecure: isSecure, maxLength: maxLength, size: size)) .keyboardType(.numberPad) .accessibilityIdentifier(A11yIdentifiers.appLockSetupPINScreen.textField) - .onChange(of: pinCode) { newValue in + .onChange(of: pinCode) { _, newValue in let sanitized = sanitize(newValue) if sanitized != newValue { MXLog.warning("PIN code input sanitized.") diff --git a/ElementX/Sources/Screens/AppLock/AppLockSetupSettingsScreen/View/AppLockSetupSettingsScreen.swift b/ElementX/Sources/Screens/AppLock/AppLockSetupSettingsScreen/View/AppLockSetupSettingsScreen.swift index 097b27079..3cb1dfc36 100644 --- a/ElementX/Sources/Screens/AppLock/AppLockSetupSettingsScreen/View/AppLockSetupSettingsScreen.swift +++ b/ElementX/Sources/Screens/AppLock/AppLockSetupSettingsScreen/View/AppLockSetupSettingsScreen.swift @@ -29,7 +29,7 @@ struct AppLockSetupSettingsScreen: View { Section { ListRow(label: .plain(title: context.viewState.enableBiometricsTitle), kind: .toggle($context.enableBiometrics)) - .onChange(of: context.enableBiometrics) { _ in + .onChange(of: context.enableBiometrics) { context.send(viewAction: .enableBiometricsChanged) } } diff --git a/ElementX/Sources/Screens/Authentication/LoginScreen/View/LoginScreen.swift b/ElementX/Sources/Screens/Authentication/LoginScreen/View/LoginScreen.swift index b5e882ee6..3226fcd92 100644 --- a/ElementX/Sources/Screens/Authentication/LoginScreen/View/LoginScreen.swift +++ b/ElementX/Sources/Screens/Authentication/LoginScreen/View/LoginScreen.swift @@ -74,7 +74,9 @@ struct LoginScreen: View { .textContentType(.username) .autocapitalization(.none) .submitLabel(.next) - .onChange(of: isUsernameFocused, perform: usernameFocusChanged) + .onChange(of: isUsernameFocused) { _, newValue in + usernameFocusChanged(isFocussed: newValue) + } .onSubmit { isPasswordFocused = true } .padding(.bottom, 20) @@ -135,19 +137,19 @@ struct LoginScreen_Previews: PreviewProvider, TestablePreview { LoginScreen(context: viewModel.context) } .previewDisplayName("matrix.org") - .snapshotPreferences(delay: 0.1) + .snapshotPreferences(delay: 1) NavigationStack { LoginScreen(context: credentialsViewModel.context) } .previewDisplayName("Credentials Entered") - .snapshotPreferences(delay: 0.1) + .snapshotPreferences(delay: 1) NavigationStack { LoginScreen(context: unconfiguredViewModel.context) } .previewDisplayName("Unsupported") - .snapshotPreferences(delay: 0.1) + .snapshotPreferences(delay: 1) } static func makeViewModel(homeserverAddress: String = "matrix.org", withCredentials: Bool = false) -> LoginScreenViewModel { diff --git a/ElementX/Sources/Screens/Authentication/ServerSelectionScreen/View/ServerSelectionScreen.swift b/ElementX/Sources/Screens/Authentication/ServerSelectionScreen/View/ServerSelectionScreen.swift index 49e792fcb..b39a92e41 100644 --- a/ElementX/Sources/Screens/Authentication/ServerSelectionScreen/View/ServerSelectionScreen.swift +++ b/ElementX/Sources/Screens/Authentication/ServerSelectionScreen/View/ServerSelectionScreen.swift @@ -59,7 +59,7 @@ struct ServerSelectionScreen: View { .keyboardType(.URL) .autocapitalization(.none) .disableAutocorrection(true) - .onChange(of: context.homeserverAddress) { _ in context.send(viewAction: .clearFooterError) } + .onChange(of: context.homeserverAddress) { context.send(viewAction: .clearFooterError) } .submitLabel(.done) .onSubmit(submit) @@ -107,7 +107,7 @@ struct ServerSelection_Previews: PreviewProvider, TestablePreview { NavigationStack { ServerSelectionScreen(context: invalidViewModel.context) } - .snapshotPreferences(delay: 0.25) + .snapshotPreferences(delay: 1) } static func makeViewModel(for homeserverAddress: String) -> ServerSelectionScreenViewModel { diff --git a/ElementX/Sources/Screens/BugReportScreen/View/BugReportScreen.swift b/ElementX/Sources/Screens/BugReportScreen/View/BugReportScreen.swift index d972d1279..1be952729 100644 --- a/ElementX/Sources/Screens/BugReportScreen/View/BugReportScreen.swift +++ b/ElementX/Sources/Screens/BugReportScreen/View/BugReportScreen.swift @@ -30,7 +30,7 @@ struct BugReportScreen: View { .navigationBarTitleDisplayMode(.inline) .toolbar { toolbar } .interactiveDismissDisabled() - .onChange(of: selectedScreenshot) { newItem in + .onChange(of: selectedScreenshot) { _, newItem in Task { guard let data = try? await newItem?.loadTransferable(type: Data.self), let image = UIImage(data: data) diff --git a/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift b/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift index 16f85e529..8ba9f9c7d 100644 --- a/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift +++ b/ElementX/Sources/Screens/CreatePollScreen/View/PollFormScreen.swift @@ -65,8 +65,8 @@ struct PollFormScreen: View { } .focused($focus, equals: .option(index: index)) .accessibilityIdentifier(A11yIdentifiers.pollFormScreen.optionID(index)) - .onChange(of: context.options[index].text) { optionText in - guard let lastCharacter = optionText.last, lastCharacter.isNewline else { + .onChange(of: context.options[index].text) { _, newOptionText in + guard let lastCharacter = newOptionText.last, lastCharacter.isNewline else { return } diff --git a/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift b/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift index ddbbeb75b..9f5e39325 100644 --- a/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift +++ b/ElementX/Sources/Screens/EmojiPickerScreen/View/EmojiPickerScreen.swift @@ -55,7 +55,7 @@ struct EmojiPickerScreen: View { } .presentationDetents([.medium, .large]) .presentationDragIndicator(isSearching ? .hidden : .visible) - .onChange(of: searchString) { _ in + .onChange(of: searchString) { context.send(viewAction: .search(searchString: searchString)) } } diff --git a/ElementX/Sources/Screens/GlobalSearchScreen/View/GlobalSearchScreen.swift b/ElementX/Sources/Screens/GlobalSearchScreen/View/GlobalSearchScreen.swift index 388ee539a..f7f4a6fd0 100644 --- a/ElementX/Sources/Screens/GlobalSearchScreen/View/GlobalSearchScreen.swift +++ b/ElementX/Sources/Screens/GlobalSearchScreen/View/GlobalSearchScreen.swift @@ -49,7 +49,7 @@ struct GlobalSearchScreen: View { selectedRoom = context.viewState.rooms.first searchFieldFocus = true } - .onChange(of: context.viewState.rooms) { _ in + .onChange(of: context.viewState.rooms) { selectedRoom = context.viewState.rooms.first } .onTapGesture { diff --git a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift index ec65e9420..7275684dd 100644 --- a/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift +++ b/ElementX/Sources/Screens/HomeScreen/View/HomeScreenContent.swift @@ -66,10 +66,10 @@ struct HomeScreenContent: View { .onReceive(scrollViewAdapter.isScrolling) { _ in updateVisibleRange() } - .onChange(of: context.searchQuery) { _ in + .onChange(of: context.searchQuery) { updateVisibleRange() } - .onChange(of: context.viewState.visibleRooms) { _ in + .onChange(of: context.viewState.visibleRooms) { updateVisibleRange() // We have been seeing a lot of issues around the room list not updating properly after diff --git a/ElementX/Sources/Screens/InviteUsersScreen/View/InviteUsersScreen.swift b/ElementX/Sources/Screens/InviteUsersScreen/View/InviteUsersScreen.swift index d67703181..5e75198d6 100644 --- a/ElementX/Sources/Screens/InviteUsersScreen/View/InviteUsersScreen.swift +++ b/ElementX/Sources/Screens/InviteUsersScreen/View/InviteUsersScreen.swift @@ -110,7 +110,7 @@ struct InviteUsersScreen: View { .frame(width: cellWidth) } } - .onChange(of: context.viewState.scrollToLastID) { lastAddedID in + .onChange(of: context.viewState.scrollToLastID) { _, lastAddedID in guard let id = lastAddedID else { return } withElementAnimation(.easeInOut) { scrollView.scrollTo(id) diff --git a/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift b/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift index 87035a6a7..419e46329 100644 --- a/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift +++ b/ElementX/Sources/Screens/JoinRoomScreen/View/JoinRoomScreen.swift @@ -107,7 +107,7 @@ struct JoinRoomScreen: View { VStack(alignment: .leading, spacing: 12) { HStack(spacing: 0) { TextField("", text: $context.knockMessage, axis: .vertical) - .onChange(of: context.knockMessage) { newValue in + .onChange(of: context.knockMessage) { _, newValue in context.knockMessage = String(newValue.prefix(1000)) } .lineLimit(4, reservesSpace: true) diff --git a/ElementX/Sources/Screens/Onboarding/IdentityConfirmationScreen/View/IdentityConfirmationScreen.swift b/ElementX/Sources/Screens/Onboarding/IdentityConfirmationScreen/View/IdentityConfirmationScreen.swift index 4bbb249ef..d81d14944 100644 --- a/ElementX/Sources/Screens/Onboarding/IdentityConfirmationScreen/View/IdentityConfirmationScreen.swift +++ b/ElementX/Sources/Screens/Onboarding/IdentityConfirmationScreen/View/IdentityConfirmationScreen.swift @@ -108,7 +108,7 @@ struct IdentityConfirmationScreen_Previews: PreviewProvider, TestablePreview { NavigationStack { IdentityConfirmationScreen(context: viewModel.context) } - .snapshotPreferences(delay: 0.25) + .snapshotPreferences(delay: 1) } private static var viewModel: IdentityConfirmationScreenViewModel { diff --git a/ElementX/Sources/Screens/RoomChangeRolesScreen/View/RoomChangeRolesScreen.swift b/ElementX/Sources/Screens/RoomChangeRolesScreen/View/RoomChangeRolesScreen.swift index 02975c9bc..d116dc4c5 100644 --- a/ElementX/Sources/Screens/RoomChangeRolesScreen/View/RoomChangeRolesScreen.swift +++ b/ElementX/Sources/Screens/RoomChangeRolesScreen/View/RoomChangeRolesScreen.swift @@ -71,8 +71,8 @@ struct RoomChangeRolesScreen: View { .frame(width: cellWidth) } } - .onChange(of: context.viewState.lastPromotedMember) { member in - guard let member else { return } + .onChange(of: context.viewState.lastPromotedMember) { _, newValue in + guard let member = newValue else { return } withElementAnimation(.easeInOut) { scrollView.scrollTo(member.id) } diff --git a/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift b/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift index 1126194ab..207f10796 100644 --- a/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift +++ b/ElementX/Sources/Screens/RoomDetailsScreen/View/RoomDetailsScreen.swift @@ -185,7 +185,7 @@ struct RoomDetailsScreen: View { ListRow(label: .default(title: L10n.commonFavourite, icon: \.favourite), kind: .toggle($context.isFavourite)) .accessibilityIdentifier(A11yIdentifiers.roomDetailsScreen.favourite) - .onChange(of: context.isFavourite) { newValue in + .onChange(of: context.isFavourite) { _, newValue in context.send(viewAction: .toggleFavourite(isFavourite: newValue)) } diff --git a/ElementX/Sources/Screens/RoomNotificationSettingsScreen/View/RoomNotificationSettingsScreen.swift b/ElementX/Sources/Screens/RoomNotificationSettingsScreen/View/RoomNotificationSettingsScreen.swift index 7c1ae23f7..ef3b58f7d 100644 --- a/ElementX/Sources/Screens/RoomNotificationSettingsScreen/View/RoomNotificationSettingsScreen.swift +++ b/ElementX/Sources/Screens/RoomNotificationSettingsScreen/View/RoomNotificationSettingsScreen.swift @@ -35,7 +35,7 @@ struct RoomNotificationSettingsScreen: View { kind: .toggle($context.allowCustomSetting)) .accessibilityIdentifier(A11yIdentifiers.roomNotificationSettingsScreen.allowCustomSetting) .disabled(context.viewState.notificationSettingsState.isLoading) - .onChange(of: context.allowCustomSetting) { _ in + .onChange(of: context.allowCustomSetting) { context.send(viewAction: .changedAllowCustomSettings) } } footer: { diff --git a/ElementX/Sources/Screens/RoomPollsHistoryScreen/View/RoomPollsHistoryScreen.swift b/ElementX/Sources/Screens/RoomPollsHistoryScreen/View/RoomPollsHistoryScreen.swift index 96d4c8c54..0029e48b6 100644 --- a/ElementX/Sources/Screens/RoomPollsHistoryScreen/View/RoomPollsHistoryScreen.swift +++ b/ElementX/Sources/Screens/RoomPollsHistoryScreen/View/RoomPollsHistoryScreen.swift @@ -47,8 +47,8 @@ struct RoomPollsHistoryScreen: View { } .pickerStyle(.segmented) .readableFrame(maxWidth: 475) - .onChange(of: context.filter) { value in - context.send(viewAction: .filter(value)) + .onChange(of: context.filter) { _, newValue in + context.send(viewAction: .filter(newValue)) } } diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift index 8f1dcaa6c..0cb580d0a 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/ComposerToolbar.swift @@ -180,18 +180,18 @@ struct ComposerToolbar: View { guard !composerFocused else { return } composerFocused = true } - .onChange(of: context.composerFocused) { newValue in + .onChange(of: context.composerFocused) { _, newValue in guard composerFocused != newValue else { return } composerFocused = newValue } - .onChange(of: composerFocused) { newValue in + .onChange(of: composerFocused) { _, newValue in context.composerFocused = newValue } - .onChange(of: context.plainComposerText) { _ in + .onChange(of: context.plainComposerText) { context.send(viewAction: .plainComposerTextChanged) } - .onChange(of: context.composerFormattingEnabled) { _ in + .onChange(of: context.composerFormattingEnabled) { context.send(viewAction: .didToggleFormattingOptions) } .onAppear { diff --git a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift index f29078076..0e2044014 100644 --- a/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift +++ b/ElementX/Sources/Screens/RoomScreen/ComposerToolbar/View/VoiceMessagePreviewComposer.swift @@ -48,8 +48,8 @@ struct VoiceMessagePreviewComposer: View { showCursor: playerState.showProgressIndicator, onSeek: onSeek) } - .onChange(of: isDragging) { isDragging in - onScrubbing(isDragging) + .onChange(of: isDragging) { _, newValue in + onScrubbing(newValue) } .padding(.vertical, 4.0) .padding(.horizontal, 6.0) diff --git a/ElementX/Sources/Screens/RoomScreen/View/SwipeRightAction.swift b/ElementX/Sources/Screens/RoomScreen/View/SwipeRightAction.swift index 183af7a4c..df0a3f5df 100644 --- a/ElementX/Sources/Screens/RoomScreen/View/SwipeRightAction.swift +++ b/ElementX/Sources/Screens/RoomScreen/View/SwipeRightAction.swift @@ -32,8 +32,8 @@ struct SwipeRightAction: ViewModifier { .offset(x: xOffset, y: 0.0) .animation(.interactiveSpring().speed(0.5), value: xOffset) .timelineGesture(gesture) - .onChange(of: dragGestureActive) { value in - if value == true { + .onChange(of: dragGestureActive) { _, newValue in + if newValue == true { if shouldStartAction() { feedbackGenerator.prepare() canStartAction = true diff --git a/ElementX/Sources/Screens/SecureBackup/SecureBackupRecoveryKeyScreen/View/SecureBackupRecoveryKeyScreen.swift b/ElementX/Sources/Screens/SecureBackup/SecureBackupRecoveryKeyScreen/View/SecureBackupRecoveryKeyScreen.swift index 00f980ab5..995963a44 100644 --- a/ElementX/Sources/Screens/SecureBackup/SecureBackupRecoveryKeyScreen/View/SecureBackupRecoveryKeyScreen.swift +++ b/ElementX/Sources/Screens/SecureBackup/SecureBackupRecoveryKeyScreen/View/SecureBackupRecoveryKeyScreen.swift @@ -19,7 +19,7 @@ struct SecureBackupRecoveryKeyScreen: View { ScrollViewReader { reader in mainContent .padding(16) - .onChange(of: focused) { newValue in + .onChange(of: focused) { _, newValue in guard newValue == true else { return } reader.scrollTo(textFieldIdentifier) } diff --git a/ElementX/Sources/Screens/Settings/AnalyticsSettingsScreen/View/AnalyticsSettingsScreen.swift b/ElementX/Sources/Screens/Settings/AnalyticsSettingsScreen/View/AnalyticsSettingsScreen.swift index 1972bdabb..916a9e6c2 100644 --- a/ElementX/Sources/Screens/Settings/AnalyticsSettingsScreen/View/AnalyticsSettingsScreen.swift +++ b/ElementX/Sources/Screens/Settings/AnalyticsSettingsScreen/View/AnalyticsSettingsScreen.swift @@ -24,7 +24,7 @@ struct AnalyticsSettingsScreen: View { Section { ListRow(label: .plain(title: L10n.screenAnalyticsSettingsShareData), kind: .toggle($context.enableAnalytics)) - .onChange(of: context.enableAnalytics) { _ in + .onChange(of: context.enableAnalytics) { context.send(viewAction: .toggleAnalytics) } } footer: { diff --git a/ElementX/Sources/Screens/Settings/NotificationSettingsScreen/View/NotificationSettingsScreen.swift b/ElementX/Sources/Screens/Settings/NotificationSettingsScreen/View/NotificationSettingsScreen.swift index dca3369aa..2c0319c14 100644 --- a/ElementX/Sources/Screens/Settings/NotificationSettingsScreen/View/NotificationSettingsScreen.swift +++ b/ElementX/Sources/Screens/Settings/NotificationSettingsScreen/View/NotificationSettingsScreen.swift @@ -86,7 +86,7 @@ struct NotificationSettingsScreen: View { Section { ListRow(label: .plain(title: L10n.screenNotificationSettingsEnableNotifications), kind: .toggle($context.enableNotifications)) - .onChange(of: context.enableNotifications) { _ in + .onChange(of: context.enableNotifications) { context.send(viewAction: .changedEnableNotifications) } } @@ -128,7 +128,7 @@ struct NotificationSettingsScreen: View { kind: .toggle($context.roomMentionsEnabled)) .disabled(context.viewState.settings?.roomMentionsEnabled == nil) .allowsHitTesting(!context.viewState.applyingChange) - .onChange(of: context.roomMentionsEnabled) { _ in + .onChange(of: context.roomMentionsEnabled) { context.send(viewAction: .roomMentionChanged) } } header: { @@ -143,7 +143,7 @@ struct NotificationSettingsScreen: View { kind: .toggle($context.callsEnabled)) .disabled(context.viewState.settings?.callsEnabled == nil) .allowsHitTesting(!context.viewState.applyingChange) - .onChange(of: context.callsEnabled) { _ in + .onChange(of: context.callsEnabled) { context.send(viewAction: .callsChanged) } } header: { @@ -158,7 +158,7 @@ struct NotificationSettingsScreen: View { kind: .toggle($context.invitationsEnabled)) .disabled(context.viewState.settings?.invitationsEnabled == nil) .allowsHitTesting(!context.viewState.applyingChange) - .onChange(of: context.invitationsEnabled) { _ in + .onChange(of: context.invitationsEnabled) { context.send(viewAction: .invitationsChanged) } } header: { diff --git a/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift b/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift index 0d3fc5360..049a78831 100644 --- a/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift +++ b/ElementX/Sources/Screens/Timeline/View/Style/TimelineItemBubbledStylerView.swift @@ -377,11 +377,12 @@ struct TimelineItemBubbledStylerView_Previews: PreviewProvider, TestablePreview .previewDisplayName("Replies") threads .previewDisplayName("Thread decorator") + .snapshotPreferences(delay: 1) encryptionAuthenticity .previewDisplayName("Encryption Indicators") pinned .previewDisplayName("Pinned messages") - .snapshotPreferences(delay: 2.0) + .snapshotPreferences(delay: 1) } static var mockTimeline: some View { diff --git a/ElementX/Sources/Screens/Timeline/View/Style/TimelineStyler.swift b/ElementX/Sources/Screens/Timeline/View/Style/TimelineStyler.swift index 1cafaf023..f69da64db 100644 --- a/ElementX/Sources/Screens/Timeline/View/Style/TimelineStyler.swift +++ b/ElementX/Sources/Screens/Timeline/View/Style/TimelineStyler.swift @@ -25,7 +25,7 @@ struct TimelineStyler: View { var body: some View { mainContent - .onChange(of: timelineItem.properties.deliveryStatus) { newStatus in + .onChange(of: timelineItem.properties.deliveryStatus) { _, newStatus in if case .sendingFailed = newStatus { guard task == nil else { return diff --git a/ElementX/Sources/Screens/Timeline/View/Supplementary/ReactionsSummaryView.swift b/ElementX/Sources/Screens/Timeline/View/Supplementary/ReactionsSummaryView.swift index 1920f2d64..fccaf576c 100644 --- a/ElementX/Sources/Screens/Timeline/View/Supplementary/ReactionsSummaryView.swift +++ b/ElementX/Sources/Screens/Timeline/View/Supplementary/ReactionsSummaryView.swift @@ -43,7 +43,7 @@ struct ReactionsSummaryView: View { scrollView.scrollTo(selectedReactionKey) } } - .onChange(of: selectedReactionKey) { _ in + .onChange(of: selectedReactionKey) { scrollView.scrollTo(selectedReactionKey) } } diff --git a/ElementX/Sources/Screens/Timeline/View/TypingIndicatorView.swift b/ElementX/Sources/Screens/Timeline/View/TypingIndicatorView.swift index da3d805e2..e927cda08 100644 --- a/ElementX/Sources/Screens/Timeline/View/TypingIndicatorView.swift +++ b/ElementX/Sources/Screens/Timeline/View/TypingIndicatorView.swift @@ -19,7 +19,7 @@ struct TypingIndicatorView: View { .truncationMode(.middle) .padding(.horizontal, 4) .animation(.elementDefault, value: typingMembers.members) - .onChange(of: typingMembers.members) { newValue in + .onChange(of: typingMembers.members) { _, newValue in if !newValue.isEmpty { didShowTextOnce = true } diff --git a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VoiceMessages/VoiceMessageRoomPlaybackView.swift b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VoiceMessages/VoiceMessageRoomPlaybackView.swift index 1cda7b3bd..1928a55b4 100644 --- a/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VoiceMessages/VoiceMessageRoomPlaybackView.swift +++ b/ElementX/Sources/Services/Timeline/TimelineItems/Items/Messages/VoiceMessages/VoiceMessageRoomPlaybackView.swift @@ -51,8 +51,8 @@ struct VoiceMessageRoomPlaybackView: View { } .padding(.leading, 2) .padding(.trailing, 8) - .onChange(of: isDragging) { isDragging in - onScrubbing(isDragging) + .onChange(of: isDragging) { _, newValue in + onScrubbing(newValue) } } diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Encryption-Indicators.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Encryption-Indicators.png index ec2c0f596..c6b62565f 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Encryption-Indicators.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Encryption-Indicators.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:517d2adbb60ff9e40d7b0f530b05f3810f302180fed9259673afe57f2598d669 -size 174777 +oid sha256:27cf16e147a82ad2126e43a511d07ced65468b0c9ec18f86e30a1546ef9a0864 +size 174751 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png index f5e3ce2a3..54f489551 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e9a505f51ed4ce883a44c63856329f468b285480cf38d1f7e9f9dddd39beacd1 -size 286018 +oid sha256:17403a44b5f71ef51b12a2392d3c8eed2b30cd4ddeb25188c29e738f8ed3c3fc +size 285676 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png index 89ba4a334..1e57c3f8e 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ededd3cbc04f946fd5374d1f43ec0d9fe6a1537aae193a7dffbf9dc5ce2c2ff1 -size 284462 +oid sha256:2f576e2c44ecda928a8afdbd29bf9c79631517d9c42d6b8a16b1dcdbac1885a9 +size 284180 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png index 0e89eb628..037b9bfd3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-en-GB.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c7524b103a29f907484c183458dca038ccfe5d4396328fd774ce15d321eea13 -size 107183 +oid sha256:c4563bc0de73f8053c8c6a8ab08aea50ee6a5328aa46a5c627f37dfb1bdd6f5b +size 107113 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Encryption-Indicators.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Encryption-Indicators.png index 7d4aeba08..21ddc92ad 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Encryption-Indicators.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Encryption-Indicators.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:685784026c5fbf1676f2e41105303c150a8520c0588081960dd6c679cb16f86f -size 176916 +oid sha256:7a1ff79835b6de47a22fdbdca05a56a257aa5341da6d0515e02324570c70e05d +size 176994 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png index 0239b9939..f2545df7a 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aaea7ab92cc40488cccadca3b281008eb829e49f99b9f55c4dad405afbf5d6ae -size 287689 +oid sha256:fc726f43094e192a9f367c0ece419d581de5d43bab53275eaa73ae25969e65ab +size 287326 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png index 6452a271e..e9f3a9cb7 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:842fd304e64840dc39ad6231c8a52981de84d23d212229051c4b7cc2649fde28 -size 285736 +oid sha256:982eb9dd6ed5fe3c4c13811ae463b80f1b571fec18953d98d641d367cd705db0 +size 285493 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png index 0e89eb628..037b9bfd3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPad-pseudo.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9c7524b103a29f907484c183458dca038ccfe5d4396328fd774ce15d321eea13 -size 107183 +oid sha256:c4563bc0de73f8053c8c6a8ab08aea50ee6a5328aa46a5c627f37dfb1bdd6f5b +size 107113 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Encryption-Indicators.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Encryption-Indicators.png index f2a14f4ba..bc8617ecd 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Encryption-Indicators.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Encryption-Indicators.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0ad54f532f3ec4333e004b763956ea2ffec9aecfa0c3113b423f6a9f85ac87c7 -size 127545 +oid sha256:1af078d4671249c492161013d753905feed81303ce9e172e17e3432c3acfc372 +size 127533 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline-RTL.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline-RTL.png index f38c214c0..33f9d4b5d 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline-RTL.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:799c4d6ea7c9ae76270f0a4e5bdce5f1c8330b59fd0375cfccaa547fe10d9682 -size 190665 +oid sha256:1a39ebd070935b96d697dc0c70244962a8d55c6c9ce3e958808c35f8ed009506 +size 190461 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline.png index 5fa5af364..bbd1e7fb9 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:900a641ca6e9d716f2ac6ea0d5fcb0bba0587315250fac01bc63e92242071d33 -size 188360 +oid sha256:e4278c55045120935c02fe570409295a0eb0b984a103e5fd09d314bb2f4e09a6 +size 188620 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Replies.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Replies.png index f65e1a7ba..f54321b33 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Replies.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-en-GB.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bf2e4421574f1fdfe25bebb6eafd22bae7e67dd032a4b3bd785dd48cd28b477 -size 65845 +oid sha256:516a4ad7cb46f4ef1ab316e6bea424abe8c5ef4767a2e4d838bccc80bb8db9be +size 65830 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Encryption-Indicators.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Encryption-Indicators.png index 45fc5a690..8389f9445 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Encryption-Indicators.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Encryption-Indicators.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8dd04554290d3299b0ce0a95d2304bce2d90a7c130f48a64efc6fc4b3b15727c -size 128846 +oid sha256:4bc439fffcd4b212a103493a07f7f0f336c69bd641b86bb84768cc0595a82bd2 +size 128840 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline-RTL.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline-RTL.png index 5474306bf..651a6d750 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline-RTL.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline-RTL.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b8c11bc7b586274511cbaf4c3a54f5a3fe2ee51bf345d1feadcad327a207df02 -size 188412 +oid sha256:1eb05117714fb7853917a32dba87565ed0ad83b3097ca01703581dc0ec8e7b7a +size 188275 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline.png index 6fc5eeb2d..d9a42bff3 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Mock-Timeline.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1c4444924cad6f07ea6b85d2ad3f7a2c1f60d6e4d03fc2ea0880df496b157132 -size 186021 +oid sha256:a421129a41149ca0c3be3981ef169ddcbce8b0c57a0b94ea43a3fea2dc4202f8 +size 186287 diff --git a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Replies.png b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Replies.png index f65e1a7ba..f54321b33 100644 --- a/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Replies.png +++ b/PreviewTests/Sources/__Snapshots__/PreviewTests/test_timelineItemBubbledStylerView-iPhone-16-pseudo.Replies.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9bf2e4421574f1fdfe25bebb6eafd22bae7e67dd032a4b3bd785dd48cd28b477 -size 65845 +oid sha256:516a4ad7cb46f4ef1ab316e6bea424abe8c5ef4767a2e4d838bccc80bb8db9be +size 65830 diff --git a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift index e5f72310a..ce5e2d0be 100644 --- a/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift +++ b/Tools/Scripts/Templates/SimpleScreenExample/ElementX/View/TemplateScreen.swift @@ -24,7 +24,7 @@ struct TemplateScreen: View { } .compoundList() .navigationTitle(context.viewState.title) - .onChange(of: context.composerText) { _ in + .onChange(of: context.composerText) { context.send(viewAction: .textChanged) } } diff --git a/project.yml b/project.yml index 16f5a1bb8..51f71ea1c 100644 --- a/project.yml +++ b/project.yml @@ -10,8 +10,7 @@ options: groupSortPosition: bottom createIntermediateGroups: true deploymentTarget: - iOS: '16.4' - macOS: '13.3' + iOS: '17.6' groupOrdering: - order: - ElementX