Add a debug option for disabling quick reactions (by utsavDave97)

This commit is contained in:
Ali
2022-12-25 20:10:32 +04:00
parent d826bd06c0
commit a188b485f2
4 changed files with 32 additions and 7 deletions

View File

@@ -8569,8 +8569,8 @@ Sorry for the inconvenience.";
"StorageManagement.TitleCleared" = "Storage Cleared";
"StorageManagement.DescriptionCleared" = "All media can be re-downloaded from the Telegram cloud if you need it again.";
"StorageManagement.DescriptionChatUsage" = "This chat uses %1$@%% of your Telegram cache.";
"StorageManagement.DescriptionAppUsage" = "Telegram uses %1$@%% of your free disk space.";
"StorageManagement.DescriptionChatUsage" = "This chat uses %1$@% of your Telegram cache.";
"StorageManagement.DescriptionAppUsage" = "Telegram uses %1$@% of your free disk space.";
"StorageManagement.ClearAll" = "Clear All Cache";
"StorageManagement.ClearSelected" = "Clear Selected";

View File

@@ -93,6 +93,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
case enableReactionOverrides(Bool)
case playerEmbedding(Bool)
case playlistPlayback(Bool)
case enableQuickReactionSwitch(Bool)
case voiceConference
case preferredVideoCodec(Int, String, String?, Bool)
case disableVideoAspectScaling(Bool)
@@ -113,7 +114,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
return DebugControllerSection.logging.rawValue
case .enableRaiseToSpeak, .keepChatNavigationStack, .skipReadHistory, .crashOnSlowQueries:
return DebugControllerSection.experiments.rawValue
case .clearTips, .crash, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetCacheIndex, .reindexCache, .resetBiometricsData, .resetWebViewCache, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .playerEmbedding, .playlistPlayback, .voiceConference, .experimentalCompatibility, .enableDebugDataDisplay, .acceleratedStickers, .experimentalBackground, .inlineForums, .localTranscription, . enableReactionOverrides, .restorePurchases:
case .clearTips, .crash, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetCacheIndex, .reindexCache, .resetBiometricsData, .resetWebViewCache, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .playerEmbedding, .playlistPlayback, .enableQuickReactionSwitch, .voiceConference, .experimentalCompatibility, .enableDebugDataDisplay, .acceleratedStickers, .experimentalBackground, .inlineForums, .localTranscription, . enableReactionOverrides, .restorePurchases:
return DebugControllerSection.experiments.rawValue
case .preferredVideoCodec:
return DebugControllerSection.videoExperiments.rawValue
@@ -206,10 +207,12 @@ private enum DebugControllerEntry: ItemListNodeEntry {
return 38
case .playlistPlayback:
return 39
case .voiceConference:
case .enableQuickReactionSwitch:
return 40
case .voiceConference:
return 41
case let .preferredVideoCodec(index, _, _, _):
return 41 + index
return 42 + index
case .disableVideoAspectScaling:
return 100
case .enableVoipTcp:
@@ -1161,6 +1164,16 @@ private enum DebugControllerEntry: ItemListNodeEntry {
})
}).start()
})
case let .enableQuickReactionSwitch(value):
return ItemListSwitchItem(presentationData: presentationData, title: "Enable Quick Reaction", value: value, sectionId: self.section, style: .blocks, updated: { value in
let _ = arguments.sharedContext.accountManager.transaction ({ transaction in
transaction.updateSharedData(ApplicationSpecificSharedDataKeys.experimentalUISettings, { settings in
var settings = settings?.get(ExperimentalUISettings.self) ?? ExperimentalUISettings.defaultSettings
settings.disableQuickReaction = !value
return PreferencesEntry(settings)
})
}).start()
})
case .voiceConference:
return ItemListDisclosureItem(presentationData: presentationData, title: "Voice Conference (Test)", label: "", sectionId: self.section, style: .blocks, action: {
guard let _ = arguments.context else {
@@ -1283,6 +1296,7 @@ private func debugControllerEntries(sharedContext: SharedAccountContext, present
entries.append(.restorePurchases(presentationData.theme))
entries.append(.playerEmbedding(experimentalSettings.playerEmbedding))
entries.append(.playlistPlayback(experimentalSettings.playlistPlayback))
entries.append(.enableQuickReactionSwitch(!experimentalSettings.disableQuickReaction))
}
let codecs: [(String, String?)] = [

View File

@@ -1647,6 +1647,11 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
return
}
if strongSelf.context.sharedContext.immediateExperimentalUISettings.disableQuickReaction {
itemNode.openMessageContextMenu()
return
}
let chosenReaction: MessageReaction.Reaction?
switch reaction {

View File

@@ -48,6 +48,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
public var inlineForums: Bool
public var accountReactionEffectOverrides: [AccountReactionOverrides]
public var accountStickerEffectOverrides: [AccountReactionOverrides]
public var disableQuickReaction: Bool
public static var defaultSettings: ExperimentalUISettings {
return ExperimentalUISettings(
@@ -72,7 +73,8 @@ public struct ExperimentalUISettings: Codable, Equatable {
enableReactionOverrides: false,
inlineForums: false,
accountReactionEffectOverrides: [],
accountStickerEffectOverrides: []
accountStickerEffectOverrides: [],
disableQuickReaction: false
)
}
@@ -98,7 +100,8 @@ public struct ExperimentalUISettings: Codable, Equatable {
enableReactionOverrides: Bool,
inlineForums: Bool,
accountReactionEffectOverrides: [AccountReactionOverrides],
accountStickerEffectOverrides: [AccountReactionOverrides]
accountStickerEffectOverrides: [AccountReactionOverrides],
disableQuickReaction: Bool
) {
self.keepChatNavigationStack = keepChatNavigationStack
self.skipReadHistory = skipReadHistory
@@ -122,6 +125,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
self.inlineForums = inlineForums
self.accountReactionEffectOverrides = accountReactionEffectOverrides
self.accountStickerEffectOverrides = accountStickerEffectOverrides
self.disableQuickReaction = disableQuickReaction
}
public init(from decoder: Decoder) throws {
@@ -149,6 +153,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
self.inlineForums = try container.decodeIfPresent(Bool.self, forKey: "inlineForums") ?? false
self.accountReactionEffectOverrides = (try? container.decodeIfPresent([AccountReactionOverrides].self, forKey: "accountReactionEffectOverrides")) ?? []
self.accountStickerEffectOverrides = (try? container.decodeIfPresent([AccountReactionOverrides].self, forKey: "accountStickerEffectOverrides")) ?? []
self.disableQuickReaction = try container.decodeIfPresent(Bool.self, forKey: "disableQuickReaction") ?? false
}
public func encode(to encoder: Encoder) throws {
@@ -176,6 +181,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
try container.encode(self.inlineForums, forKey: "inlineForums")
try container.encode(self.accountReactionEffectOverrides, forKey: "accountReactionEffectOverrides")
try container.encode(self.accountStickerEffectOverrides, forKey: "accountStickerEffectOverrides")
try container.encode(self.disableQuickReaction, forKey: "disableQuickReaction")
}
}