mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-05 05:51:42 +00:00
Merge branch 'master' of github.com:peter-iakovlev/TelegramUI
This commit is contained in:
commit
2e5d6896a0
@ -221,7 +221,7 @@ private func archivedStickerPacksControllerEntries(presentationData: Presentatio
|
|||||||
return entries
|
return entries
|
||||||
}
|
}
|
||||||
|
|
||||||
public func archivedStickerPacksController(account: Account, archived: [ArchivedStickerPackItem]?) -> ViewController {
|
public func archivedStickerPacksController(account: Account, archived: [ArchivedStickerPackItem]?, updatedPacks: @escaping([ArchivedStickerPackItem]?)->Void) -> ViewController {
|
||||||
let statePromise = ValuePromise(ArchivedStickerPacksControllerState(), ignoreRepeated: true)
|
let statePromise = ValuePromise(ArchivedStickerPacksControllerState(), ignoreRepeated: true)
|
||||||
let stateValue = Atomic(value: ArchivedStickerPacksControllerState())
|
let stateValue = Atomic(value: ArchivedStickerPacksControllerState())
|
||||||
let updateState: ((ArchivedStickerPacksControllerState) -> ArchivedStickerPacksControllerState) -> Void = { f in
|
let updateState: ((ArchivedStickerPacksControllerState) -> ArchivedStickerPacksControllerState) -> Void = { f in
|
||||||
@ -241,6 +241,11 @@ public func archivedStickerPacksController(account: Account, archived: [Archived
|
|||||||
let stickerPacks = Promise<[ArchivedStickerPackItem]?>()
|
let stickerPacks = Promise<[ArchivedStickerPackItem]?>()
|
||||||
stickerPacks.set(.single(archived) |> then(archivedStickerPacks(account: account) |> map(Optional.init)))
|
stickerPacks.set(.single(archived) |> then(archivedStickerPacks(account: account) |> map(Optional.init)))
|
||||||
|
|
||||||
|
|
||||||
|
actionsDisposable.add(stickerPacks.get().start(next: { packs in
|
||||||
|
updatedPacks(packs)
|
||||||
|
}))
|
||||||
|
|
||||||
let installedStickerPacks = Promise<CombinedView>()
|
let installedStickerPacks = Promise<CombinedView>()
|
||||||
installedStickerPacks.set(account.postbox.combinedView(keys: [.itemCollectionIds(namespaces: [Namespaces.ItemCollection.CloudStickerPacks])]))
|
installedStickerPacks.set(account.postbox.combinedView(keys: [.itemCollectionIds(namespaces: [Namespaces.ItemCollection.CloudStickerPacks])]))
|
||||||
|
|
||||||
|
|||||||
@ -378,7 +378,7 @@ public enum InstalledStickerPacksControllerMode {
|
|||||||
case masks
|
case masks
|
||||||
}
|
}
|
||||||
|
|
||||||
public func installedStickerPacksController(account: Account, mode: InstalledStickerPacksControllerMode, archivedPacks:[ArchivedStickerPackItem]? = nil) -> ViewController {
|
public func installedStickerPacksController(account: Account, mode: InstalledStickerPacksControllerMode, archivedPacks:[ArchivedStickerPackItem]? = nil, updatedPacks: @escaping([ArchivedStickerPackItem]?) -> Void = { _ in}) -> ViewController {
|
||||||
let initialState = InstalledStickerPacksControllerState().withUpdatedEditing(mode == .modal)
|
let initialState = InstalledStickerPacksControllerState().withUpdatedEditing(mode == .modal)
|
||||||
let statePromise = ValuePromise(initialState, ignoreRepeated: true)
|
let statePromise = ValuePromise(initialState, ignoreRepeated: true)
|
||||||
let stateValue = Atomic(value: initialState)
|
let stateValue = Atomic(value: initialState)
|
||||||
@ -396,6 +396,9 @@ public func installedStickerPacksController(account: Account, mode: InstalledSti
|
|||||||
let resolveDisposable = MetaDisposable()
|
let resolveDisposable = MetaDisposable()
|
||||||
actionsDisposable.add(resolveDisposable)
|
actionsDisposable.add(resolveDisposable)
|
||||||
|
|
||||||
|
let archivedPromise = Promise<[ArchivedStickerPackItem]?>()
|
||||||
|
|
||||||
|
|
||||||
var presentStickerPackController: ((StickerPackCollectionInfo) -> Void)?
|
var presentStickerPackController: ((StickerPackCollectionInfo) -> Void)?
|
||||||
|
|
||||||
let arguments = InstalledStickerPacksControllerArguments(account: account, openStickerPack: { info in
|
let arguments = InstalledStickerPacksControllerArguments(account: account, openStickerPack: { info in
|
||||||
@ -436,11 +439,14 @@ public func installedStickerPacksController(account: Account, mode: InstalledSti
|
|||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
}, openMasks: {
|
}, openMasks: {
|
||||||
pushControllerImpl?(installedStickerPacksController(account: account, mode: .masks, archivedPacks: archivedPacks))
|
pushControllerImpl?(installedStickerPacksController(account: account, mode: .masks, archivedPacks: archivedPacks, updatedPacks: { _ in}))
|
||||||
}, openFeatured: {
|
}, openFeatured: {
|
||||||
pushControllerImpl?(featuredStickerPacksController(account: account))
|
pushControllerImpl?(featuredStickerPacksController(account: account))
|
||||||
}, openArchived: { archived in
|
}, openArchived: { archived in
|
||||||
pushControllerImpl?(archivedStickerPacksController(account: account, archived: archived))
|
pushControllerImpl?(archivedStickerPacksController(account: account, archived: archived, updatedPacks: { packs in
|
||||||
|
archivedPromise.set(.single(packs))
|
||||||
|
updatedPacks(packs)
|
||||||
|
}))
|
||||||
}, openSuggestOptions: {
|
}, openSuggestOptions: {
|
||||||
let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 }
|
let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 }
|
||||||
let controller = ActionSheetController(presentationTheme: presentationData.theme)
|
let controller = ActionSheetController(presentationTheme: presentationData.theme)
|
||||||
@ -484,7 +490,6 @@ public func installedStickerPacksController(account: Account, mode: InstalledSti
|
|||||||
stickerPacks.set(account.postbox.combinedView(keys: [.itemCollectionInfos(namespaces: [namespaceForMode(mode)])]))
|
stickerPacks.set(account.postbox.combinedView(keys: [.itemCollectionInfos(namespaces: [namespaceForMode(mode)])]))
|
||||||
|
|
||||||
let featured = Promise<[FeaturedStickerPackItem]>()
|
let featured = Promise<[FeaturedStickerPackItem]>()
|
||||||
let archivedPromise = Promise<[ArchivedStickerPackItem]?>()
|
|
||||||
|
|
||||||
switch mode {
|
switch mode {
|
||||||
case .general, .modal:
|
case .general, .modal:
|
||||||
|
|||||||
@ -45,6 +45,7 @@ private struct SettingsItemArguments {
|
|||||||
let openSupport: () -> Void
|
let openSupport: () -> Void
|
||||||
let openFaq: () -> Void
|
let openFaq: () -> Void
|
||||||
let openEditing: () -> Void
|
let openEditing: () -> Void
|
||||||
|
let updateArchivedPacks: ([ArchivedStickerPackItem]?) -> Void
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum SettingsSection: Int32 {
|
private enum SettingsSection: Int32 {
|
||||||
@ -285,7 +286,9 @@ private enum SettingsEntry: ItemListNodeEntry {
|
|||||||
})
|
})
|
||||||
case let .stickers(theme, image, text, value, archivedPacks):
|
case let .stickers(theme, image, text, value, archivedPacks):
|
||||||
return ItemListDisclosureItem(theme: theme, icon: image, title: text, label: value, labelStyle: .badge, sectionId: ItemListSectionId(self.section), style: .blocks, action: {
|
return ItemListDisclosureItem(theme: theme, icon: image, title: text, label: value, labelStyle: .badge, sectionId: ItemListSectionId(self.section), style: .blocks, action: {
|
||||||
arguments.pushController(installedStickerPacksController(account: arguments.account, mode: .general, archivedPacks: archivedPacks))
|
arguments.pushController(installedStickerPacksController(account: arguments.account, mode: .general, archivedPacks: archivedPacks, updatedPacks: { packs in
|
||||||
|
arguments.updateArchivedPacks(packs)
|
||||||
|
}))
|
||||||
})
|
})
|
||||||
case let .notificationsAndSounds(theme, image, text):
|
case let .notificationsAndSounds(theme, image, text):
|
||||||
return ItemListDisclosureItem(theme: theme, icon: image, title: text, label: "", sectionId: ItemListSectionId(self.section), style: .blocks, action: {
|
return ItemListDisclosureItem(theme: theme, icon: image, title: text, label: "", sectionId: ItemListSectionId(self.section), style: .blocks, action: {
|
||||||
@ -426,6 +429,9 @@ public func settingsController(account: Account, accountManager: AccountManager)
|
|||||||
var changeProfilePhotoImpl: (() -> Void)?
|
var changeProfilePhotoImpl: (() -> Void)?
|
||||||
var openSavedMessagesImpl: (() -> Void)?
|
var openSavedMessagesImpl: (() -> Void)?
|
||||||
|
|
||||||
|
let archivedPacks = Promise<[ArchivedStickerPackItem]?>()
|
||||||
|
|
||||||
|
|
||||||
let openFaq: () -> Void = {
|
let openFaq: () -> Void = {
|
||||||
let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 }
|
let presentationData = account.telegramApplicationContext.currentPresentationData.with { $0 }
|
||||||
var faqUrl = presentationData.strings.Settings_FAQ_URL
|
var faqUrl = presentationData.strings.Settings_FAQ_URL
|
||||||
@ -517,6 +523,8 @@ public func settingsController(account: Account, accountManager: AccountManager)
|
|||||||
pushControllerImpl?(editSettingsController(account: account, currentName: .personName(firstName: peer.firstName ?? "", lastName: peer.lastName ?? ""), currentBioText: cachedData.about ?? "", accountManager: accountManager))
|
pushControllerImpl?(editSettingsController(account: account, currentName: .personName(firstName: peer.firstName ?? "", lastName: peer.lastName ?? ""), currentBioText: cachedData.about ?? "", accountManager: accountManager))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}, updateArchivedPacks: { packs in
|
||||||
|
archivedPacks.set(.single(packs))
|
||||||
})
|
})
|
||||||
|
|
||||||
changeProfilePhotoImpl = {
|
changeProfilePhotoImpl = {
|
||||||
@ -601,7 +609,6 @@ public func settingsController(account: Account, accountManager: AccountManager)
|
|||||||
|
|
||||||
let peerView = account.viewTracker.peerView(account.peerId)
|
let peerView = account.viewTracker.peerView(account.peerId)
|
||||||
|
|
||||||
let archivedPacks = Promise<[ArchivedStickerPackItem]?>()
|
|
||||||
archivedPacks.set(.single(nil) |> then(archivedStickerPacks(account: account) |> map(Optional.init)))
|
archivedPacks.set(.single(nil) |> then(archivedStickerPacks(account: account) |> map(Optional.init)))
|
||||||
|
|
||||||
let signal = combineLatest((account.applicationContext as! TelegramApplicationContext).presentationData, statePromise.get(), peerView, account.postbox.preferencesView(keys: [PreferencesKeys.proxySettings]), combineLatest(account.viewTracker.featuredStickerPacks(), archivedPacks.get()))
|
let signal = combineLatest((account.applicationContext as! TelegramApplicationContext).presentationData, statePromise.get(), peerView, account.postbox.preferencesView(keys: [PreferencesKeys.proxySettings]), combineLatest(account.viewTracker.featuredStickerPacks(), archivedPacks.get()))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user