Glass debug

This commit is contained in:
Isaac 2025-09-30 01:53:14 +08:00
parent 724b4ccbdf
commit 5bbc75fc7c
6 changed files with 22 additions and 21 deletions

View File

@ -95,7 +95,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
case knockoutWallpaper(PresentationTheme, Bool)
case experimentalCompatibility(Bool)
case enableDebugDataDisplay(Bool)
case rippleEffect(Bool)
case fakeGlass(Bool)
case browserExperiment(Bool)
case allForumsHaveTabs(Bool)
case enableReactionOverrides(Bool)
@ -135,7 +135,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
return DebugControllerSection.web.rawValue
case .keepChatNavigationStack, .skipReadHistory, .alwaysDisplayTyping, .debugRatingLayout, .crashOnSlowQueries, .crashOnMemoryPressure:
return DebugControllerSection.experiments.rawValue
case .clearTips, .resetNotifications, .crash, .fillLocalSavedMessageCache, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .resetTagHoles, .reindexUnread, .resetCacheIndex, .reindexCache, .resetBiometricsData, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .compressedEmojiCache, .storiesJpegExperiment, .checkSerializedData, .enableQuickReactionSwitch, .experimentalCompatibility, .enableDebugDataDisplay, .rippleEffect, .browserExperiment, .allForumsHaveTabs, .enableReactionOverrides, .restorePurchases, .disableReloginTokens, .liveStreamV2, .experimentalCallMute, .playerV2, .devRequests, .enableUpdates, .fakeAds, .enableLocalTranslation:
case .clearTips, .resetNotifications, .crash, .fillLocalSavedMessageCache, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .resetTagHoles, .reindexUnread, .resetCacheIndex, .reindexCache, .resetBiometricsData, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .compressedEmojiCache, .storiesJpegExperiment, .checkSerializedData, .enableQuickReactionSwitch, .experimentalCompatibility, .enableDebugDataDisplay, .fakeGlass, .browserExperiment, .allForumsHaveTabs, .enableReactionOverrides, .restorePurchases, .disableReloginTokens, .liveStreamV2, .experimentalCallMute, .playerV2, .devRequests, .enableUpdates, .fakeAds, .enableLocalTranslation:
return DebugControllerSection.experiments.rawValue
case .logTranslationRecognition, .resetTranslationStates:
return DebugControllerSection.translation.rawValue
@ -226,7 +226,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
return 37
case .enableDebugDataDisplay:
return 38
case .rippleEffect:
case .fakeGlass:
return 39
case .browserExperiment:
return 40
@ -1258,12 +1258,12 @@ private enum DebugControllerEntry: ItemListNodeEntry {
})
}).start()
})
case let .rippleEffect(value):
return ItemListSwitchItem(presentationData: presentationData, title: "Ripple", value: value, sectionId: self.section, style: .blocks, updated: { value in
case let .fakeGlass(value):
return ItemListSwitchItem(presentationData: presentationData, title: "Fake glass", 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.rippleEffect = value
settings.fakeGlass = value
return PreferencesEntry(settings)
})
}).start()
@ -1543,7 +1543,7 @@ private func debugControllerEntries(sharedContext: SharedAccountContext, present
entries.append(.knockoutWallpaper(presentationData.theme, experimentalSettings.knockoutWallpaper))
entries.append(.experimentalCompatibility(experimentalSettings.experimentalCompatibility))
entries.append(.enableDebugDataDisplay(experimentalSettings.enableDebugDataDisplay))
entries.append(.rippleEffect(experimentalSettings.rippleEffect))
entries.append(.fakeGlass(experimentalSettings.fakeGlass))
#if DEBUG
entries.append(.browserExperiment(experimentalSettings.browserExperiment))
#else

View File

@ -294,8 +294,10 @@ public class GlassBackgroundView: UIView {
private var params: Params?
public static var useCustomGlassImpl: Bool = false
public override init(frame: CGRect) {
if #available(iOS 26.0, *) {
if #available(iOS 26.0, *), !GlassBackgroundView.useCustomGlassImpl {
self.backgroundNode = nil
let glassEffect = UIGlassEffect(style: .regular)

View File

@ -89,7 +89,7 @@ public final class TabBarComponent: Component {
private weak var state: EmptyComponentState?
public override init(frame: CGRect) {
self.backgroundView = GlassBackgroundView(frame: CGRect())
self.backgroundView = GlassBackgroundView()
self.selectionView = GlassBackgroundView.ContentImageView()
self.contextGestureContainerView = ContextControllerSourceView()

View File

@ -3761,12 +3761,6 @@ class ChatControllerNode: ASDisplayNode, ASScrollViewDelegate {
return
}
if let view, let location {
if context.sharedContext.immediateExperimentalUISettings.rippleEffect {
self.wrappingNode.triggerRipple(at: self.contentContainerNode.view.convert(location, from: view))
}
}
switch self.chatPresentationInterfaceState.inputMode {
case .none:
break

View File

@ -86,6 +86,7 @@ import SendInviteLinkScreen
import PostSuggestionsSettingsScreen
import ForumSettingsScreen
import ForumCreateTopicScreen
import GlassBackgroundComponent
private final class AccountUserInterfaceInUseContext {
let subscribers = Bag<(Bool) -> Void>()
@ -477,12 +478,16 @@ public final class SharedAccountContextImpl: SharedAccountContext {
let immediateExperimentalUISettingsValue = self.immediateExperimentalUISettingsValue
let _ = immediateExperimentalUISettingsValue.swap(initialPresentationDataAndSettings.experimentalUISettings)
GlassBackgroundView.useCustomGlassImpl = immediateExperimentalUISettingsValue.with({ $0.fakeGlass })
self.experimentalUISettingsDisposable = (self.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.experimentalUISettings])
|> deliverOnMainQueue).start(next: { sharedData in
if let settings = sharedData.entries[ApplicationSpecificSharedDataKeys.experimentalUISettings]?.get(ExperimentalUISettings.self) {
let _ = immediateExperimentalUISettingsValue.swap(settings)
flatBuffers_checkedGet = settings.checkSerializedData
GlassBackgroundView.useCustomGlassImpl = settings.fakeGlass
}
})

View File

@ -38,7 +38,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
public var enableVoipTcp: Bool
public var experimentalCompatibility: Bool
public var enableDebugDataDisplay: Bool
public var rippleEffect: Bool
public var fakeGlass: Bool
public var compressedEmojiCache: Bool
public var localTranscription: Bool
public var enableReactionOverrides: Bool
@ -86,7 +86,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
enableVoipTcp: false,
experimentalCompatibility: false,
enableDebugDataDisplay: false,
rippleEffect: false,
fakeGlass: false,
compressedEmojiCache: false,
localTranscription: false,
enableReactionOverrides: false,
@ -135,7 +135,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
enableVoipTcp: Bool,
experimentalCompatibility: Bool,
enableDebugDataDisplay: Bool,
rippleEffect: Bool,
fakeGlass: Bool,
compressedEmojiCache: Bool,
localTranscription: Bool,
enableReactionOverrides: Bool,
@ -181,7 +181,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
self.enableVoipTcp = enableVoipTcp
self.experimentalCompatibility = experimentalCompatibility
self.enableDebugDataDisplay = enableDebugDataDisplay
self.rippleEffect = rippleEffect
self.fakeGlass = fakeGlass
self.compressedEmojiCache = compressedEmojiCache
self.localTranscription = localTranscription
self.enableReactionOverrides = enableReactionOverrides
@ -231,7 +231,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
self.enableVoipTcp = (try container.decodeIfPresent(Int32.self, forKey: "enableVoipTcp") ?? 0) != 0
self.experimentalCompatibility = (try container.decodeIfPresent(Int32.self, forKey: "experimentalCompatibility") ?? 0) != 0
self.enableDebugDataDisplay = (try container.decodeIfPresent(Int32.self, forKey: "enableDebugDataDisplay") ?? 0) != 0
self.rippleEffect = (try container.decodeIfPresent(Int32.self, forKey: "rippleEffect") ?? 0) != 0
self.fakeGlass = (try container.decodeIfPresent(Int32.self, forKey: "fakeGlass") ?? 0) != 0
self.compressedEmojiCache = (try container.decodeIfPresent(Int32.self, forKey: "compressedEmojiCache") ?? 0) != 0
self.localTranscription = (try container.decodeIfPresent(Int32.self, forKey: "localTranscription") ?? 0) != 0
self.enableReactionOverrides = try container.decodeIfPresent(Bool.self, forKey: "enableReactionOverrides") ?? false
@ -281,7 +281,7 @@ public struct ExperimentalUISettings: Codable, Equatable {
try container.encode((self.enableVoipTcp ? 1 : 0) as Int32, forKey: "enableVoipTcp")
try container.encode((self.experimentalCompatibility ? 1 : 0) as Int32, forKey: "experimentalCompatibility")
try container.encode((self.enableDebugDataDisplay ? 1 : 0) as Int32, forKey: "enableDebugDataDisplay")
try container.encode((self.rippleEffect ? 1 : 0) as Int32, forKey: "rippleEffect")
try container.encode((self.fakeGlass ? 1 : 0) as Int32, forKey: "fakeGlass")
try container.encode((self.compressedEmojiCache ? 1 : 0) as Int32, forKey: "compressedEmojiCache")
try container.encode((self.localTranscription ? 1 : 0) as Int32, forKey: "localTranscription")
try container.encode(self.enableReactionOverrides, forKey: "enableReactionOverrides")