Skip to content

Commit 71eceed

Browse files
committed
Add Canvas API and Firebase Remote Config flag handling
refs: MBL-19790 builds: Student affects: Student release note: none
1 parent 5484548 commit 71eceed

File tree

6 files changed

+23
-5
lines changed

6 files changed

+23
-5
lines changed

Core/Core/Common/CommonModels/AppEnvironment/ExperimentalFeature.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public enum ExperimentalFeature: String, CaseIterable, Codable {
3030
case whatIfScore = "what_if_score"
3131
case rebuiltCalendar = "rebuilt_calendar"
3232
case revertToOldStudentToDo = "revert_to_old_student_todo"
33-
case studentLearnerDashboard = "student_learner_dashboard"
33+
case studentLearnerDashboard = "learner_dashboard"
3434

3535
private static var sharedUserDefaults: UserDefaults {
3636
UserDefaults(suiteName: Bundle.main.appGroupID()) ?? .standard

Core/Core/Common/CommonModels/AppEnvironment/FeatureFlags/GetEnvironmentFeatureFlags.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public enum EnvironmentFeatureFlags: String {
2424
case mobile_offline_mode
2525
case account_survey_notifications
2626
case restrict_student_access
27+
case widget_dashboard
2728
}
2829

2930
public class GetEnvironmentFeatureFlags: CollectionUseCase {

Core/Core/Common/CommonModels/AppEnvironment/SessionDefaults.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,17 @@ public struct SessionDefaults: Equatable {
319319
set { self["isSpeedGraderAnnotationToolbarVisible"] = newValue }
320320
}
321321

322+
// MARK: - Learner Dashboard
323+
324+
public var learnerDashboardEnabledOnInstance: Bool {
325+
get {
326+
(self["learnerDashboardEnabledOnInstance"] as? Bool) ?? false
327+
}
328+
set {
329+
self["learnerDashboardEnabledOnInstance"] = newValue
330+
}
331+
}
332+
322333
public var preferNewLearnerDashboard: Bool {
323334
get {
324335
(self["preferNewLearnerDashboard"] as? Bool) ?? true

Core/Core/Features/Dashboard/Settings/Model/DashboardSettingsInteractorLive.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class DashboardSettingsInteractorLive: DashboardSettingsInteractor {
4747
self.useNewDashboard = CurrentValueSubject<Bool, Never>(defaults.preferNewLearnerDashboard)
4848
self.isGradesSwitchVisible = (environment.app == .student)
4949
self.isColorOverlaySwitchVisible = (environment.app == .student || environment.app == .teacher)
50-
self.isNewDashboardSwitchVisible = ExperimentalFeature.studentLearnerDashboard.isEnabled
50+
self.isNewDashboardSwitchVisible = ExperimentalFeature.studentLearnerDashboard.isEnabled && defaults.learnerDashboardEnabledOnInstance
5151
self.userSettings = environment.subscribe(GetUserSettings(userID: "self")) { [weak self] in
5252
self?.updateColorOverlay()
5353
}

Student/Student/StudentAppDelegate.swift

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ class StudentAppDelegate: UIResponder, UIApplicationDelegate, AppEnvironmentDele
4646
return env
4747
}()
4848

49-
private var environmentFeatureFlags: Store<GetEnvironmentFeatureFlags>?
5049
private var shouldSetK5StudentView = false
5150
private var backgroundFileSubmissionAssembly: FileSubmissionAssembly?
5251

@@ -125,7 +124,10 @@ class StudentAppDelegate: UIResponder, UIApplicationDelegate, AppEnvironmentDele
125124
let userProfile = list.first
126125
return unownedSelf.setupUserEnvironment()
127126
.flatMap { _ in unownedSelf.getFeatureFlags() }
128-
.map { unownedSelf.initializeTracking(environmentFeatureFlags: $0) }
127+
.map { featureFlags in
128+
unownedSelf.environment.userDefaults?.learnerDashboardEnabledOnInstance = featureFlags.isFeatureEnabled(.widget_dashboard)
129+
unownedSelf.initializeTracking(environmentFeatureFlags: featureFlags)
130+
}
129131
.map { _ in unownedSelf.requestNotificationAuthorizationForUITests() }
130132
.map { _ in unownedSelf.setK5StudentViewIfNeeded(userProfile: userProfile) }
131133
.flatMap { _ in unownedSelf.showLanguageAlertIfNeeded(locale: userProfile?.locale ?? session.locale) }

Student/Student/StudentTabBarController.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,12 @@ class StudentTabBarController: UITabBarController, SnackBarProvider {
9797
tabBarImageSelected = .homeroomTabActive
9898
} else {
9999
let defaults = AppEnvironment.shared.userDefaults ?? .fallback
100+
101+
let isNewDashboardEnabledByRemoteConfig = ExperimentalFeature.studentLearnerDashboard.isEnabled
102+
let isNewDashboardEnabledOnInstance = defaults.learnerDashboardEnabledOnInstance
100103
let preferNewDashboard = defaults.preferNewLearnerDashboard
101-
let shouldShowNewDashboard = ExperimentalFeature.studentLearnerDashboard.isEnabled && preferNewDashboard
104+
105+
let shouldShowNewDashboard = isNewDashboardEnabledByRemoteConfig && isNewDashboardEnabledOnInstance && preferNewDashboard
102106

103107
if shouldShowNewDashboard {
104108
let dashboard = CoreHostingController(LearnerDashboardAssembly.makeScreen())

0 commit comments

Comments
 (0)