mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-15 21:45:19 +00:00
Add pin list edge setting
This commit is contained in:
parent
2db6f17597
commit
767b0603a6
@ -74,6 +74,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
||||
case photoPreview(PresentationTheme, Bool)
|
||||
case knockoutWallpaper(PresentationTheme, Bool)
|
||||
case alternativeFolderTabs(Bool)
|
||||
case snapPinListToTop(Bool)
|
||||
case playerEmbedding(Bool)
|
||||
case playlistPlayback(Bool)
|
||||
case voiceConference
|
||||
@ -93,7 +94,7 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
||||
return DebugControllerSection.logging.rawValue
|
||||
case .enableRaiseToSpeak, .keepChatNavigationStack, .skipReadHistory, .crashOnSlowQueries:
|
||||
return DebugControllerSection.experiments.rawValue
|
||||
case .clearTips, .reimport, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetBiometricsData, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .alternativeFolderTabs, .playerEmbedding, .playlistPlayback, .voiceConference:
|
||||
case .clearTips, .reimport, .resetData, .resetDatabase, .resetDatabaseAndCache, .resetHoles, .reindexUnread, .resetBiometricsData, .optimizeDatabase, .photoPreview, .knockoutWallpaper, .alternativeFolderTabs, .snapPinListToTop, .playerEmbedding, .playlistPlayback, .voiceConference:
|
||||
return DebugControllerSection.experiments.rawValue
|
||||
case .preferredVideoCodec:
|
||||
return DebugControllerSection.videoExperiments.rawValue
|
||||
@ -156,14 +157,16 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
||||
return 23
|
||||
case .alternativeFolderTabs:
|
||||
return 24
|
||||
case .playerEmbedding:
|
||||
case .snapPinListToTop:
|
||||
return 25
|
||||
case .playlistPlayback:
|
||||
case .playerEmbedding:
|
||||
return 26
|
||||
case .voiceConference:
|
||||
case .playlistPlayback:
|
||||
return 27
|
||||
case .voiceConference:
|
||||
return 28
|
||||
case let .preferredVideoCodec(index, _, _, _):
|
||||
return 28 + index
|
||||
return 29 + index
|
||||
case .disableVideoAspectScaling:
|
||||
return 100
|
||||
case .enableVoipTcp:
|
||||
@ -703,6 +706,16 @@ private enum DebugControllerEntry: ItemListNodeEntry {
|
||||
})
|
||||
}).start()
|
||||
})
|
||||
case let .snapPinListToTop(value):
|
||||
return ItemListSwitchItem(presentationData: presentationData, title: "Pin List Top Edge", 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 as? ExperimentalUISettings ?? ExperimentalUISettings.defaultSettings
|
||||
settings.snapPinListToTop = value
|
||||
return settings
|
||||
})
|
||||
}).start()
|
||||
})
|
||||
case let .playerEmbedding(value):
|
||||
return ItemListSwitchItem(presentationData: presentationData, title: "Player Embedding", value: value, sectionId: self.section, style: .blocks, updated: { value in
|
||||
let _ = arguments.sharedContext.accountManager.transaction ({ transaction in
|
||||
@ -807,6 +820,7 @@ private func debugControllerEntries(presentationData: PresentationData, loggingS
|
||||
//entries.append(.photoPreview(presentationData.theme, experimentalSettings.chatListPhotos))
|
||||
entries.append(.knockoutWallpaper(presentationData.theme, experimentalSettings.knockoutWallpaper))
|
||||
entries.append(.alternativeFolderTabs(experimentalSettings.foldersTabAtBottom))
|
||||
entries.append(.snapPinListToTop(experimentalSettings.snapPinListToTop))
|
||||
entries.append(.playerEmbedding(experimentalSettings.playerEmbedding))
|
||||
entries.append(.playlistPlayback(experimentalSettings.playlistPlayback))
|
||||
|
||||
|
@ -3269,6 +3269,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
var isScrolled: Bool
|
||||
}
|
||||
|
||||
let messageRangeEdge: Signal<Bool, NoError> = self.context.sharedContext.accountManager.sharedData(keys: Set([ApplicationSpecificSharedDataKeys.experimentalUISettings]))
|
||||
|> map { sharedData -> Bool in
|
||||
let experimentalSettings: ExperimentalUISettings = (sharedData.entries[ApplicationSpecificSharedDataKeys.experimentalUISettings] as? ExperimentalUISettings) ?? ExperimentalUISettings.defaultSettings
|
||||
return experimentalSettings.snapPinListToTop
|
||||
}
|
||||
|> distinctUntilChanged
|
||||
|
||||
let referenceMessage: Signal<ReferenceMessage?, NoError>
|
||||
if latest {
|
||||
referenceMessage = .single(nil)
|
||||
@ -3276,10 +3283,16 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
||||
referenceMessage = combineLatest(
|
||||
queue: Queue.mainQueue(),
|
||||
self.scrolledToMessageId.get(),
|
||||
self.chatDisplayNode.historyNode.topVisibleMessageRange.get()
|
||||
self.chatDisplayNode.historyNode.topVisibleMessageRange.get(),
|
||||
messageRangeEdge
|
||||
)
|
||||
|> map { scrolledToMessageId, topVisibleMessageRange -> ReferenceMessage? in
|
||||
let topVisibleMessage = topVisibleMessageRange?.upperBound
|
||||
|> map { scrolledToMessageId, topVisibleMessageRange, messageRangeEdge -> ReferenceMessage? in
|
||||
let topVisibleMessage: MessageId?
|
||||
if messageRangeEdge {
|
||||
topVisibleMessage = topVisibleMessageRange?.lowerBound
|
||||
} else {
|
||||
topVisibleMessage = topVisibleMessageRange?.upperBound
|
||||
}
|
||||
|
||||
if let scrolledToMessageId = scrolledToMessageId {
|
||||
if let topVisibleMessage = topVisibleMessage {
|
||||
|
@ -14,6 +14,7 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry {
|
||||
public var preferredVideoCodec: String?
|
||||
public var disableVideoAspectScaling: Bool
|
||||
public var enableVoipTcp: Bool
|
||||
public var snapPinListToTop: Bool
|
||||
|
||||
public static var defaultSettings: ExperimentalUISettings {
|
||||
return ExperimentalUISettings(
|
||||
@ -27,7 +28,8 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry {
|
||||
playlistPlayback: false,
|
||||
preferredVideoCodec: nil,
|
||||
disableVideoAspectScaling: false,
|
||||
enableVoipTcp: false
|
||||
enableVoipTcp: false,
|
||||
snapPinListToTop: false
|
||||
)
|
||||
}
|
||||
|
||||
@ -42,7 +44,8 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry {
|
||||
playlistPlayback: Bool,
|
||||
preferredVideoCodec: String?,
|
||||
disableVideoAspectScaling: Bool,
|
||||
enableVoipTcp: Bool
|
||||
enableVoipTcp: Bool,
|
||||
snapPinListToTop: Bool
|
||||
) {
|
||||
self.keepChatNavigationStack = keepChatNavigationStack
|
||||
self.skipReadHistory = skipReadHistory
|
||||
@ -55,6 +58,7 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry {
|
||||
self.preferredVideoCodec = preferredVideoCodec
|
||||
self.disableVideoAspectScaling = disableVideoAspectScaling
|
||||
self.enableVoipTcp = enableVoipTcp
|
||||
self.snapPinListToTop = snapPinListToTop
|
||||
}
|
||||
|
||||
public init(decoder: PostboxDecoder) {
|
||||
@ -69,6 +73,7 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry {
|
||||
self.preferredVideoCodec = decoder.decodeOptionalStringForKey("preferredVideoCodec")
|
||||
self.disableVideoAspectScaling = decoder.decodeInt32ForKey("disableVideoAspectScaling", orElse: 0) != 0
|
||||
self.enableVoipTcp = decoder.decodeInt32ForKey("enableVoipTcp", orElse: 0) != 0
|
||||
self.snapPinListToTop = decoder.decodeInt32ForKey("snapPinListToTop", orElse: 0) != 0
|
||||
}
|
||||
|
||||
public func encode(_ encoder: PostboxEncoder) {
|
||||
@ -85,6 +90,7 @@ public struct ExperimentalUISettings: Equatable, PreferencesEntry {
|
||||
}
|
||||
encoder.encodeInt32(self.disableVideoAspectScaling ? 1 : 0, forKey: "disableVideoAspectScaling")
|
||||
encoder.encodeInt32(self.enableVoipTcp ? 1 : 0, forKey: "enableVoipTcp")
|
||||
encoder.encodeInt32(self.snapPinListToTop ? 1 : 0, forKey: "snapPinListToTop")
|
||||
}
|
||||
|
||||
public func isEqual(to: PreferencesEntry) -> Bool {
|
||||
|
Loading…
x
Reference in New Issue
Block a user