mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
Add a Developer Options button to the AuthenticationStartScreen on Nightly builds. (#5472)
* Add a Developer Options button to the AuthenticationStartScreen on Nightly builds. * Make sure the Developer Options are actually shown in the settings screen on Nightlies.
This commit is contained in:
+8
-3
@@ -23,10 +23,12 @@ enum AuthenticationStartScreenCoordinatorAction {
|
||||
case loginWithQR
|
||||
case login
|
||||
case register
|
||||
case reportProblem
|
||||
|
||||
case loginDirectlyWithOIDC(data: OIDCAuthorizationDataProxy, window: UIWindow)
|
||||
case loginDirectlyWithPassword(loginHint: String?)
|
||||
|
||||
case reportProblem
|
||||
case developerOptions
|
||||
}
|
||||
|
||||
final class AuthenticationStartScreenCoordinator: CoordinatorProtocol {
|
||||
@@ -62,13 +64,16 @@ final class AuthenticationStartScreenCoordinator: CoordinatorProtocol {
|
||||
actionsSubject.send(.login)
|
||||
case .register:
|
||||
actionsSubject.send(.register)
|
||||
case .reportProblem:
|
||||
actionsSubject.send(.reportProblem)
|
||||
|
||||
case .loginDirectlyWithOIDC(let data, let window):
|
||||
actionsSubject.send(.loginDirectlyWithOIDC(data: data, window: window))
|
||||
case .loginDirectlyWithPassword(let loginHint):
|
||||
actionsSubject.send(.loginDirectlyWithPassword(loginHint: loginHint))
|
||||
|
||||
case .reportProblem:
|
||||
actionsSubject.send(.reportProblem)
|
||||
case .developerOptions:
|
||||
actionsSubject.send(.developerOptions)
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
+5
-2
@@ -12,10 +12,12 @@ enum AuthenticationStartScreenViewModelAction: Equatable {
|
||||
case loginWithQR
|
||||
case login
|
||||
case register
|
||||
case reportProblem
|
||||
|
||||
case loginDirectlyWithOIDC(data: OIDCAuthorizationDataProxy, window: UIWindow)
|
||||
case loginDirectlyWithPassword(loginHint: String?)
|
||||
|
||||
case reportProblem
|
||||
case developerOptions
|
||||
}
|
||||
|
||||
struct AuthenticationStartScreenViewState: BindableState {
|
||||
@@ -56,11 +58,12 @@ enum AuthenticationStartScreenAlertType {
|
||||
enum AuthenticationStartScreenViewAction {
|
||||
/// Updates the window used as the OIDC presentation anchor.
|
||||
case updateWindow(UIWindow)
|
||||
case developerOptions
|
||||
case reportProblem
|
||||
|
||||
case loginWithQR
|
||||
case login
|
||||
case register
|
||||
case reportProblem
|
||||
|
||||
case continueWithClassic(ClassicAppAccount)
|
||||
case otherOptions(ClassicAppAccount)
|
||||
|
||||
+8
-4
@@ -83,16 +83,20 @@ class AuthenticationStartScreenViewModel: AuthenticationStartScreenViewModelType
|
||||
case .updateWindow(let window):
|
||||
guard state.window != window else { return }
|
||||
state.window = window
|
||||
case .reportProblem:
|
||||
if canReportProblem {
|
||||
actionsSubject.send(.reportProblem)
|
||||
}
|
||||
case .developerOptions:
|
||||
actionsSubject.send(.developerOptions)
|
||||
|
||||
case .loginWithQR:
|
||||
actionsSubject.send(.loginWithQR)
|
||||
case .login:
|
||||
Task { await login() }
|
||||
case .register:
|
||||
actionsSubject.send(.register)
|
||||
case .reportProblem:
|
||||
if canReportProblem {
|
||||
actionsSubject.send(.reportProblem)
|
||||
}
|
||||
|
||||
case .continueWithClassic(let account):
|
||||
Task { await login(classicAppAccount: account) }
|
||||
case .otherOptions(let account):
|
||||
|
||||
+16
-2
@@ -123,12 +123,15 @@ struct AuthenticationStartScreen: View {
|
||||
versionText
|
||||
.font(.compound.bodySM)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(.top, 16)
|
||||
.onTapGesture(count: 7) {
|
||||
context.send(viewAction: .reportProblem)
|
||||
}
|
||||
.accessibilityIdentifier(A11yIdentifiers.authenticationStartScreen.appVersion)
|
||||
.overlay(alignment: .trailing) {
|
||||
developerOptionsButton
|
||||
.scaledOffset(x: 32, y: -0.5, relativeTo: .compound.bodySM)
|
||||
}
|
||||
.padding(.top, 16)
|
||||
}
|
||||
.padding(.horizontal, verticalSizeClass == .compact ? 128 : 24)
|
||||
.readableFrame()
|
||||
@@ -140,6 +143,17 @@ struct AuthenticationStartScreen: View {
|
||||
return Text(L10n.screenOnboardingAppVersion(shortVersionString))
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
var developerOptionsButton: some View {
|
||||
if AppSettings.appBuildType != .release, !ProcessInfo.isRunningTests {
|
||||
Button { context.send(viewAction: .developerOptions) } label: {
|
||||
CompoundIcon(\.code)
|
||||
.foregroundStyle(.compound.iconSecondary)
|
||||
}
|
||||
.accessibilityLabel(L10n.commonDeveloperOptions)
|
||||
}
|
||||
}
|
||||
|
||||
@ToolbarContentBuilder
|
||||
var toolbar: some ToolbarContent {
|
||||
ToolbarItem(placement: .primaryAction) {
|
||||
|
||||
Reference in New Issue
Block a user