mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 14:45:21 +00:00
Update stickers settings screen layout
This commit is contained in:
@@ -59,9 +59,8 @@ private final class InstalledStickerPacksControllerArguments {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private enum InstalledStickerPacksSection: Int32 {
|
private enum InstalledStickerPacksSection: Int32 {
|
||||||
case settings
|
|
||||||
case categories
|
case categories
|
||||||
case order
|
case settings
|
||||||
case stickers
|
case stickers
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,8 +84,6 @@ private enum InstalledStickerPacksEntryId: Hashable {
|
|||||||
private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
||||||
case suggestOptions(PresentationTheme, String, String)
|
case suggestOptions(PresentationTheme, String, String)
|
||||||
case largeEmoji(PresentationTheme, String, Bool)
|
case largeEmoji(PresentationTheme, String, Bool)
|
||||||
case animatedStickers(PresentationTheme, String, Bool)
|
|
||||||
case animatedStickersInfo(PresentationTheme, String)
|
|
||||||
case trending(PresentationTheme, String, Int32)
|
case trending(PresentationTheme, String, Int32)
|
||||||
case archived(PresentationTheme, String, Int32, [ArchivedStickerPackItem]?)
|
case archived(PresentationTheme, String, Int32, [ArchivedStickerPackItem]?)
|
||||||
case masks(PresentationTheme, String)
|
case masks(PresentationTheme, String)
|
||||||
@@ -101,12 +98,10 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
|||||||
|
|
||||||
var section: ItemListSectionId {
|
var section: ItemListSectionId {
|
||||||
switch self {
|
switch self {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .suggestAnimatedEmoji:
|
|
||||||
return InstalledStickerPacksSection.settings.rawValue
|
|
||||||
case .trending, .masks, .emoji, .quickReaction, .archived:
|
case .trending, .masks, .emoji, .quickReaction, .archived:
|
||||||
return InstalledStickerPacksSection.categories.rawValue
|
return InstalledStickerPacksSection.categories.rawValue
|
||||||
case .packOrder, .packOrderInfo:
|
case .suggestOptions, .largeEmoji, .suggestAnimatedEmoji, .packOrder, .packOrderInfo:
|
||||||
return InstalledStickerPacksSection.order.rawValue
|
return InstalledStickerPacksSection.settings.rawValue
|
||||||
case .packsTitle, .pack, .packsInfo:
|
case .packsTitle, .pack, .packsInfo:
|
||||||
return InstalledStickerPacksSection.stickers.rawValue
|
return InstalledStickerPacksSection.stickers.rawValue
|
||||||
}
|
}
|
||||||
@@ -114,36 +109,32 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
|||||||
|
|
||||||
var stableId: InstalledStickerPacksEntryId {
|
var stableId: InstalledStickerPacksEntryId {
|
||||||
switch self {
|
switch self {
|
||||||
case .suggestOptions:
|
|
||||||
return .index(0)
|
|
||||||
case .largeEmoji:
|
|
||||||
return .index(1)
|
|
||||||
case .animatedStickers:
|
|
||||||
return .index(2)
|
|
||||||
case .animatedStickersInfo:
|
|
||||||
return .index(3)
|
|
||||||
case .trending:
|
case .trending:
|
||||||
return .index(4)
|
return .index(0)
|
||||||
case .archived:
|
case .archived:
|
||||||
return .index(5)
|
return .index(1)
|
||||||
case .emoji:
|
case .emoji:
|
||||||
return .index(6)
|
return .index(2)
|
||||||
case .masks:
|
case .masks:
|
||||||
return .index(7)
|
return .index(3)
|
||||||
case .quickReaction:
|
case .quickReaction:
|
||||||
return .index(8)
|
return .index(4)
|
||||||
|
case .suggestOptions:
|
||||||
|
return .index(5)
|
||||||
|
case .largeEmoji:
|
||||||
|
return .index(6)
|
||||||
case .suggestAnimatedEmoji:
|
case .suggestAnimatedEmoji:
|
||||||
return .index(9)
|
return .index(7)
|
||||||
case .packOrder:
|
case .packOrder:
|
||||||
return .index(10)
|
return .index(8)
|
||||||
case .packOrderInfo:
|
case .packOrderInfo:
|
||||||
return .index(11)
|
return .index(9)
|
||||||
case .packsTitle:
|
case .packsTitle:
|
||||||
return .index(12)
|
return .index(10)
|
||||||
case let .pack(_, _, _, info, _, _, _, _, _, _):
|
case let .pack(_, _, _, info, _, _, _, _, _, _):
|
||||||
return .pack(info.id)
|
return .pack(info.id)
|
||||||
case .packsInfo:
|
case .packsInfo:
|
||||||
return .index(13)
|
return .index(11)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,18 +182,6 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
|||||||
} else {
|
} else {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
case let .animatedStickers(lhsTheme, lhsText, lhsValue):
|
|
||||||
if case let .animatedStickers(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue {
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
case let .animatedStickersInfo(lhsTheme, lhsText):
|
|
||||||
if case let .animatedStickersInfo(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
|
|
||||||
return true
|
|
||||||
} else {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
case let .packOrder(lhsTheme, lhsText, lhsValue):
|
case let .packOrder(lhsTheme, lhsText, lhsValue):
|
||||||
if case let .packOrder(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue {
|
if case let .packOrder(rhsTheme, rhsText, rhsValue) = rhs, lhsTheme === rhsTheme, lhsText == rhsText, lhsValue == rhsValue {
|
||||||
return true
|
return true
|
||||||
@@ -274,93 +253,79 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
|||||||
|
|
||||||
static func <(lhs: InstalledStickerPacksEntry, rhs: InstalledStickerPacksEntry) -> Bool {
|
static func <(lhs: InstalledStickerPacksEntry, rhs: InstalledStickerPacksEntry) -> Bool {
|
||||||
switch lhs {
|
switch lhs {
|
||||||
case .suggestOptions:
|
|
||||||
switch rhs {
|
|
||||||
case .suggestOptions:
|
|
||||||
return false
|
|
||||||
default:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
case .largeEmoji:
|
|
||||||
switch rhs {
|
|
||||||
case .suggestOptions, .largeEmoji:
|
|
||||||
return false
|
|
||||||
default:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
case .animatedStickers:
|
|
||||||
switch rhs {
|
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers:
|
|
||||||
return false
|
|
||||||
default:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
case .animatedStickersInfo:
|
|
||||||
switch rhs {
|
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo:
|
|
||||||
return false
|
|
||||||
default:
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
case .trending:
|
case .trending:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending:
|
case .trending:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .archived:
|
case .archived:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived:
|
case .trending, .archived:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .masks:
|
case .masks:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived, .masks:
|
case .trending, .archived, .masks:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .emoji:
|
case .emoji:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived, .masks, .emoji:
|
case .trending, .archived, .masks, .emoji:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .quickReaction:
|
case .quickReaction:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived, .masks, .emoji, .quickReaction:
|
case .trending, .archived, .masks, .emoji, .quickReaction:
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case .suggestOptions:
|
||||||
|
switch rhs {
|
||||||
|
case .trending, .archived, .masks, .emoji, .quickReaction, .suggestOptions:
|
||||||
|
return false
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case .largeEmoji:
|
||||||
|
switch rhs {
|
||||||
|
case .trending, .archived, .masks, .emoji, .quickReaction, .suggestOptions, .largeEmoji:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .packOrder:
|
case .packOrder:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived, .masks, .emoji, .quickReaction, .packOrder:
|
case .trending, .archived, .masks, .emoji, .quickReaction, .suggestOptions, .largeEmoji, .packOrder:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .packOrderInfo:
|
case .packOrderInfo:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived, .masks, .emoji, .quickReaction, .packOrder, .packOrderInfo:
|
case .trending, .archived, .masks, .emoji, .quickReaction, .suggestOptions, .largeEmoji, .packOrder, .packOrderInfo:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .suggestAnimatedEmoji:
|
case .suggestAnimatedEmoji:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .archived, .masks, .emoji, .quickReaction, .packOrder, .packOrderInfo, .suggestAnimatedEmoji:
|
case .trending, .archived, .masks, .emoji, .quickReaction, .suggestOptions, .largeEmoji, .packOrder, .packOrderInfo, .suggestAnimatedEmoji:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
case .packsTitle:
|
case .packsTitle:
|
||||||
switch rhs {
|
switch rhs {
|
||||||
case .suggestOptions, .largeEmoji, .animatedStickers, .animatedStickersInfo, .trending, .masks, .emoji, .quickReaction, .archived, .packOrder, .packOrderInfo, .suggestAnimatedEmoji, .packsTitle:
|
case .trending, .archived, .masks, .emoji, .quickReaction, .suggestOptions, .largeEmoji, .packOrder, .packOrderInfo, .suggestAnimatedEmoji, .packsTitle:
|
||||||
return false
|
return false
|
||||||
default:
|
default:
|
||||||
return true
|
return true
|
||||||
@@ -395,11 +360,6 @@ private indirect enum InstalledStickerPacksEntry: ItemListNodeEntry {
|
|||||||
return ItemListSwitchItem(presentationData: presentationData, title: text, value: value, sectionId: self.section, style: .blocks, updated: { value in
|
return ItemListSwitchItem(presentationData: presentationData, title: text, value: value, sectionId: self.section, style: .blocks, updated: { value in
|
||||||
arguments.toggleLargeEmoji(value)
|
arguments.toggleLargeEmoji(value)
|
||||||
})
|
})
|
||||||
case let .animatedStickers(_, text, value):
|
|
||||||
return ItemListSwitchItem(presentationData: presentationData, title: text, value: value, sectionId: self.section, style: .blocks, updated: { _ in
|
|
||||||
})
|
|
||||||
case let .animatedStickersInfo(_, text):
|
|
||||||
return ItemListTextItem(presentationData: presentationData, text: .plain(text), sectionId: self.section)
|
|
||||||
case let .trending(theme, text, count):
|
case let .trending(theme, text, count):
|
||||||
return ItemListDisclosureItem(presentationData: presentationData, icon: UIImage(bundleImageName: "Settings/Menu/Trending")?.precomposed(), title: text, label: count == 0 ? "" : "\(count)", labelStyle: .badge(theme.list.itemAccentColor), sectionId: self.section, style: .blocks, action: {
|
return ItemListDisclosureItem(presentationData: presentationData, icon: UIImage(bundleImageName: "Settings/Menu/Trending")?.precomposed(), title: text, label: count == 0 ? "" : "\(count)", labelStyle: .badge(theme.list.itemAccentColor), sectionId: self.section, style: .blocks, action: {
|
||||||
arguments.openFeatured()
|
arguments.openFeatured()
|
||||||
@@ -535,6 +495,17 @@ private func installedStickerPacksControllerEntries(context: AccountContext, pre
|
|||||||
|
|
||||||
switch mode {
|
switch mode {
|
||||||
case .general, .modal:
|
case .general, .modal:
|
||||||
|
if !featured.isEmpty {
|
||||||
|
entries.append(.trending(presentationData.theme, presentationData.strings.StickerPacksSettings_TrendingStickers, Int32(featured.count)))
|
||||||
|
}
|
||||||
|
if let archived = archived, !archived.isEmpty {
|
||||||
|
entries.append(.archived(presentationData.theme, presentationData.strings.StickerPacksSettings_ArchivedPacks, Int32(archived.count), archived))
|
||||||
|
}
|
||||||
|
entries.append(.emoji(presentationData.theme, presentationData.strings.StickerPacksSettings_Emoji, emojiCount))
|
||||||
|
if let quickReaction = quickReaction, let availableReactions = availableReactions {
|
||||||
|
entries.append(.quickReaction(presentationData.strings.Settings_QuickReactionSetup_NavigationTitle, quickReaction, availableReactions))
|
||||||
|
}
|
||||||
|
|
||||||
let suggestString: String
|
let suggestString: String
|
||||||
switch stickerSettings.emojiStickerSuggestionMode {
|
switch stickerSettings.emojiStickerSuggestionMode {
|
||||||
case .none:
|
case .none:
|
||||||
@@ -545,22 +516,7 @@ private func installedStickerPacksControllerEntries(context: AccountContext, pre
|
|||||||
suggestString = presentationData.strings.Stickers_SuggestAdded
|
suggestString = presentationData.strings.Stickers_SuggestAdded
|
||||||
}
|
}
|
||||||
entries.append(.suggestOptions(presentationData.theme, presentationData.strings.Stickers_SuggestStickers, suggestString))
|
entries.append(.suggestOptions(presentationData.theme, presentationData.strings.Stickers_SuggestStickers, suggestString))
|
||||||
|
|
||||||
entries.append(.largeEmoji(presentationData.theme, presentationData.strings.Appearance_LargeEmoji, presentationData.largeEmoji))
|
entries.append(.largeEmoji(presentationData.theme, presentationData.strings.Appearance_LargeEmoji, presentationData.largeEmoji))
|
||||||
|
|
||||||
if !featured.isEmpty {
|
|
||||||
entries.append(.trending(presentationData.theme, presentationData.strings.StickerPacksSettings_TrendingStickers, Int32(featured.count)))
|
|
||||||
}
|
|
||||||
if let archived = archived, !archived.isEmpty {
|
|
||||||
entries.append(.archived(presentationData.theme, presentationData.strings.StickerPacksSettings_ArchivedPacks, Int32(archived.count), archived))
|
|
||||||
}
|
|
||||||
|
|
||||||
entries.append(.emoji(presentationData.theme, presentationData.strings.StickerPacksSettings_Emoji, emojiCount))
|
|
||||||
|
|
||||||
if let quickReaction = quickReaction, let availableReactions = availableReactions {
|
|
||||||
entries.append(.quickReaction(presentationData.strings.Settings_QuickReactionSetup_NavigationTitle, quickReaction, availableReactions))
|
|
||||||
}
|
|
||||||
|
|
||||||
entries.append(.packOrder(presentationData.theme, presentationData.strings.StickerPacksSettings_DynamicOrder, stickerSettings.dynamicPackOrder))
|
entries.append(.packOrder(presentationData.theme, presentationData.strings.StickerPacksSettings_DynamicOrder, stickerSettings.dynamicPackOrder))
|
||||||
entries.append(.packOrderInfo(presentationData.theme, presentationData.strings.StickerPacksSettings_DynamicOrderInfo))
|
entries.append(.packOrderInfo(presentationData.theme, presentationData.strings.StickerPacksSettings_DynamicOrderInfo))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user