Skip to content

Commit eded9cf

Browse files
committed
Add Demo App reminders feature flag
1 parent d186f7c commit eded9cf

File tree

4 files changed

+34
-14
lines changed

4 files changed

+34
-14
lines changed

DemoApp/Screens/AppConfigViewController/AppConfigViewController.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ struct DemoAppConfig {
2222
var shouldShowConnectionBanner: Bool
2323
/// A Boolean value to define if the premium member feature is enabled. This is to test custom member data.
2424
var isPremiumMemberFeatureEnabled: Bool
25+
/// A Boolean value to define if the reminders feature is enabled.
26+
var isRemindersEnabled: Bool
2527

2628
/// The details to generate expirable tokens in the demo app.
2729
struct TokenRefreshDetails {
@@ -50,7 +52,8 @@ class AppConfig {
5052
isLocationAttachmentsEnabled: false,
5153
tokenRefreshDetails: nil,
5254
shouldShowConnectionBanner: false,
53-
isPremiumMemberFeatureEnabled: false
55+
isPremiumMemberFeatureEnabled: false,
56+
isRemindersEnabled: false
5457
)
5558

5659
if StreamRuntimeCheck.isStreamInternalConfiguration {
@@ -61,6 +64,7 @@ class AppConfig {
6164
demoAppConfig.isHardDeleteEnabled = true
6265
demoAppConfig.shouldShowConnectionBanner = true
6366
demoAppConfig.isPremiumMemberFeatureEnabled = true
67+
demoAppConfig.isRemindersEnabled = true
6468
StreamRuntimeCheck.assertionsEnabled = true
6569
}
6670
}
@@ -173,6 +177,7 @@ class AppConfigViewController: UITableViewController {
173177
case tokenRefreshDetails
174178
case shouldShowConnectionBanner
175179
case isPremiumMemberFeatureEnabled
180+
case isRemindersEnabled
176181
}
177182

178183
enum ComponentsConfigOption: String, CaseIterable {
@@ -338,6 +343,10 @@ class AppConfigViewController: UITableViewController {
338343
cell.accessoryView = makeSwitchButton(demoAppConfig.isPremiumMemberFeatureEnabled) { [weak self] newValue in
339344
self?.demoAppConfig.isPremiumMemberFeatureEnabled = newValue
340345
}
346+
case .isRemindersEnabled:
347+
cell.accessoryView = makeSwitchButton(demoAppConfig.isRemindersEnabled) { [weak self] newValue in
348+
self?.demoAppConfig.isRemindersEnabled = newValue
349+
}
341350
}
342351
}
343352

DemoApp/Screens/DemoAppTabBarController.swift

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,10 @@ class DemoAppTabBarController: UITabBarController, CurrentChatUserControllerDele
6565
// Initialize events controller
6666
setupEventsController()
6767

68-
// Load reminders with remindAt to update the badge.
69-
currentUserController.loadReminders(query: .init(
70-
filter: .withRemindAt,
71-
pageSize: 50
72-
))
68+
// Update reminders badge if the feature is enabled.
69+
if AppConfig.shared.demoAppConfig.isRemindersEnabled {
70+
updateRemindersBadge()
71+
}
7372

7473
tabBar.backgroundColor = Appearance.default.colorPalette.background
7574
tabBar.isTranslucent = true
@@ -88,7 +87,12 @@ class DemoAppTabBarController: UITabBarController, CurrentChatUserControllerDele
8887
reminderListVC.tabBarItem.title = "Reminders"
8988
reminderListVC.tabBarItem.image = UIImage(systemName: "bell")
9089

91-
viewControllers = [channelListVC, threadListVC, draftListVC, reminderListVC]
90+
// Only show reminders tab if the feature is enabled
91+
if AppConfig.shared.demoAppConfig.isRemindersEnabled {
92+
viewControllers = [channelListVC, threadListVC, draftListVC, reminderListVC]
93+
} else {
94+
viewControllers = [channelListVC, threadListVC, draftListVC]
95+
}
9296
}
9397

9498
// MARK: - Events Controller Setup
@@ -107,9 +111,8 @@ class DemoAppTabBarController: UITabBarController, CurrentChatUserControllerDele
107111
// MARK: - EventsControllerDelegate
108112

109113
func eventsController(_ controller: EventsController, didReceiveEvent event: Event) {
110-
// Check if the event is a ReminderDueEvent
111-
if let reminderDueEvent = event as? ReminderDueEvent {
112-
// Handle the reminder due event
114+
if AppConfig.shared.demoAppConfig.isRemindersEnabled,
115+
let reminderDueEvent = event as? ReminderDueEvent {
113116
handleReminderDueEvent(reminderDueEvent)
114117
}
115118
}
@@ -140,6 +143,11 @@ class DemoAppTabBarController: UITabBarController, CurrentChatUserControllerDele
140143
_ controller: CurrentChatUserController,
141144
didChangeMessageReminders messageReminders: [MessageReminder]
142145
) {
143-
reminderListVC.tabBarItem.badgeValue = messageReminders.isEmpty ? nil : "\(messageReminders.count)"
146+
updateRemindersBadge()
147+
}
148+
149+
private func updateRemindersBadge() {
150+
let reminders = currentUserController.messageReminders
151+
reminderListVC.tabBarItem.badgeValue = reminders.isEmpty ? nil : "\(reminders.count)"
144152
}
145153
}

DemoApp/StreamChat/Components/DemoChatMessageActionsVC.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,11 @@ final class DemoChatMessageActionsVC: ChatMessageActionsVC {
2020
if message?.isBounced == false {
2121
actions.append(pinMessageActionItem())
2222
actions.append(translateActionItem())
23-
actions.append(reminderActionItem())
24-
actions.append(saveForLaterActionItem())
23+
24+
if AppConfig.shared.demoAppConfig.isRemindersEnabled {
25+
actions.append(reminderActionItem())
26+
actions.append(saveForLaterActionItem())
27+
}
2528
}
2629

2730
if AppConfig.shared.demoAppConfig.isMessageDebuggerEnabled {

DemoApp/StreamChat/Components/DemoChatMessageLayoutOptionsResolver.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ final class DemoChatMessageLayoutOptionsResolver: ChatMessageLayoutOptionsResolv
2929
options.insert(.pinInfo)
3030
}
3131

32-
if message.reminder != nil {
32+
if AppConfig.shared.demoAppConfig.isRemindersEnabled && message.reminder != nil {
3333
options.insert(.saveForLaterInfo)
3434
}
3535

0 commit comments

Comments
 (0)