diff --git a/submodules/SettingsUI/Sources/DebugController.swift b/submodules/SettingsUI/Sources/DebugController.swift index 80e166ea34..122b73b9c7 100644 --- a/submodules/SettingsUI/Sources/DebugController.swift +++ b/submodules/SettingsUI/Sources/DebugController.swift @@ -64,6 +64,7 @@ private enum DebugControllerEntry: ItemListNodeEntry { case reimport(PresentationTheme) case resetData(PresentationTheme) case resetDatabase(PresentationTheme) + case resetDatabaseAndCache(PresentationTheme) case resetHoles(PresentationTheme) case reindexUnread(PresentationTheme) case resetBiometricsData(PresentationTheme) @@ -89,7 +90,7 @@ private enum DebugControllerEntry: ItemListNodeEntry { return DebugControllerSection.logging.rawValue case .enableRaiseToSpeak, .keepChatNavigationStack, .skipReadHistory, .crashOnSlowQueries: return DebugControllerSection.experiments.rawValue - case .clearTips, .reimport, .resetData, .resetDatabase, .resetHoles, .reindexUnread, .resetBiometricsData, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .alternativeFolderTabs, .playerEmbedding, .playlistPlayback: + case .clearTips, .reimport, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetBiometricsData, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .alternativeFolderTabs, .playerEmbedding, .playlistPlayback: return DebugControllerSection.experiments.rawValue case .preferredVideoCodec: return DebugControllerSection.videoExperiments.rawValue @@ -134,12 +135,14 @@ private enum DebugControllerEntry: ItemListNodeEntry { return 14 case .resetDatabase: return 15 - case .resetHoles: + case .resetDatabaseAndCache: return 16 - case .reindexUnread: + case .resetHoles: return 17 - case .resetBiometricsData: + case .reindexUnread: return 18 + case .resetBiometricsData: + return 19 case .optimizeDatabase: return 20 case .photoPreview: @@ -478,6 +481,29 @@ private enum DebugControllerEntry: ItemListNodeEntry { ])]) arguments.presentController(actionSheet, nil) }) + case let .resetDatabaseAndCache(theme): + return ItemListActionItem(presentationData: presentationData, title: "Clear Database and Cache", kind: .destructive, alignment: .natural, sectionId: self.section, style: .blocks, action: { + guard let context = arguments.context else { + return + } + let presentationData = arguments.sharedContext.currentPresentationData.with { $0 } + let actionSheet = ActionSheetController(presentationData: presentationData) + actionSheet.setItemGroups([ActionSheetItemGroup(items: [ + ActionSheetTextItem(title: "All secret chats will be lost."), + ActionSheetButtonItem(title: "Clear Database", color: .destructive, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + let databasePath = context.account.basePath + "/postbox" + let _ = try? FileManager.default.removeItem(atPath: databasePath) + exit(0) + preconditionFailure() + }), + ]), ActionSheetItemGroup(items: [ + ActionSheetButtonItem(title: presentationData.strings.Common_Cancel, color: .accent, font: .bold, action: { [weak actionSheet] in + actionSheet?.dismissAnimated() + }) + ])]) + arguments.presentController(actionSheet, nil) + }) case let .resetHoles(theme): return ItemListActionItem(presentationData: presentationData, title: "Reset Holes", kind: .destructive, alignment: .natural, sectionId: self.section, style: .blocks, action: { guard let context = arguments.context else { @@ -647,6 +673,7 @@ private func debugControllerEntries(presentationData: PresentationData, loggingS } entries.append(.resetData(presentationData.theme)) entries.append(.resetDatabase(presentationData.theme)) + entries.append(.resetDatabaseAndCache(presentationData.theme)) entries.append(.resetHoles(presentationData.theme)) entries.append(.reindexUnread(presentationData.theme)) entries.append(.optimizeDatabase(presentationData.theme)) diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index 50910c75cc..64b20e876f 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -545,7 +545,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[480546647] = { return Api.InputChatPhoto.parse_inputChatPhotoEmpty($0) } dict[-1991004873] = { return Api.InputChatPhoto.parse_inputChatPhoto($0) } dict[-968723890] = { return Api.InputChatPhoto.parse_inputChatUploadedPhoto($0) } - dict[742337250] = { return Api.messages.MessageViews.parse_messageViews($0) } + dict[-1228606141] = { return Api.messages.MessageViews.parse_messageViews($0) } dict[-368917890] = { return Api.PaymentCharge.parse_paymentCharge($0) } dict[-1387279939] = { return Api.MessageInteractionCounters.parse_messageInteractionCounters($0) } dict[-1107852396] = { return Api.stats.BroadcastStats.parse_broadcastStats($0) } diff --git a/submodules/TelegramApi/Sources/Api1.swift b/submodules/TelegramApi/Sources/Api1.swift index f503c6f6b1..c198b11453 100644 --- a/submodules/TelegramApi/Sources/Api1.swift +++ b/submodules/TelegramApi/Sources/Api1.swift @@ -1283,13 +1283,13 @@ public struct messages { } public enum MessageViews: TypeConstructorDescription { - case messageViews(views: [Api.MessageViews], users: [Api.User]) + case messageViews(views: [Api.MessageViews], chats: [Api.Chat], users: [Api.User]) public func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { - case .messageViews(let views, let users): + case .messageViews(let views, let chats, let users): if boxed { - buffer.appendInt32(742337250) + buffer.appendInt32(-1228606141) } buffer.appendInt32(481674261) buffer.appendInt32(Int32(views.count)) @@ -1297,6 +1297,11 @@ public struct messages { item.serialize(buffer, true) } buffer.appendInt32(481674261) + buffer.appendInt32(Int32(chats.count)) + for item in chats { + item.serialize(buffer, true) + } + buffer.appendInt32(481674261) buffer.appendInt32(Int32(users.count)) for item in users { item.serialize(buffer, true) @@ -1307,8 +1312,8 @@ public struct messages { public func descriptionFields() -> (String, [(String, Any)]) { switch self { - case .messageViews(let views, let users): - return ("messageViews", [("views", views), ("users", users)]) + case .messageViews(let views, let chats, let users): + return ("messageViews", [("views", views), ("chats", chats), ("users", users)]) } } @@ -1317,14 +1322,19 @@ public struct messages { if let _ = reader.readInt32() { _1 = Api.parseVector(reader, elementSignature: 0, elementType: Api.MessageViews.self) } - var _2: [Api.User]? + var _2: [Api.Chat]? if let _ = reader.readInt32() { - _2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self) + _2 = Api.parseVector(reader, elementSignature: 0, elementType: Api.Chat.self) + } + var _3: [Api.User]? + if let _ = reader.readInt32() { + _3 = Api.parseVector(reader, elementSignature: 0, elementType: Api.User.self) } let _c1 = _1 != nil let _c2 = _2 != nil - if _c1 && _c2 { - return Api.messages.MessageViews.messageViews(views: _1!, users: _2!) + let _c3 = _3 != nil + if _c1 && _c2 && _c3 { + return Api.messages.MessageViews.messageViews(views: _1!, chats: _2!, users: _3!) } else { return nil diff --git a/submodules/TelegramCore/Sources/AccountViewTracker.swift b/submodules/TelegramCore/Sources/AccountViewTracker.swift index f45facead7..4e41bdc7cb 100644 --- a/submodules/TelegramCore/Sources/AccountViewTracker.swift +++ b/submodules/TelegramCore/Sources/AccountViewTracker.swift @@ -616,7 +616,7 @@ public final class AccountViewTracker { return .single(nil) } |> mapToSignal { result -> Signal in - guard case let .messageViews(viewCounts, users)? = result else { + guard case let .messageViews(viewCounts, chats, users)? = result else { return .complete() } @@ -631,6 +631,11 @@ public final class AccountViewTracker { peerPresences[telegramUser.id] = presence } } + for chat in chats { + if let groupOrChannel = parseTelegramGroupOrChannel(chat: chat) { + peers.append(groupOrChannel) + } + } updatePeers(transaction: transaction, peers: peers, update: { _, updated -> Peer in return updated diff --git a/submodules/TelegramCore/Sources/ReplyThreadHistory.swift b/submodules/TelegramCore/Sources/ReplyThreadHistory.swift index 1fb838361d..441840fa2c 100644 --- a/submodules/TelegramCore/Sources/ReplyThreadHistory.swift +++ b/submodules/TelegramCore/Sources/ReplyThreadHistory.swift @@ -274,7 +274,7 @@ public func fetchChannelReplyThreadMessage(account: Account, messageId: MessageI } var maxId: Int32? switch result { - case let .messageViews(views, _): + case let .messageViews(views, _, _): for view in views { switch view { case let .messageViews(_, _, _, replies):