Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public enum ExperimentalFeature: String, CaseIterable, Codable {
case whatIfScore = "what_if_score"
case rebuiltCalendar = "rebuilt_calendar"
case revertToOldStudentToDo = "revert_to_old_student_todo"
case studentLearnerDashboard = "student_learner_dashboard"
case studentLearnerDashboard = "learner_dashboard"

private static var sharedUserDefaults: UserDefaults {
UserDefaults(suiteName: Bundle.main.appGroupID()) ?? .standard
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public enum EnvironmentFeatureFlags: String {
case mobile_offline_mode
case account_survey_notifications
case restrict_student_access
case widget_dashboard
}

public class GetEnvironmentFeatureFlags: CollectionUseCase {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,17 @@ public struct SessionDefaults: Equatable {
set { self["isSpeedGraderAnnotationToolbarVisible"] = newValue }
}

// MARK: - Learner Dashboard

public var learnerDashboardEnabledOnInstance: Bool {
get {
(self["learnerDashboardEnabledOnInstance"] as? Bool) ?? false
}
set {
self["learnerDashboardEnabledOnInstance"] = newValue
}
}

public var preferNewLearnerDashboard: Bool {
get {
(self["preferNewLearnerDashboard"] as? Bool) ?? true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public class DashboardSettingsInteractorLive: DashboardSettingsInteractor {
self.useNewDashboard = CurrentValueSubject<Bool, Never>(defaults.preferNewLearnerDashboard)
self.isGradesSwitchVisible = (environment.app == .student)
self.isColorOverlaySwitchVisible = (environment.app == .student || environment.app == .teacher)
self.isNewDashboardSwitchVisible = ExperimentalFeature.studentLearnerDashboard.isEnabled
self.isNewDashboardSwitchVisible = ExperimentalFeature.studentLearnerDashboard.isEnabled && defaults.learnerDashboardEnabledOnInstance
self.userSettings = environment.subscribe(GetUserSettings(userID: "self")) { [weak self] in
self?.updateColorOverlay()
}
Expand Down
6 changes: 4 additions & 2 deletions Student/Student/StudentAppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ class StudentAppDelegate: UIResponder, UIApplicationDelegate, AppEnvironmentDele
return env
}()

private var environmentFeatureFlags: Store<GetEnvironmentFeatureFlags>?
private var shouldSetK5StudentView = false
private var backgroundFileSubmissionAssembly: FileSubmissionAssembly?

Expand Down Expand Up @@ -125,7 +124,10 @@ class StudentAppDelegate: UIResponder, UIApplicationDelegate, AppEnvironmentDele
let userProfile = list.first
return unownedSelf.setupUserEnvironment()
.flatMap { _ in unownedSelf.getFeatureFlags() }
.map { unownedSelf.initializeTracking(environmentFeatureFlags: $0) }
.map { featureFlags in
unownedSelf.environment.userDefaults?.learnerDashboardEnabledOnInstance = featureFlags.isFeatureEnabled(.widget_dashboard)
unownedSelf.initializeTracking(environmentFeatureFlags: featureFlags)
}
.map { _ in unownedSelf.requestNotificationAuthorizationForUITests() }
.map { _ in unownedSelf.setK5StudentViewIfNeeded(userProfile: userProfile) }
.flatMap { _ in unownedSelf.showLanguageAlertIfNeeded(locale: userProfile?.locale ?? session.locale) }
Expand Down
6 changes: 5 additions & 1 deletion Student/Student/StudentTabBarController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,12 @@ class StudentTabBarController: UITabBarController, SnackBarProvider {
tabBarImageSelected = .homeroomTabActive
} else {
let defaults = AppEnvironment.shared.userDefaults ?? .fallback

let isNewDashboardEnabledByRemoteConfig = ExperimentalFeature.studentLearnerDashboard.isEnabled
let isNewDashboardEnabledOnInstance = defaults.learnerDashboardEnabledOnInstance
let preferNewDashboard = defaults.preferNewLearnerDashboard
let shouldShowNewDashboard = ExperimentalFeature.studentLearnerDashboard.isEnabled && preferNewDashboard

let shouldShowNewDashboard = isNewDashboardEnabledByRemoteConfig && isNewDashboardEnabledOnInstance && preferNewDashboard

if shouldShowNewDashboard {
let dashboard = CoreHostingController(LearnerDashboardAssembly.makeScreen())
Expand Down
Loading