diff --git a/submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift b/submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift index e6772908f7..e1baf72df7 100644 --- a/submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift +++ b/submodules/SettingsUI/Sources/Data and Storage/StorageUsageController.swift @@ -287,7 +287,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals return cacheSettings }) - var presentControllerImpl: ((ViewController, Any?) -> Void)? + var presentControllerImpl: ((ViewController, PresentationContextType, Any?) -> Void)? let statsPromise = Promise() let resetStats: () -> Void = { @@ -341,7 +341,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals ActionSheetItemGroup(items: timeoutItems), ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) ]) - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + presentControllerImpl?(controller, .window(.root), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) }, openClearAll: { let _ = (statsPromise.get() |> take(1) @@ -508,7 +508,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: { cancelImpl?() })) - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + presentControllerImpl?(controller, .window(.root), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) return ActionDisposable { [weak controller] in Queue.mainQueue().async() { controller?.dismiss() @@ -533,7 +533,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals |> deliverOnMainQueue).start(completed: { statsPromise.set(.single(.result(resultStats))) let deviceName = UIDevice.current.userInterfaceIdiom == .pad ? "iPad" : "iPhone" - presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .succeed(text: presentationData.strings.ClearCache_Success("\(dataSizeString(totalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))", deviceName).0), elevatedLayout: false, action: { _ in }), nil) + presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .succeed(text: presentationData.strings.ClearCache_Success("\(dataSizeString(totalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))", deviceName).0), elevatedLayout: false, action: { _ in }), .current, nil) })) } @@ -544,7 +544,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals ActionSheetItemGroup(items: items), ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) ]) - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + presentControllerImpl?(controller, .window(.root), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) } } }) @@ -576,12 +576,14 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals var sizeIndex: [PeerCacheUsageCategory: (Bool, Int64)] = [:] - var itemIndex = 0 + var itemIndex = 1 + var finalSize: Int64 = 0 let updateTotalSize: () -> Void = { [weak controller] in controller?.updateItem(groupIndex: 0, itemIndex: itemIndex, { item in let title: String let filteredSize = sizeIndex.values.reduce(0, { $0 + ($1.0 ? $1.1 : 0) }) + finalSize = filteredSize if filteredSize == 0 { title = presentationData.strings.Cache_ClearNone @@ -633,6 +635,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals } } } + finalSize = totalSize if !items.isEmpty { items.append(ActionSheetButtonItem(title: presentationData.strings.Cache_Clear("\(dataSizeString(totalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))").0, action: { @@ -687,7 +690,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: { cancelImpl?() })) - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + presentControllerImpl?(controller, .window(.root), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) return ActionDisposable { [weak controller] in Queue.mainQueue().async() { controller?.dismiss() @@ -712,7 +715,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals |> deliverOnMainQueue).start(completed: { statsPromise.set(.single(.result(resultStats))) let deviceName = UIDevice.current.userInterfaceIdiom == .pad ? "iPad" : "iPhone" - presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .succeed(text: presentationData.strings.ClearCache_Success("\(dataSizeString(totalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))", deviceName).0), elevatedLayout: false, action: { _ in }), nil) + presentControllerImpl?(UndoOverlayController(presentationData: presentationData, content: .succeed(text: presentationData.strings.ClearCache_Success("\(dataSizeString(finalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))", deviceName).0), elevatedLayout: false, action: { _ in }), .current, nil) })) } @@ -723,7 +726,7 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals ActionSheetItemGroup(items: items), ActionSheetItemGroup(items: [ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, action: { dismissAction() })]) ]) - presentControllerImpl?(controller, ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) + presentControllerImpl?(controller, .window(.root), ViewControllerPresentationArguments(presentationAnimation: .modalSheet)) } } } @@ -747,8 +750,8 @@ public func storageUsageController(context: AccountContext, isModal: Bool = fals } let controller = ItemListController(context: context, state: signal) - presentControllerImpl = { [weak controller] c, a in - controller?.present(c, in: .window(.root), with: a) + presentControllerImpl = { [weak controller] c, contextType, a in + controller?.present(c, in: contextType, with: a) } dismissImpl = { [weak controller] in controller?.dismiss() diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift index 19dd862757..7660d6d33f 100644 --- a/submodules/TelegramUI/TelegramUI/ChatController.swift +++ b/submodules/TelegramUI/TelegramUI/ChatController.swift @@ -5019,7 +5019,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G } else { self?.chatDisplayNode.historyNode.historyAppearsCleared = false } - }), in: .window(.root)) + }), in: .current) } let actionSheet = ActionSheetController(presentationTheme: self.presentationData.theme) @@ -5133,12 +5133,14 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G var sizeIndex: [PeerCacheUsageCategory: (Bool, Int64)] = [:] - var itemIndex = 0 + var itemIndex = 1 + var finalSize: Int64 = 0 let updateTotalSize: () -> Void = { [weak controller] in controller?.updateItem(groupIndex: 0, itemIndex: itemIndex, { item in let title: String let filteredSize = sizeIndex.values.reduce(0, { $0 + ($1.0 ? $1.1 : 0) }) + finalSize = filteredSize if filteredSize == 0 { title = presentationData.strings.Cache_ClearNone @@ -5172,6 +5174,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G let validCategories: [PeerCacheUsageCategory] = [.image, .video, .audio, .file] var totalSize: Int64 = 0 + finalSize = totalSize func stringForCategory(strings: PresentationStrings, category: PeerCacheUsageCategory) -> String { switch category { @@ -5224,20 +5227,6 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G media[peerId] = categories } -// if let additionalPeerId = additionalPeerId { -// if var categories = media[additionalPeerId] { -// for category in clearCategories { -// if let contents = categories[category] { -// for (mediaId, _) in contents { -// clearMediaIds.insert(mediaId) -// } -// } -// categories.removeValue(forKey: category) -// } -// -// media[additionalPeerId] = categories -// } -// } var clearResourceIds = Set() for id in clearMediaIds { @@ -5282,7 +5271,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G |> deliverOnMainQueue).start(completed: { [weak self] in if let strongSelf = self, let layout = strongSelf.validLayout { let deviceName = UIDevice.current.userInterfaceIdiom == .pad ? "iPad" : "iPhone" - strongSelf.present(UndoOverlayController(presentationData: presentationData, content: .succeed(text: presentationData.strings.ClearCache_Success("\(dataSizeString(totalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))", deviceName).0), elevatedLayout: true, action: { _ in }), in: .window(.root)) + strongSelf.present(UndoOverlayController(presentationData: presentationData, content: .succeed(text: presentationData.strings.ClearCache_Success("\(dataSizeString(finalSize, decimalSeparator: presentationData.dateTimeFormat.decimalSeparator))", deviceName).0), elevatedLayout: true, action: { _ in }), in: .current) } }))