mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-16 19:30:29 +00:00
Refactoring
This commit is contained in:
parent
47fb45e08f
commit
3d10a0c38c
@ -281,12 +281,12 @@ func chatContextMenuItems(context: AccountContext, peerId: PeerId, promoInfo: Ch
|
|||||||
|
|
||||||
if isUnread {
|
if isUnread {
|
||||||
items.append(.action(ContextMenuActionItem(text: strings.ChatList_Context_MarkAsRead, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/MarkAsRead"), color: theme.contextMenu.primaryColor) }, action: { _, f in
|
items.append(.action(ContextMenuActionItem(text: strings.ChatList_Context_MarkAsRead, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/MarkAsRead"), color: theme.contextMenu.primaryColor) }, action: { _, f in
|
||||||
let _ = togglePeerUnreadMarkInteractively(postbox: context.account.postbox, viewTracker: context.account.viewTracker, peerId: peerId).start()
|
let _ = context.engine.messages.togglePeersUnreadMarkInteractively(peerIds: [peerId], setToValue: nil).start()
|
||||||
f(.default)
|
f(.default)
|
||||||
})))
|
})))
|
||||||
} else {
|
} else {
|
||||||
items.append(.action(ContextMenuActionItem(text: strings.ChatList_Context_MarkAsUnread, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/MarkAsUnread"), color: theme.contextMenu.primaryColor) }, action: { _, f in
|
items.append(.action(ContextMenuActionItem(text: strings.ChatList_Context_MarkAsUnread, icon: { theme in generateTintedImage(image: UIImage(bundleImageName: "Chat/Context Menu/MarkAsUnread"), color: theme.contextMenu.primaryColor) }, action: { _, f in
|
||||||
let _ = togglePeerUnreadMarkInteractively(postbox: context.account.postbox, viewTracker: context.account.viewTracker, peerId: peerId).start()
|
let _ = context.engine.messages.togglePeersUnreadMarkInteractively(peerIds: [peerId], setToValue: nil).start()
|
||||||
f(.default)
|
f(.default)
|
||||||
})))
|
})))
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1968,7 +1968,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
|||||||
let filterItems = chatListFilterItems(context: self.context)
|
let filterItems = chatListFilterItems(context: self.context)
|
||||||
var notifiedFirstUpdate = false
|
var notifiedFirstUpdate = false
|
||||||
self.filterDisposable.set((combineLatest(queue: .mainQueue(),
|
self.filterDisposable.set((combineLatest(queue: .mainQueue(),
|
||||||
self.context.account.postbox.combinedView(keys: [
|
self.context.account.postbox.combinedView(keys: [
|
||||||
preferencesKey
|
preferencesKey
|
||||||
]),
|
]),
|
||||||
filterItems,
|
filterItems,
|
||||||
@ -2421,18 +2421,12 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController
|
|||||||
if case .left = action {
|
if case .left = action {
|
||||||
let signal: Signal<Never, NoError>
|
let signal: Signal<Never, NoError>
|
||||||
var completion: (() -> Void)?
|
var completion: (() -> Void)?
|
||||||
let context = self.context
|
|
||||||
if !peerIds.isEmpty {
|
if !peerIds.isEmpty {
|
||||||
self.chatListDisplayNode.containerNode.currentItemNode.setCurrentRemovingPeerId(peerIds.first!)
|
self.chatListDisplayNode.containerNode.currentItemNode.setCurrentRemovingPeerId(peerIds.first!)
|
||||||
completion = { [weak self] in
|
completion = { [weak self] in
|
||||||
self?.chatListDisplayNode.containerNode.currentItemNode.setCurrentRemovingPeerId(nil)
|
self?.chatListDisplayNode.containerNode.currentItemNode.setCurrentRemovingPeerId(nil)
|
||||||
}
|
}
|
||||||
signal = self.context.account.postbox.transaction { transaction -> Void in
|
signal = self.context.engine.messages.togglePeersUnreadMarkInteractively(peerIds: Array(peerIds), setToValue: false)
|
||||||
for peerId in peerIds {
|
|
||||||
togglePeerUnreadMarkInteractively(transaction: transaction, viewTracker: context.account.viewTracker, peerId: peerId, setToValue: false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|> ignoreValues
|
|
||||||
} else {
|
} else {
|
||||||
let groupId = self.groupId
|
let groupId = self.groupId
|
||||||
let filterPredicate: ChatListFilterPredicate?
|
let filterPredicate: ChatListFilterPredicate?
|
||||||
|
|||||||
@ -885,7 +885,7 @@ public final class ChatListNode: ListView {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
self?.setCurrentRemovingPeerId(peerId)
|
self?.setCurrentRemovingPeerId(peerId)
|
||||||
let _ = (togglePeerUnreadMarkInteractively(postbox: context.account.postbox, viewTracker: context.account.viewTracker, peerId: peerId)
|
let _ = (context.engine.messages.togglePeersUnreadMarkInteractively(peerIds: [peerId], setToValue: nil)
|
||||||
|> deliverOnMainQueue).start(completed: {
|
|> deliverOnMainQueue).start(completed: {
|
||||||
self?.updateState { state in
|
self?.updateState { state in
|
||||||
var state = state
|
var state = state
|
||||||
|
|||||||
@ -109,13 +109,13 @@ func applySecretOutgoingMessageReadActions(transaction: Transaction, id: Message
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func togglePeerUnreadMarkInteractively(postbox: Postbox, viewTracker: AccountViewTracker, peerId: PeerId, setToValue: Bool? = nil) -> Signal<Void, NoError> {
|
func _internal_togglePeerUnreadMarkInteractively(postbox: Postbox, viewTracker: AccountViewTracker, peerId: PeerId, setToValue: Bool? = nil) -> Signal<Void, NoError> {
|
||||||
return postbox.transaction { transaction -> Void in
|
return postbox.transaction { transaction -> Void in
|
||||||
togglePeerUnreadMarkInteractively(transaction: transaction, viewTracker: viewTracker, peerId: peerId, setToValue: setToValue)
|
_internal_togglePeerUnreadMarkInteractively(transaction: transaction, viewTracker: viewTracker, peerId: peerId, setToValue: setToValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public func togglePeerUnreadMarkInteractively(transaction: Transaction, viewTracker: AccountViewTracker, peerId: PeerId, setToValue: Bool? = nil) {
|
func _internal_togglePeerUnreadMarkInteractively(transaction: Transaction, viewTracker: AccountViewTracker, peerId: PeerId, setToValue: Bool? = nil) {
|
||||||
let principalNamespace: MessageId.Namespace
|
let principalNamespace: MessageId.Namespace
|
||||||
if peerId.namespace == Namespaces.Peer.SecretChat {
|
if peerId.namespace == Namespaces.Peer.SecretChat {
|
||||||
principalNamespace = Namespaces.Message.SecretIncoming
|
principalNamespace = Namespaces.Message.SecretIncoming
|
||||||
@ -178,6 +178,6 @@ public func clearPeerUnseenReactionsInteractively(account: Account, peerId: Peer
|
|||||||
|
|
||||||
func _internal_markAllChatsAsReadInteractively(transaction: Transaction, viewTracker: AccountViewTracker, groupId: PeerGroupId, filterPredicate: ChatListFilterPredicate?) {
|
func _internal_markAllChatsAsReadInteractively(transaction: Transaction, viewTracker: AccountViewTracker, groupId: PeerGroupId, filterPredicate: ChatListFilterPredicate?) {
|
||||||
for peerId in transaction.getUnreadChatListPeerIds(groupId: groupId, filterPredicate: filterPredicate) {
|
for peerId in transaction.getUnreadChatListPeerIds(groupId: groupId, filterPredicate: filterPredicate) {
|
||||||
togglePeerUnreadMarkInteractively(transaction: transaction, viewTracker: viewTracker, peerId: peerId, setToValue: false)
|
_internal_togglePeerUnreadMarkInteractively(transaction: transaction, viewTracker: viewTracker, peerId: peerId, setToValue: false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -406,5 +406,14 @@ public extension TelegramEngine {
|
|||||||
return transaction.getRelativeUnreadChatListIndex(filtered: filtered, position: position._asPosition(), groupId: groupId._asGroup())
|
return transaction.getRelativeUnreadChatListIndex(filtered: filtered, position: position._asPosition(), groupId: groupId._asGroup())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public func togglePeersUnreadMarkInteractively(peerIds: [EnginePeer.Id], setToValue: Bool?) -> Signal<Never, NoError> {
|
||||||
|
return self.account.postbox.transaction { transaction -> Void in
|
||||||
|
for peerId in peerIds {
|
||||||
|
_internal_togglePeerUnreadMarkInteractively(transaction: transaction, viewTracker: self.account.viewTracker, peerId: peerId, setToValue: setToValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|> ignoreValues
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -247,7 +247,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
return self.presentationInterfaceState.interfaceState.selectionState?.selectedIds
|
return self.presentationInterfaceState.interfaceState.selectionState?.selectedIds
|
||||||
}
|
}
|
||||||
|
|
||||||
private var cachedDataPromise = Promise<CachedPeerData?>()
|
private var themeEmoticonPromise = Promise<String?>()
|
||||||
|
|
||||||
private var chatTitleView: ChatTitleView?
|
private var chatTitleView: ChatTitleView?
|
||||||
private var leftNavigationButton: ChatNavigationButton?
|
private var leftNavigationButton: ChatNavigationButton?
|
||||||
@ -4664,18 +4664,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let themeEmoticon: Signal<String?, NoError> = self.cachedDataPromise.get()
|
let themeEmoticon: Signal<String?, NoError> = self.themeEmoticonPromise.get()
|
||||||
|> map { cachedData -> String? in
|
|
||||||
if let cachedData = cachedData as? CachedUserData {
|
|
||||||
return cachedData.themeEmoticon
|
|
||||||
} else if let cachedData = cachedData as? CachedGroupData {
|
|
||||||
return cachedData.themeEmoticon
|
|
||||||
} else if let cachedData = cachedData as? CachedChannelData {
|
|
||||||
return cachedData.themeEmoticon
|
|
||||||
} else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|> distinctUntilChanged
|
|> distinctUntilChanged
|
||||||
|
|
||||||
let themeSettings = context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationThemeSettings])
|
let themeSettings = context.sharedContext.accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.presentationThemeSettings])
|
||||||
@ -5569,15 +5558,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
let topPinnedMessage: Signal<ChatPinnedMessage?, NoError> = self.topPinnedMessageSignal(latest: false)
|
let topPinnedMessage: Signal<ChatPinnedMessage?, NoError> = self.topPinnedMessageSignal(latest: false)
|
||||||
|
|
||||||
if let peerId = self.chatLocation.peerId {
|
if let peerId = self.chatLocation.peerId {
|
||||||
let _ = (self.context.account.postbox.transaction { transaction -> CachedPeerData? in
|
self.themeEmoticonPromise.set(self.context.engine.data.get(TelegramEngine.EngineData.Item.Peer.ThemeEmoticon(id: peerId)))
|
||||||
return transaction.getPeerCachedData(peerId: peerId)
|
|
||||||
}).start(next: { [weak self] cachedData in
|
|
||||||
if let strongSelf = self {
|
|
||||||
strongSelf.cachedDataPromise.set(.single(cachedData))
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
self.cachedDataPromise.set(.single(nil))
|
self.themeEmoticonPromise.set(.single(nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
if let peerId = self.chatLocation.peerId {
|
if let peerId = self.chatLocation.peerId {
|
||||||
@ -5586,7 +5569,16 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
let (cachedData, messages) = cachedDataAndMessages
|
let (cachedData, messages) = cachedDataAndMessages
|
||||||
|
|
||||||
if cachedData != nil {
|
if cachedData != nil {
|
||||||
strongSelf.cachedDataPromise.set(.single(cachedData))
|
var themeEmoticon: String? = nil
|
||||||
|
if let cachedData = cachedData as? CachedUserData {
|
||||||
|
themeEmoticon = cachedData.themeEmoticon
|
||||||
|
} else if let cachedData = cachedData as? CachedGroupData {
|
||||||
|
themeEmoticon = cachedData.themeEmoticon
|
||||||
|
} else if let cachedData = cachedData as? CachedChannelData {
|
||||||
|
themeEmoticon = cachedData.themeEmoticon
|
||||||
|
}
|
||||||
|
|
||||||
|
strongSelf.themeEmoticonPromise.set(.single(themeEmoticon))
|
||||||
}
|
}
|
||||||
|
|
||||||
var pinnedMessageId: MessageId?
|
var pinnedMessageId: MessageId?
|
||||||
@ -15944,22 +15936,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
|
|||||||
return animatedEmojiStickers
|
return animatedEmojiStickers
|
||||||
}
|
}
|
||||||
|
|
||||||
let _ = (combineLatest(queue: Queue.mainQueue(), self.cachedDataPromise.get(), animatedEmojiStickers)
|
let _ = (combineLatest(queue: Queue.mainQueue(), self.themeEmoticonPromise.get(), animatedEmojiStickers)
|
||||||
|> take(1)).start(next: { [weak self] cachedData, animatedEmojiStickers in
|
|> take(1)).start(next: { [weak self] themeEmoticon, animatedEmojiStickers in
|
||||||
guard let strongSelf = self else {
|
guard let strongSelf = self else {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
let selectedEmoticon: String?
|
let selectedEmoticon: String? = themeEmoticon
|
||||||
if let cachedData = cachedData as? CachedUserData {
|
|
||||||
selectedEmoticon = cachedData.themeEmoticon
|
|
||||||
} else if let cachedData = cachedData as? CachedGroupData {
|
|
||||||
selectedEmoticon = cachedData.themeEmoticon
|
|
||||||
} else if let cachedData = cachedData as? CachedChannelData {
|
|
||||||
selectedEmoticon = cachedData.themeEmoticon
|
|
||||||
} else {
|
|
||||||
selectedEmoticon = nil
|
|
||||||
}
|
|
||||||
|
|
||||||
let controller = ChatThemeScreen(context: context, updatedPresentationData: strongSelf.updatedPresentationData, animatedEmojiStickers: animatedEmojiStickers, initiallySelectedEmoticon: selectedEmoticon, peerName: strongSelf.presentationInterfaceState.renderedPeer?.chatMainPeer.flatMap(EnginePeer.init)?.compactDisplayTitle ?? "", previewTheme: { [weak self] emoticon, dark in
|
let controller = ChatThemeScreen(context: context, updatedPresentationData: strongSelf.updatedPresentationData, animatedEmojiStickers: animatedEmojiStickers, initiallySelectedEmoticon: selectedEmoticon, peerName: strongSelf.presentationInterfaceState.renderedPeer?.chatMainPeer.flatMap(EnginePeer.init)?.compactDisplayTitle ?? "", previewTheme: { [weak self] emoticon, dark in
|
||||||
if let strongSelf = self {
|
if let strongSelf = self {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user