From 2d7c7e81f1d61ba4c0883c4da2c81eb7dacc8812 Mon Sep 17 00:00:00 2001 From: Ilya Laktyushin Date: Sun, 18 Dec 2022 20:01:01 +0400 Subject: [PATCH] Various fixes --- .../Telegram-iOS/en.lproj/Localizable.strings | 14 +- ...ectivePrivacySettingsPeersController.swift | 207 ++++++++++++------ .../BrushArrow.imageset/Contents.json | 21 -- .../BrushArrow.imageset/arrowTip.png | Bin 361 -> 0 bytes .../BrushBlur.imageset/Contents.json | 21 -- .../BrushBlur.imageset/blurTip.png | Bin 2077 -> 0 bytes .../BrushRemove.imageset/Contents.json | 21 -- .../BrushRemove.imageset/xmarkTip.png | Bin 400 -> 0 bytes .../BrushRound.imageset/Contents.json | 21 -- .../BrushRound.imageset/roundTip.png | Bin 428 -> 0 bytes .../EraserRemove.imageset/Contents.json | 21 -- .../EraserRemove.imageset/EraserRemove.png | Bin 776 -> 0 bytes .../Pencil.imageset/Contents.json | 12 - .../Media Editor/Pencil.imageset/Pencil.png | Bin 1071 -> 0 bytes .../ToolLasso.imageset/Contents.json | 21 -- .../Media Editor/ToolLasso.imageset/lasso.png | Bin 10615 -> 0 bytes .../Sources/PeerInfo/PeerInfoScreen.swift | 20 +- .../Sources/TelegramRootController.swift | 12 + 18 files changed, 180 insertions(+), 211 deletions(-) delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/arrowTip.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/blurTip.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/xmarkTip.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/roundTip.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/EraserRemove.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/Pencil.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/Pencil.imageset/Pencil.png delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/Contents.json delete mode 100644 submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/lasso.png diff --git a/Telegram/Telegram-iOS/en.lproj/Localizable.strings b/Telegram/Telegram-iOS/en.lproj/Localizable.strings index b441c8b19d..d21cd772fb 100644 --- a/Telegram/Telegram-iOS/en.lproj/Localizable.strings +++ b/Telegram/Telegram-iOS/en.lproj/Localizable.strings @@ -8479,14 +8479,16 @@ Sorry for the inconvenience."; "Conversation.SuggestedPhotoTextExpanded" = "%@ suggests you to use this profile photo for your Telegram account."; "Conversation.SuggestedPhotoTextYou" = "You suggested **%@** to use this profile photo."; "Conversation.SuggestedPhotoView" = "View Photo"; -"Conversation.SuggestedPhotoSuccess" = "You have updated your Telegram account photo."; +"Conversation.SuggestedPhotoSuccess" = "Photo updated"; +"Conversation.SuggestedPhotoSuccessText" = "You can change it in [Settings]()."; "Conversation.SuggestedVideoTitle" = "Suggested Video"; "Conversation.SuggestedVideoText" = "**%@** suggests you to use this profile video."; "Conversation.SuggestedVideoTextExpanded" = "%@ suggests you to use this profile video for your Telegram account."; "Conversation.SuggestedVideoTextYou" = "You suggested **%@** to use this profile video."; "Conversation.SuggestedVideoView" = "View Video"; -"Conversation.SuggestedVideoSuccess" = "You have updated your Telegram account video."; +"Conversation.SuggestedVideoSuccess" = "Video updated"; +"Conversation.SuggestedVideoSuccessText" = "You can change it in [Settings]()."; "CacheEvictionMenu.CategoryExceptions_1" = "%@ Exception"; "CacheEvictionMenu.CategoryExceptions_any" = "%@ Exceptions"; @@ -8525,3 +8527,11 @@ Sorry for the inconvenience."; "PeerInfo.HideMembersLimitedParticipantCountText_1" = "Only groups with more than **%d member** can have their member list hidden."; "PeerInfo.HideMembersLimitedParticipantCountText_any" = "Only groups with more than **%d members** can have their member list hidden."; "PeerInfo.HideMembersLimitedRights" = "You don't have permission to change this setting."; + +"Privacy.Exceptions" = "EXCEPTIONS"; +"Privacy.ExceptionsCount_1" = "%@ EXCEPTION"; +"Privacy.ExceptionsCount_any" = "%@ EXCEPTIONS"; +"Privacy.Exceptions.DeleteAllExceptions" = "Delete All Exceptions"; + +"Privacy.Exceptions.DeleteAll" = "Delete All"; +"Privacy.Exceptions.DeleteAllConfirmation" = "Are you sure you want to delete all exceptions?"; diff --git a/submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsPeersController.swift b/submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsPeersController.swift index 74254c9291..7a816370cc 100644 --- a/submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsPeersController.swift +++ b/submodules/SettingsUI/Sources/Privacy and Security/SelectivePrivacySettingsPeersController.swift @@ -19,138 +19,174 @@ private final class SelectivePrivacyPeersControllerArguments { let removePeer: (PeerId) -> Void let addPeer: () -> Void let openPeer: (EnginePeer) -> Void + let deleteAll: () -> Void - init(context: AccountContext, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, removePeer: @escaping (PeerId) -> Void, addPeer: @escaping () -> Void, openPeer: @escaping (EnginePeer) -> Void) { + init(context: AccountContext, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, removePeer: @escaping (PeerId) -> Void, addPeer: @escaping () -> Void, openPeer: @escaping (EnginePeer) -> Void, deleteAll: @escaping () -> Void) { self.context = context self.setPeerIdWithRevealedOptions = setPeerIdWithRevealedOptions self.removePeer = removePeer self.addPeer = addPeer self.openPeer = openPeer + self.deleteAll = deleteAll } } private enum SelectivePrivacyPeersSection: Int32 { - case add case peers + case delete } private enum SelectivePrivacyPeersEntryStableId: Hashable { + case header case add case peer(PeerId) + case delete } private enum SelectivePrivacyPeersEntry: ItemListNodeEntry { case peerItem(Int32, PresentationTheme, PresentationStrings, PresentationDateTimeFormat, PresentationPersonNameOrder, SelectivePrivacyPeer, ItemListPeerItemEditing, Bool) case addItem(PresentationTheme, String, Bool) + case headerItem(PresentationTheme, String) + case deleteItem(PresentationTheme, String) var section: ItemListSectionId { switch self { - case .peerItem: - return SelectivePrivacyPeersSection.peers.rawValue - case .addItem: - return SelectivePrivacyPeersSection.add.rawValue + case .addItem, .peerItem, .headerItem: + return SelectivePrivacyPeersSection.peers.rawValue + case .deleteItem: + return SelectivePrivacyPeersSection.delete.rawValue } } var stableId: SelectivePrivacyPeersEntryStableId { switch self { - case let .peerItem(_, _, _, _, _, peer, _, _): - return .peer(peer.peer.id) - case .addItem: - return .add + case let .peerItem(_, _, _, _, _, peer, _, _): + return .peer(peer.peer.id) + case .addItem: + return .add + case .headerItem: + return .header + case .deleteItem: + return .delete } } static func ==(lhs: SelectivePrivacyPeersEntry, rhs: SelectivePrivacyPeersEntry) -> Bool { switch lhs { case let .peerItem(lhsIndex, lhsTheme, lhsStrings, lhsDateTimeFormat, lhsNameOrder, lhsPeer, lhsEditing, lhsEnabled): - if case let .peerItem(rhsIndex, rhsTheme, rhsStrings, rhsDateTimeFormat, rhsNameOrder, rhsPeer, rhsEditing, rhsEnabled) = rhs { - if lhsIndex != rhsIndex { - return false - } - if lhsPeer != rhsPeer { - return false - } - if lhsTheme !== rhsTheme { - return false - } - if lhsStrings !== rhsStrings { - return false - } - if lhsDateTimeFormat != rhsDateTimeFormat { - return false - } - if lhsNameOrder != rhsNameOrder { - return false - } - if lhsEditing != rhsEditing { - return false - } - if lhsEnabled != rhsEnabled { - return false - } - return true - } else { + if case let .peerItem(rhsIndex, rhsTheme, rhsStrings, rhsDateTimeFormat, rhsNameOrder, rhsPeer, rhsEditing, rhsEnabled) = rhs { + if lhsIndex != rhsIndex { return false } - case let .addItem(lhsTheme, lhsText, lhsEditing): - if case let .addItem(rhsTheme, rhsText, rhsEditing) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsEditing == rhsEditing { - return true - } else { + if lhsPeer != rhsPeer { return false } + if lhsTheme !== rhsTheme { + return false + } + if lhsStrings !== rhsStrings { + return false + } + if lhsDateTimeFormat != rhsDateTimeFormat { + return false + } + if lhsNameOrder != rhsNameOrder { + return false + } + if lhsEditing != rhsEditing { + return false + } + if lhsEnabled != rhsEnabled { + return false + } + return true + } else { + return false + } + case let .addItem(lhsTheme, lhsText, lhsEditing): + if case let .addItem(rhsTheme, rhsText, rhsEditing) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsEditing == rhsEditing { + return true + } else { + return false + } + case let .headerItem(lhsTheme, lhsText): + if case let .headerItem(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { + return true + } else { + return false + } + case let .deleteItem(lhsTheme, lhsText): + if case let .deleteItem(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText { + return true + } else { + return false + } } } static func <(lhs: SelectivePrivacyPeersEntry, rhs: SelectivePrivacyPeersEntry) -> Bool { switch lhs { + case .deleteItem: + return false case let .peerItem(index, _, _, _, _, _, _, _): switch rhs { + case .deleteItem: + return true case let .peerItem(rhsIndex, _, _, _, _, _, _, _): return index < rhsIndex - case .addItem: + case .addItem, .headerItem: return false } case .addItem: switch rhs { - case .peerItem: + case .peerItem, .deleteItem: return true + case .headerItem: + return false default: return false } + case .headerItem: + return true } } func item(presentationData: ItemListPresentationData, arguments: Any) -> ListViewItem { let arguments = arguments as! SelectivePrivacyPeersControllerArguments switch self { - case let .peerItem(_, _, strings, dateTimeFormat, nameDisplayOrder, peer, editing, enabled): - var text: ItemListPeerItemText = .none - if let group = peer.peer as? TelegramGroup { - text = .text(strings.Conversation_StatusMembers(Int32(group.participantCount)), .secondary) - } else if let channel = peer.peer as? TelegramChannel { - if let participantCount = peer.participantCount { - text = .text(strings.Conversation_StatusMembers(Int32(participantCount)), .secondary) - } else { - switch channel.info { - case .group: - text = .text(strings.Group_Status, .secondary) - case .broadcast: - text = .text(strings.Channel_Status, .secondary) - } + case let .peerItem(_, _, strings, dateTimeFormat, nameDisplayOrder, peer, editing, enabled): + var text: ItemListPeerItemText = .none + if let group = peer.peer as? TelegramGroup { + text = .text(strings.Conversation_StatusMembers(Int32(group.participantCount)), .secondary) + } else if let channel = peer.peer as? TelegramChannel { + if let participantCount = peer.participantCount { + text = .text(strings.Conversation_StatusMembers(Int32(participantCount)), .secondary) + } else { + switch channel.info { + case .group: + text = .text(strings.Group_Status, .secondary) + case .broadcast: + text = .text(strings.Channel_Status, .secondary) } } - return ItemListPeerItem(presentationData: presentationData, dateTimeFormat: dateTimeFormat, nameDisplayOrder: nameDisplayOrder, context: arguments.context, peer: EnginePeer(peer.peer), presence: nil, text: text, label: .none, editing: editing, switchValue: nil, enabled: enabled, selectable: true, sectionId: self.section, action: { - arguments.openPeer(EnginePeer(peer.peer)) - }, setPeerIdWithRevealedOptions: { previousId, id in - arguments.setPeerIdWithRevealedOptions(previousId, id) - }, removePeer: { peerId in - arguments.removePeer(peerId) - }) - case let .addItem(theme, text, editing): - return ItemListPeerActionItem(presentationData: presentationData, icon: PresentationResourcesItemList.plusIconImage(theme), title: text, sectionId: self.section, editing: editing, action: { + } + return ItemListPeerItem(presentationData: presentationData, dateTimeFormat: dateTimeFormat, nameDisplayOrder: nameDisplayOrder, context: arguments.context, peer: EnginePeer(peer.peer), presence: nil, text: text, label: .none, editing: editing, switchValue: nil, enabled: enabled, selectable: true, sectionId: self.section, action: { + arguments.openPeer(EnginePeer(peer.peer)) + }, setPeerIdWithRevealedOptions: { previousId, id in + arguments.setPeerIdWithRevealedOptions(previousId, id) + }, removePeer: { peerId in + arguments.removePeer(peerId) + }) + case let .addItem(theme, text, editing): + return ItemListPeerActionItem(presentationData: presentationData, icon: PresentationResourcesItemList.plusIconImage(theme), title: text, sectionId: self.section, height: .compactPeerList, editing: editing, action: { arguments.addPeer() }) + case let .headerItem(_, text): + return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section) + case let .deleteItem(_, text): + return ItemListActionItem(presentationData: presentationData, title: text, kind: .destructive, alignment: .center, sectionId: self.section, style: .blocks, action: { + arguments.deleteAll() + }) } } } @@ -191,6 +227,13 @@ private struct SelectivePrivacyPeersControllerState: Equatable { private func selectivePrivacyPeersControllerEntries(presentationData: PresentationData, state: SelectivePrivacyPeersControllerState, peers: [SelectivePrivacyPeer]) -> [SelectivePrivacyPeersEntry] { var entries: [SelectivePrivacyPeersEntry] = [] + let title: String + if peers.isEmpty { + title = presentationData.strings.Privacy_Exceptions + } else { + title = presentationData.strings.Privacy_ExceptionsCount(Int32(peers.count)) + } + entries.append(.headerItem(presentationData.theme, title)) entries.append(.addItem(presentationData.theme, presentationData.strings.Privacy_AddNewPeer, state.editing)) var index: Int32 = 0 @@ -199,6 +242,10 @@ private func selectivePrivacyPeersControllerEntries(presentationData: Presentati index += 1 } + if !peers.isEmpty { + entries.append(.deleteItem(presentationData.theme, presentationData.strings.Privacy_Exceptions_DeleteAllExceptions)) + } + return entries } @@ -328,6 +375,34 @@ public func selectivePrivacyPeersController(context: AccountContext, title: Stri return } pushControllerImpl?(controller) + }, deleteAll: { + let presentationData = context.sharedContext.currentPresentationData.with { $0 } + let actionSheet = ActionSheetController(presentationData: presentationData) + actionSheet.setItemGroups([ActionSheetItemGroup(items: [ + ActionSheetTextItem(title: presentationData.strings.Privacy_Exceptions_DeleteAllConfirmation), + ActionSheetButtonItem(title: presentationData.strings.Privacy_Exceptions_DeleteAll, color: .destructive, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + + let applyPeers: Signal = peersPromise.get() + |> take(1) + |> deliverOnMainQueue + |> mapToSignal { _ -> Signal in + peersPromise.set(.single([])) + updated([:]) + + dismissImpl?() + + return .complete() + } + + removePeerDisposable.set(applyPeers.start()) + }) + ]), ActionSheetItemGroup(items: [ + ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, font: .bold, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + }) + ])]) + presentControllerImpl?(actionSheet, nil) }) var previousPeers: [SelectivePrivacyPeer]? diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/Contents.json deleted file mode 100644 index 8118e6a70b..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "arrowTip.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/arrowTip.png b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushArrow.imageset/arrowTip.png deleted file mode 100644 index fc129d11fae9bde6665512a9c746ccc850da080b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 361 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~aez;Vt9yaZe-gp@i(QF8?E)o1 ze!&a{3H9e2-rpBcFxcO};6lKsfN3^BxvQQojv*CsZ?B!sI%dGraFiUxcu~a)C^&7AvEP`5`Dez#hxaO+#M?~b_!^GZMt2Pee{Dli@wZ` zT*i(6c~z$bIB}L{eEjCz^*p^<$X;}Qz~_F;^n5m3nRP~y(`uP7c^W_U=U8J2^dN($ LtDnm{r-UW|_JXbl diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/Contents.json deleted file mode 100644 index db896561d2..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "blurTip.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/blurTip.png b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushBlur.imageset/blurTip.png deleted file mode 100644 index bf79edd1e941f37875a28b8ca36b2e13ca4da8ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2077 zcmV+&2;%pNP)&YaL1d>31o&=IW z5=a6`paPnhzHVaL_vKnaX+#2RC?P(Th*L=Z*@31pB(4Q;gG!vjwf z0y&Vu2t8Dh#EZJJK#>>7?9mrWyO=84G zKtUn@KlAt;SwAUgO&u2o-yuZV56W3VYQzvC`v2;T#wd*zfvHg#^{)u>kh3vT2Hqe8 zL=M$}lcVLRoC*q|;V~ZKzFLsaaE^r&1P9n5Xd~q;MNVV{&<*9d9VFE7M_JuB3i1#X zGGNTWlz|kGa#pf)Ql1+k$6Ym)Mg~vhlt`<1O!xJIz!kJa1UqPOTFsZEJEuZKju<5$ z2x`7vP{5!nXag!|<>Wvtay*7?rJO>_c?eEWiJY&x#XL}=fuI#2X!0nJ)lWdn0N$D@G8l>>#yxg+Qy%eq8P3tF_Ef^QS# zA;Aq6>T-s3Sdhx$F^L}KDrZ=Za7T{pA9fFy-0Dj6PC+{c3`GcXCh7rx@7p&E-pH*e z3OD3}v6WX1HK&9I24{$x6O9=e4pQ^f z$pX5;zgQ_pM~TS?Zb zlvY-60LP2*NHRDWE$onRD4A60-#igO4`>SBu&%U@sdya&V8QURi$bH4_?ZD~uw(rFK>$gz>2vRYH3_!j)$B5Ldf*`tQzgv7>> zTMGVqpfV{Sc{(?{RRL`ZmL4$ha}+f;*OWHbQ0!J?)Ek3ibCxD`J1`#9vYzAnq=00D zUa3ghF;FzS)*A})O!AZ}Og)>B_a(xq0cTzEl;5y}QdH@n6v=wNcTxhnPB!VTY1`y* zaw#)7HQ+F%dPpfQp)Pk{A3CQfnJ2#R++tE}(TKpNRV? z&Sk?8xEQ$v(0UZb*z+#46#Fq1pvMk$o2Aw^^BmoR8@albM~-A2%Ub=I)`fK|H{sUl zD*;Ysk+TSg;P(T4ngo#2>lT4wI@QjtC=(1;hoRf3Qe|*fY;53|;ec}bOL(5C zc}uUS0`ydLH4|>-Xy-7xyh9b9QXV)EqjK(*y0L0`v@9xpxPt$+8$)o#}^Wm*80R(4EYz zYx%6hIVWS}ph?hpyOa`8vxJ@+JgnUb>&H==tnGZ>0is z&4I2596rz(4>Ujx!s6NJ1g_GyMH{!eV+9$uEe?vQ)jiM`2l_A-pbbsZh#WkO!NK=_ zRXoPsm0vXGrZq&5U^S+B<$ktD4&mtgmy@j;dWgFKM>m6GkvjF(Gdiketc)%Y?IOnG;tZu zFs+ZJf#j*wWAym<>R!XtfJ)6mQ{H&G$7A4Fke6Y0864B!wQ_d|7&Q_=^`YMm^!bV0 zY6wooi#@dR=9FGc&M+k)M$szkkSl^CnZa&=%n3xt%3+hL zAUmAD_n6R43%2%TfY9C-d}=n)30xo?TBIh}q``!2wrvE(!AK)~|NA_yo+sG7B${2C zklC&N-p|SCOk%GhpuWB@O(Q!zKgeP(Z+F-!Od&0axGSd+yooQi-;$>ftGPPa1$S-kTE+&9?{+?(n_tu=dcItfkZTmMd-{uufo0&k#9& zMIHJ%n2woRQ^GlQfTR^#ru1?GID9RJ4ncv9oG&;`;1-3*^KXo(loxq;ik7N#IPW>t%9d72dPnc5f z1j_7sTW@9*OsTU7h@jrl%S+!WN`4cRnb#Xd$2SLh_du`7Lw;WWMtQD3^=!7ohl++5 zb<254+S9MSexOhEXN&f8^Yi=G0%`%ZfLcH;pcYUIsQvaAG!k)v*p0Am00000NkvXX Hu0mjfvFy$} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/Contents.json deleted file mode 100644 index 9c0eb53ecf..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "xmarkTip.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/xmarkTip.png b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRemove.imageset/xmarkTip.png deleted file mode 100644 index 4599befbfdaf25f8ed5bd87f9260527278c5ead2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 400 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~S%6Q7t9yaZf6_r)(3xnU34$d- ze!&dy_dA@AR}g5JpKyOdLH&XaLMNX+21@?$ba4!+h2+Hi7RnKIv6JkgV4(VZ}_pqu%OP ziVi?sixzv9m}Isldu;r1fvsK0JnX@YOSfB%WP-i)LX>2@qne_dl07H$KjmN-vdcN= uZvF0BTwKALWl`53y{TOPJ6|5?8UBV;mx4b^|Eqyvz~JfX=d#Wzp$P!pE5Z=~ diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/Contents.json deleted file mode 100644 index 7ef95b8810..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "roundTip.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/roundTip.png b/submodules/TelegramUI/Images.xcassets/Media Editor/BrushRound.imageset/roundTip.png deleted file mode 100644 index dbc11b4eea8fdaa22cf1c31430cfb1f342f73e57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~O@L2`t9yaZe{wUIX3zmzXq>!6(@ZD}HnKGfSxC3UU{{ndJZ)`o~9JKS{;k7D}$v!_%E(k5#t^13A YZ-}RWpV&)rV6ZWGy85}Sb4q9e03QX@i~s-t diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/Contents.json deleted file mode 100644 index 058c5b2ec5..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "EraserRemove.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/EraserRemove.png b/submodules/TelegramUI/Images.xcassets/Media Editor/EraserRemove.imageset/EraserRemove.png deleted file mode 100644 index b5456be6f0563dc305174dfd814386a8032c7edb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 776 zcmV+j1NZ!iP)W0>)at@EwW$pS3t zZf{q%zX!xNb zxYMB|s_@J95$^P@F)Mtg!!8Z#M|%MtPU_Fr+D{-%e|Y2}Ybo&G+Oa?0$K6Hp5^>>6 zCgF*OG{htl!tYTEeAu1Y>&O~*iPZ4^#I4W8`Wx_P_c_GFCPDe+n^|jt-PAO!1nsbK z=gn)=(S>Yd?HP2>NQaQ7SZa7beV#SMG-w;0}*;3Lsn( z65)|v0VG#KDm)S;fKVmC>5o$3k!S&gA^``t!~MjEN0I~(fXdgX~{B$N~)E16dLz0mkqFvP80gK==SjB1u3nd>~mOT7Y^>T)mB0dm1H> zdp|GPWA_ShH6v0IodVpQl!Qd9fK(gEE%B&;WDkpQN*oDDhYxT`>@P756h6QqQ40(m zK9DO>3f%Y=np;r+Ac_3&0gA*caG!C-vg`+L+ZXp*;0urJUMuaV{kuvyG&GawQs(dh zg2V(L5<4=P@BxBEEwJhzDjPl!E8&-!{^GV0=qnf|d>}^R4&Xa(bycuxDZnXfK4kbn zhXiIa)ynGrg$x(GbpccSqeoG|y3nxn17nw8MR<;xSh)vib{Z5p$vaa30000T`U}*o zfoF_!Qe&*rZtjc>q)G^71=v)+2WHm40dn^>q6>VgO(`MeXTZ0jqhe;Qyq9Lyarcfu z$^t49G*^IM+`VOH{elwzDzF25q^KYS@Vx*J%mQEEDIp3jjZ@8qGOS< znig|TJte4qplJ58h}^ySw_YdjM~tuYZGzJGiCiL(+Hg1|Nsf5WI#E{( zGxlWH!!c37k5KWNyJuH(5BMXuX_>g~6|{wnc{l-A1F)t=H@8z+F-CSU^RAmVkGG_ZSNzB}(B)O!V^CyQ!(}%F9HQwdDO> z*|msTvRvI|1zOQO7Ff^B(n(GW#AS6V&+dt`^$EKQP&KpQJ3Ji#Z83tGwcWiq>mwz* z$U5?7Df^?*XmlATcjkwPnYGO<`)rc|x`& pMRExg|I6XG4tG!7J^8=S{S!|QkRFRF-WdP@002ovPDHLkV1l{H`AGl( diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/Contents.json b/submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/Contents.json deleted file mode 100644 index 3ee8a92135..0000000000 --- a/submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/Contents.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "scale" : "1x" - }, - { - "idiom" : "universal", - "scale" : "2x" - }, - { - "filename" : "lasso.png", - "idiom" : "universal", - "scale" : "3x" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/lasso.png b/submodules/TelegramUI/Images.xcassets/Media Editor/ToolLasso.imageset/lasso.png deleted file mode 100644 index f24e75524298123eb946bae65ab09e12d41ebd7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10615 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 Void)? - if [.suggest, .fallback].contains(mode) { + if [.suggest, .fallback, .accept].contains(mode) { let statusController = OverlayStatusController(theme: self.presentationData.theme, type: .loading(cancelled: { [weak self] in self?.updateAvatarDisposable.set(nil) dismissStatus?() @@ -6851,7 +6851,12 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate })) } case .accept: - (strongSelf.controller?.parentController?.topViewController as? ViewController)?.present(UndoOverlayController(presentationData: strongSelf.presentationData, content: .image(image: image, title: nil, text: strongSelf.presentationData.strings.Conversation_SuggestedPhotoSuccess, round: true, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { _ in return false }), in: .current) + (strongSelf.controller?.parentController?.topViewController as? ViewController)?.present(UndoOverlayController(presentationData: strongSelf.presentationData, content: .image(image: image, title: strongSelf.presentationData.strings.Conversation_SuggestedPhotoSuccess, text: strongSelf.presentationData.strings.Conversation_SuggestedPhotoSuccessText, round: true, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { [weak self] action in + if case .info = action { + self?.controller?.parentController?.openSettings() + } + return false + }), in: .current) default: break } @@ -6974,7 +6979,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate } var dismissStatus: (() -> Void)? - if [.suggest, .fallback].contains(mode) { + if [.suggest, .fallback, .accept].contains(mode) { let statusController = OverlayStatusController(theme: self.presentationData.theme, type: .loading(cancelled: { [weak self] in self?.updateAvatarDisposable.set(nil) dismissStatus?() @@ -7048,7 +7053,12 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate })) } case .accept: - (strongSelf.controller?.parentController?.topViewController as? ViewController)?.present(UndoOverlayController(presentationData: strongSelf.presentationData, content: .image(image: image, title: nil, text: strongSelf.presentationData.strings.Conversation_SuggestedVideoSuccess, round: true, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { _ in return false }), in: .current) + (strongSelf.controller?.parentController?.topViewController as? ViewController)?.present(UndoOverlayController(presentationData: strongSelf.presentationData, content: .image(image: image, title: strongSelf.presentationData.strings.Conversation_SuggestedVideoSuccess, text: strongSelf.presentationData.strings.Conversation_SuggestedVideoSuccessText, round: true, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { [weak self] action in + if case .info = action { + self?.controller?.parentController?.openSettings() + } + return false + }), in: .current) default: break } @@ -7158,7 +7168,7 @@ final class PeerInfoScreenNode: ViewControllerTracingNode, UIScrollViewDelegate guard let strongSelf = self else { return } - let controller = WebSearchController(context: strongSelf.context, updatedPresentationData: strongSelf.controller?.updatedPresentationData, peer: peer, chatLocation: nil, configuration: searchBotsConfiguration, mode: .avatar(initialQuery: strongSelf.isSettings ? nil : peer.displayTitle(strings: presentationData.strings, displayOrder: presentationData.nameDisplayOrder), completion: { [weak self] result in + let controller = WebSearchController(context: strongSelf.context, updatedPresentationData: strongSelf.controller?.updatedPresentationData, peer: peer, chatLocation: nil, configuration: searchBotsConfiguration, mode: .avatar(initialQuery: strongSelf.isSettings ? nil : peer.compactDisplayTitle, completion: { [weak self] result in assetsController?.dismiss() self?.updateProfilePhoto(result, mode: mode) })) diff --git a/submodules/TelegramUI/Sources/TelegramRootController.swift b/submodules/TelegramUI/Sources/TelegramRootController.swift index 6e8cd5698d..b7a912a8ad 100644 --- a/submodules/TelegramUI/Sources/TelegramRootController.swift +++ b/submodules/TelegramUI/Sources/TelegramRootController.swift @@ -188,4 +188,16 @@ public final class TelegramRootController: NavigationController { controller.view.endEditing(true) presentedLegacyShortcutCamera(context: self.context, saveCapturedMedia: false, saveEditedPhotos: false, mediaGrouping: true, parentController: controller) } + + public func openSettings() { + guard let rootTabController = self.rootTabController else { + return + } + + self.popToRoot(animated: false) + + if let index = rootTabController.controllers.firstIndex(where: { $0 is PeerInfoScreenImpl }) { + rootTabController.selectedIndex = index + } + } }