From e8849ecc2a36fea5d6a574ecb55fb7b1b7bb0ca6 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 23 Oct 2025 18:47:10 +0100 Subject: [PATCH] Revert "remove all scaling effects for flipped UI" This reverts commit 9170a313e4302974047619d75d96e004c24e3a4b. --- .../Views/ChatList/ChatListNavLink.swift | 3 +- .../Shared/Views/ChatList/ChatListView.swift | 61 +++++++++---------- .../Views/NewChat/NewChatMenuButton.swift | 22 +++---- apps/ios/SimpleX.xcodeproj/project.pbxproj | 20 +++--- 4 files changed, 51 insertions(+), 55 deletions(-) diff --git a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift index 66a60ceb28..4937bca20e 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift @@ -45,8 +45,7 @@ struct ChatListNavLink: View { @EnvironmentObject var theme: AppTheme @EnvironmentObject var chatTagsModel: ChatTagsModel @Environment(\.dynamicTypeSize) private var userFont: DynamicTypeSize -// @AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true - @State private var oneHandUI = false + @AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = false @ObservedObject var chat: Chat @Binding var parentSheet: SomeSheet? @State private var showContactRequestDialog = false diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index d593581337..e9b4c4961c 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -154,8 +154,7 @@ struct ChatListView: View { // iOS 15 is required it to show/hide toolbar while chat is hidden/visible @State private var viewOnScreen = true -// @AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true - @State private var oneHandUI = false + @AppStorage(GROUP_DEFAULT_ONE_HAND_UI, store: groupDefaults) private var oneHandUI = true @AppStorage(DEFAULT_ONE_HAND_UI_CARD_SHOWN) private var oneHandUICardShown = false @AppStorage(DEFAULT_ADDRESS_CREATION_CARD_SHOWN) private var addressCreationCardShown = false @AppStorage(DEFAULT_TOOLBAR_MATERIAL) private var toolbarMaterial = ToolbarMaterial.defaultMaterial @@ -169,8 +168,7 @@ struct ChatListView: View { } private var viewBody: some View { - ZStack(alignment: .topLeading) { -// ZStack(alignment: oneHandUI ? .bottomLeading : .topLeading) { + ZStack(alignment: oneHandUI ? .bottomLeading : .topLeading) { NavStackCompat( isActive: Binding( get: { chatModel.chatId != nil }, @@ -207,10 +205,9 @@ struct ChatListView: View { chatList .background(theme.colors.background) .navigationBarTitleDisplayMode(.inline) -// .navigationBarHidden(searchMode || oneHandUI) - .navigationBarHidden(searchMode) + .navigationBarHidden(searchMode || oneHandUI) } -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .onAppear { if #unavailable(iOS 16.0), !viewOnScreen { viewOnScreen = true @@ -238,14 +235,14 @@ struct ChatListView: View { secondaryButton: .cancel() )) } -// .safeAreaInset(edge: .top) { -// if oneHandUI { Divider().background(tm) } -// } -// .safeAreaInset(edge: .bottom) { -// if oneHandUI { -// Divider().padding(.bottom, Self.hasHomeIndicator ? 0 : 8).background(tm) -// } -// } + .safeAreaInset(edge: .top) { + if oneHandUI { Divider().background(tm) } + } + .safeAreaInset(edge: .bottom) { + if oneHandUI { + Divider().padding(.bottom, Self.hasHomeIndicator ? 0 : 8).background(tm) + } + } .sheet(item: $sheet) { sheet in if #available(iOS 16.0, *) { sheet.content.presentationDetents([.fraction(sheet.fraction)]) @@ -264,22 +261,22 @@ struct ChatListView: View { @ViewBuilder func withToolbar(_ material: Material, content: () -> some View) -> some View { if #available(iOS 16.0, *) { -// if oneHandUI { -// content() -// .toolbarBackground(.hidden, for: .bottomBar) -// .toolbar { bottomToolbar } -// } else { + if oneHandUI { + content() + .toolbarBackground(.hidden, for: .bottomBar) + .toolbar { bottomToolbar } + } else { content() .toolbarBackground(.automatic, for: .navigationBar) .toolbarBackground(material) .toolbar { topToolbar } -// } + } } else { -// if oneHandUI { -// content().toolbar { bottomToolbarGroup() } -// } else { + if oneHandUI { + content().toolbar { bottomToolbarGroup() } + } else { content().toolbar { topToolbar } -// } + } } } @@ -354,17 +351,17 @@ struct ChatListView: View { searchChatFilteredBySimplexLink: $searchChatFilteredBySimplexLink, parentSheet: $sheet ) -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .listRowSeparator(.hidden) .listRowBackground(Color.clear) .frame(maxWidth: .infinity) -// .padding(.top, oneHandUI ? 8 : 0) + .padding(.top, oneHandUI ? 8 : 0) .id("searchBar") } if #available(iOS 16.0, *) { ForEach(cs, id: \.viewId) { chat in ChatListNavLink(chat: chat, parentSheet: $sheet) -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .padding(.trailing, -16) .disabled(chatModel.chatRunning != true || chatModel.deletedChats.contains(chat.chatInfo.id)) .listRowBackground(Color.clear) @@ -373,7 +370,7 @@ struct ChatListView: View { } else { ForEach(cs, id: \.viewId) { chat in ChatListNavLink(chat: chat, parentSheet: $sheet) -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .listRowSeparator(.hidden) .listRowInsets(EdgeInsets()) .background { theme.colors.background } // Hides default list selection colour @@ -383,14 +380,14 @@ struct ChatListView: View { if !oneHandUICardShown { OneHandUICard() .padding(.vertical, 6) -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .listRowSeparator(.hidden) .listRowBackground(Color.clear) } if !addressCreationCardShown { AddressCreationCard() .padding(.vertical, 6) -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .listRowSeparator(.hidden) .listRowBackground(Color.clear) } @@ -415,7 +412,7 @@ struct ChatListView: View { } if cs.isEmpty && !chatModel.chats.isEmpty { noChatsView() -// .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) + .scaleEffect(x: 1, y: oneHandUI ? -1 : 1, anchor: .center) .foregroundColor(.secondary) } } diff --git a/apps/ios/Shared/Views/NewChat/NewChatMenuButton.swift b/apps/ios/Shared/Views/NewChat/NewChatMenuButton.swift index 113fce3c86..40237f4735 100644 --- a/apps/ios/Shared/Views/NewChat/NewChatMenuButton.swift +++ b/apps/ios/Shared/Views/NewChat/NewChatMenuButton.swift @@ -69,18 +69,18 @@ struct NewChatSheet: View { }.onDisappear { ConnectProgressManager.shared.cancelConnectProgress() } -// if #available(iOS 16.0, *), oneHandUI { -// let sheetHeight: CGFloat = showArchive ? 575 : 500 -// v.presentationDetents( -// allowSmallSheet ? [.height(sheetHeight), .large] : [.large], -// selection: Binding( -// get: { isLargeSheet || !allowSmallSheet ? .large : .height(sheetHeight) }, -// set: { isLargeSheet = $0 == .large } -// ) -// ) -// } else { + if #available(iOS 16.0, *), oneHandUI { + let sheetHeight: CGFloat = showArchive ? 575 : 500 + v.presentationDetents( + allowSmallSheet ? [.height(sheetHeight), .large] : [.large], + selection: Binding( + get: { isLargeSheet || !allowSmallSheet ? .large : .height(sheetHeight) }, + set: { isLargeSheet = $0 == .large } + ) + ) + } else { v -// } + } } private func viewBody(_ showArchive: Bool) -> some View { diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 029e05f385..8728893181 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -2003,7 +2003,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2053,7 +2053,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2095,7 +2095,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2115,7 +2115,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2140,7 +2140,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -2177,7 +2177,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -2214,7 +2214,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2265,7 +2265,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2316,7 +2316,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2350,7 +2350,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 308; + CURRENT_PROJECT_VERSION = 307; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17;