Browse Source

Add You're in screen (UI)

tom
pull/781/head
Benoit Marty 1 year ago committed by Benoit Marty
parent
commit
0b0abbb6b6
  1. 3
      features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt
  2. 45
      features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt

3
features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListStateProvider.kt

@ -27,12 +27,13 @@ open class WaitListStateProvider : PreviewParameterProvider<WaitListState> {
aWaitListState(loginAction = Async.Loading()), aWaitListState(loginAction = Async.Loading()),
aWaitListState(loginAction = Async.Failure(Throwable())), aWaitListState(loginAction = Async.Failure(Throwable())),
aWaitListState(loginAction = Async.Failure(Throwable(message = "IO_ELEMENT_X_WAIT_LIST"))), aWaitListState(loginAction = Async.Failure(Throwable(message = "IO_ELEMENT_X_WAIT_LIST"))),
aWaitListState(loginAction = Async.Success(SessionId("@alice:element.io"))),
// Add other state here // Add other state here
) )
} }
fun aWaitListState( fun aWaitListState(
appName: String = "Element", appName: String = "Element X",
serverName: String = "server.org", serverName: String = "server.org",
loginAction: Async<SessionId> = Async.Uninitialized, loginAction: Async<SessionId> = Async.Uninitialized,
) = WaitListState( ) = WaitListState(

45
features/login/impl/src/main/kotlin/io/element/android/features/login/impl/screens/waitlistscreen/WaitListView.kt

@ -48,9 +48,11 @@ import androidx.lifecycle.Lifecycle
import io.element.android.features.login.impl.R import io.element.android.features.login.impl.R
import io.element.android.features.login.impl.error.isWaitListError import io.element.android.features.login.impl.error.isWaitListError
import io.element.android.features.login.impl.error.loginError import io.element.android.features.login.impl.error.loginError
import io.element.android.libraries.architecture.Async
import io.element.android.libraries.designsystem.components.dialogs.RetryDialog import io.element.android.libraries.designsystem.components.dialogs.RetryDialog
import io.element.android.libraries.designsystem.preview.ElementPreviewDark import io.element.android.libraries.designsystem.preview.ElementPreviewDark
import io.element.android.libraries.designsystem.preview.ElementPreviewLight import io.element.android.libraries.designsystem.preview.ElementPreviewLight
import io.element.android.libraries.designsystem.theme.components.Button
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.theme.components.TextButton import io.element.android.libraries.designsystem.theme.components.TextButton
@ -137,6 +139,7 @@ private fun WaitListContent(
.systemBarsPadding() .systemBarsPadding()
.padding(horizontal = 16.dp, vertical = 16.dp) .padding(horizontal = 16.dp, vertical = 16.dp)
) { ) {
if (state.loginAction !is Async.Success) {
TextButton( TextButton(
onClick = onCancelClicked, onClick = onCancelClicked,
colors = ButtonDefaults.buttonColors( colors = ButtonDefaults.buttonColors(
@ -151,6 +154,7 @@ private fun WaitListContent(
style = ElementTheme.typography.fontBodyLgMedium, style = ElementTheme.typography.fontBodyLgMedium,
) )
} }
}
Box( Box(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
contentAlignment = BiasAbsoluteAlignment( contentAlignment = BiasAbsoluteAlignment(
@ -171,26 +175,57 @@ private fun WaitListContent(
Spacer(modifier = Modifier.height(24.dp)) Spacer(modifier = Modifier.height(24.dp))
} }
Spacer(modifier = Modifier.height(18.dp)) Spacer(modifier = Modifier.height(18.dp))
val titleRes = when (state.loginAction) {
is Async.Success -> R.string.screen_waitlist_title_success
else -> R.string.screen_waitlist_title
}
Text( Text(
text = withColoredPeriod(R.string.screen_waitlist_title), text = withColoredPeriod(titleRes),
style = ElementTheme.typography.fontHeadingXlBold, style = ElementTheme.typography.fontHeadingXlBold,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = Color.White, color = Color.White,
) )
Spacer(modifier = Modifier.height(8.dp)) Spacer(modifier = Modifier.height(8.dp))
Text( val subtitle = when (state.loginAction) {
modifier = Modifier.widthIn(max = 360.dp), is Async.Success -> stringResource(
text = stringResource( id = R.string.screen_waitlist_message_success,
state.appName,
)
else -> stringResource(
id = R.string.screen_waitlist_message, id = R.string.screen_waitlist_message,
state.appName, state.appName,
state.serverName, state.serverName,
), )
}
Text(
modifier = Modifier.widthIn(max = 360.dp),
text = subtitle,
style = ElementTheme.typography.fontBodyLgRegular, style = ElementTheme.typography.fontBodyLgRegular,
textAlign = TextAlign.Center, textAlign = TextAlign.Center,
color = Color.White, color = Color.White,
) )
} }
} }
if (state.loginAction is Async.Success) {
Button(
onClick = { TODO() },
colors = ButtonDefaults.buttonColors(
containerColor = Color.White,
contentColor = Color.Black,
disabledContainerColor = Color.White,
disabledContentColor = Color.Black,
),
modifier = Modifier
.fillMaxWidth()
.align(Alignment.BottomCenter)
.padding(bottom = 8.dp)
) {
Text(
text = stringResource(id = CommonStrings.action_continue),
style = ElementTheme.typography.fontBodyLgMedium,
)
}
}
} }
} }

Loading…
Cancel
Save