mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 06:35:51 +00:00
Reaction notification settings
This commit is contained in:
@@ -63,6 +63,7 @@ private final class NotificationsAndSoundsArguments {
|
||||
let suppressWarning: () -> Void
|
||||
|
||||
let openPeerCategory: (NotificationsPeerCategory) -> Void
|
||||
let openReactions: () -> Void
|
||||
|
||||
let updateInAppSounds: (Bool) -> Void
|
||||
let updateInAppVibration: (Bool) -> Void
|
||||
@@ -80,7 +81,7 @@ private final class NotificationsAndSoundsArguments {
|
||||
|
||||
let updateNotificationsFromAllAccounts: (Bool) -> Void
|
||||
|
||||
init(context: AccountContext, presentController: @escaping (ViewController, ViewControllerPresentationArguments?) -> Void, pushController: @escaping(ViewController)->Void, soundSelectionDisposable: MetaDisposable, authorizeNotifications: @escaping () -> Void, suppressWarning: @escaping () -> Void, openPeerCategory: @escaping (NotificationsPeerCategory) -> Void, updateInAppSounds: @escaping (Bool) -> Void, updateInAppVibration: @escaping (Bool) -> Void, updateInAppPreviews: @escaping (Bool) -> Void, updateDisplayNameOnLockscreen: @escaping (Bool) -> Void, updateIncludeTag: @escaping (CounterTagSettings, Bool) -> Void, updateTotalUnreadCountCategory: @escaping (Bool) -> Void, resetNotifications: @escaping () -> Void, openAppSettings: @escaping () -> Void, updateJoinedNotifications: @escaping (Bool) -> Void, updateNotificationsFromAllAccounts: @escaping (Bool) -> Void) {
|
||||
init(context: AccountContext, presentController: @escaping (ViewController, ViewControllerPresentationArguments?) -> Void, pushController: @escaping(ViewController)->Void, soundSelectionDisposable: MetaDisposable, authorizeNotifications: @escaping () -> Void, suppressWarning: @escaping () -> Void, openPeerCategory: @escaping (NotificationsPeerCategory) -> Void, openReactions: @escaping () -> Void, updateInAppSounds: @escaping (Bool) -> Void, updateInAppVibration: @escaping (Bool) -> Void, updateInAppPreviews: @escaping (Bool) -> Void, updateDisplayNameOnLockscreen: @escaping (Bool) -> Void, updateIncludeTag: @escaping (CounterTagSettings, Bool) -> Void, updateTotalUnreadCountCategory: @escaping (Bool) -> Void, resetNotifications: @escaping () -> Void, openAppSettings: @escaping () -> Void, updateJoinedNotifications: @escaping (Bool) -> Void, updateNotificationsFromAllAccounts: @escaping (Bool) -> Void) {
|
||||
self.context = context
|
||||
self.presentController = presentController
|
||||
self.pushController = pushController
|
||||
@@ -88,6 +89,7 @@ private final class NotificationsAndSoundsArguments {
|
||||
self.authorizeNotifications = authorizeNotifications
|
||||
self.suppressWarning = suppressWarning
|
||||
self.openPeerCategory = openPeerCategory
|
||||
self.openReactions = openReactions
|
||||
self.updateInAppSounds = updateInAppSounds
|
||||
self.updateInAppVibration = updateInAppVibration
|
||||
self.updateInAppPreviews = updateInAppPreviews
|
||||
@@ -145,6 +147,7 @@ private enum NotificationsAndSoundsEntry: ItemListNodeEntry {
|
||||
case groupChats(PresentationTheme, String, String, String)
|
||||
case channels(PresentationTheme, String, String, String)
|
||||
case stories(PresentationTheme, String, String, String)
|
||||
case reactions(PresentationTheme, String, String, String)
|
||||
|
||||
case inAppHeader(PresentationTheme, String)
|
||||
case inAppSounds(PresentationTheme, String, Bool)
|
||||
@@ -171,7 +174,7 @@ private enum NotificationsAndSoundsEntry: ItemListNodeEntry {
|
||||
return NotificationsAndSoundsSection.accounts.rawValue
|
||||
case .permissionInfo, .permissionEnable:
|
||||
return NotificationsAndSoundsSection.permission.rawValue
|
||||
case .categoriesHeader, .privateChats, .groupChats, .channels, .stories:
|
||||
case .categoriesHeader, .privateChats, .groupChats, .channels, .stories, .reactions:
|
||||
return NotificationsAndSoundsSection.categories.rawValue
|
||||
case .inAppHeader, .inAppSounds, .inAppVibrate, .inAppPreviews:
|
||||
return NotificationsAndSoundsSection.inApp.rawValue
|
||||
@@ -208,6 +211,8 @@ private enum NotificationsAndSoundsEntry: ItemListNodeEntry {
|
||||
return 8
|
||||
case .stories:
|
||||
return 9
|
||||
case .reactions:
|
||||
return 10
|
||||
case .inAppHeader:
|
||||
return 14
|
||||
case .inAppSounds:
|
||||
@@ -326,6 +331,12 @@ private enum NotificationsAndSoundsEntry: ItemListNodeEntry {
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .reactions(lhsTheme, lhsTitle, lhsSubtitle, lhsLabel):
|
||||
if case let .reactions(rhsTheme, rhsTitle, rhsSubtitle, rhsLabel) = rhs, lhsTheme === rhsTheme, lhsTitle == rhsTitle, lhsSubtitle == rhsSubtitle, lhsLabel == rhsLabel {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
case let .inAppHeader(lhsTheme, lhsText):
|
||||
if case let .inAppHeader(rhsTheme, rhsText) = rhs, lhsTheme === rhsTheme, lhsText == rhsText {
|
||||
return true
|
||||
@@ -451,9 +462,13 @@ private enum NotificationsAndSoundsEntry: ItemListNodeEntry {
|
||||
arguments.openPeerCategory(.channel)
|
||||
})
|
||||
case let .stories(_, title, subtitle, label):
|
||||
return NotificationsCategoryItemListItem(presentationData: presentationData, icon: UIImage(bundleImageName: "Settings/Menu/Stories"), title: title, subtitle: subtitle, label: label, sectionId: self.section, style: .blocks, action: {
|
||||
return NotificationsCategoryItemListItem(presentationData: presentationData, icon: PresentationResourcesSettings.stories, title: title, subtitle: subtitle, label: label, sectionId: self.section, style: .blocks, action: {
|
||||
arguments.openPeerCategory(.stories)
|
||||
})
|
||||
case let .reactions(_, title, subtitle, label):
|
||||
return NotificationsCategoryItemListItem(presentationData: presentationData, icon: PresentationResourcesSettings.reactions, title: title, subtitle: subtitle, label: label, sectionId: self.section, style: .blocks, action: {
|
||||
arguments.openReactions()
|
||||
})
|
||||
case let .inAppHeader(_, text):
|
||||
return ItemListSectionHeaderItem(presentationData: presentationData, text: text, sectionId: self.section)
|
||||
case let .inAppSounds(_, text, value):
|
||||
@@ -564,6 +579,31 @@ private func notificationsAndSoundsEntries(authorizationStatus: AccessType, warn
|
||||
|
||||
entries.append(.stories(presentationData.theme, presentationData.strings.Notifications_Stories, !exceptions.stories.isEmpty ? presentationData.strings.Notifications_CategoryExceptions(Int32(exceptions.stories.peerIds.count)) : "", storiesValue))
|
||||
|
||||
//TODO:localize
|
||||
var reactionsValue: String = ""
|
||||
var hasReactionNotifications = false
|
||||
switch globalSettings.reactionSettings.messages {
|
||||
case .nobody:
|
||||
break
|
||||
default:
|
||||
if !reactionsValue.isEmpty {
|
||||
reactionsValue.append(", ")
|
||||
}
|
||||
hasReactionNotifications = true
|
||||
reactionsValue.append("Messages")
|
||||
}
|
||||
switch globalSettings.reactionSettings.stories {
|
||||
case .nobody:
|
||||
break
|
||||
default:
|
||||
if !reactionsValue.isEmpty {
|
||||
reactionsValue.append(", ")
|
||||
}
|
||||
hasReactionNotifications = true
|
||||
reactionsValue.append("Stories")
|
||||
}
|
||||
entries.append(.reactions(presentationData.theme, "Reactions", reactionsValue, hasReactionNotifications ? "On" : "Off"))
|
||||
|
||||
entries.append(.inAppHeader(presentationData.theme, presentationData.strings.Notifications_InAppNotifications.uppercased()))
|
||||
entries.append(.inAppSounds(presentationData.theme, presentationData.strings.Notifications_InAppNotificationsSounds, inAppSettings.playSounds))
|
||||
entries.append(.inAppVibrate(presentationData.theme, presentationData.strings.Notifications_InAppNotificationsVibrate, inAppSettings.vibrate))
|
||||
@@ -655,6 +695,10 @@ public func notificationsAndSoundsController(context: AccountContext, exceptions
|
||||
})
|
||||
}, focusOnItemTag: nil))
|
||||
})
|
||||
}, openReactions: {
|
||||
pushControllerImpl?(reactionNotificationSettingsController(
|
||||
context: context
|
||||
))
|
||||
}, updateInAppSounds: { value in
|
||||
let _ = updateInAppNotificationSettingsInteractively(accountManager: context.sharedContext.accountManager, { settings in
|
||||
var settings = settings
|
||||
|
||||
Reference in New Issue
Block a user