Skip to content

Commit 2d57280

Browse files
committed
Merge remote-tracking branch 'origin/develop' into build/bump-agp
* origin/develop: chore(phone/confirm): tweak OTP box to better match iOS fix(modals): only dismiss IME (and wait) when IME is open
2 parents 0028aa2 + fceb2ca commit 2d57280

5 files changed

Lines changed: 39 additions & 14 deletions

File tree

app/src/main/java/com/getcode/navigation/screens/Modals.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import com.getcode.navigation.core.CodeNavigator
2626
import com.getcode.navigation.core.LocalCodeNavigator
2727
import com.getcode.theme.CodeTheme
2828
import com.getcode.theme.sheetHeight
29+
import com.getcode.util.keyboardAsState
2930
import com.getcode.view.components.SheetTitle
3031
import kotlinx.coroutines.delay
3132
import kotlinx.coroutines.launch
@@ -144,6 +145,8 @@ data object MainRoot : Screen {
144145
// TODO: potentially add a loading state here
145146
// so app doesn't appear stuck in a dead state
146147
// while we wait for auth check to complete
147-
Box(modifier = Modifier.fillMaxSize().background(CodeTheme.colors.background))
148+
Box(modifier = Modifier
149+
.fillMaxSize()
150+
.background(CodeTheme.colors.background))
148151
}
149152
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.getcode.util
2+
3+
import android.view.ViewTreeObserver
4+
import androidx.compose.runtime.Composable
5+
import androidx.compose.runtime.DisposableEffect
6+
import androidx.compose.runtime.State
7+
import androidx.compose.runtime.mutableStateOf
8+
import androidx.compose.runtime.remember
9+
import androidx.compose.ui.platform.LocalView
10+
import androidx.core.view.ViewCompat
11+
import androidx.core.view.WindowInsetsCompat
12+
13+
@Composable
14+
fun keyboardAsState(): State<Boolean> {
15+
val keyboardState = remember { mutableStateOf(false) }
16+
val view = LocalView.current
17+
val viewTreeObserver = view.viewTreeObserver
18+
DisposableEffect(viewTreeObserver) {
19+
val listener = ViewTreeObserver.OnGlobalLayoutListener {
20+
keyboardState.value = ViewCompat.getRootWindowInsets(view)
21+
?.isVisible(WindowInsetsCompat.Type.ime()) ?: true
22+
}
23+
viewTreeObserver.addOnGlobalLayoutListener(listener)
24+
onDispose { viewTreeObserver.removeOnGlobalLayoutListener(listener) }
25+
}
26+
return keyboardState
27+
}

app/src/main/java/com/getcode/view/components/OtpBox.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,22 @@ fun OtpBox(
2626
) {
2727

2828
val height = when (CodeTheme.dimens.heightWindowSizeClass) {
29-
WindowSizeClass.COMPACT -> 45
30-
else -> 60
31-
}
32-
val width = when (CodeTheme.dimens.widthWindowSizeClass) {
33-
WindowSizeClass.COMPACT -> 30
34-
else -> 42
29+
WindowSizeClass.COMPACT -> CodeTheme.dimens.staticGrid.x9
30+
else -> CodeTheme.dimens.staticGrid.x11
3531
}
3632

3733
Box(
3834
modifier = modifier
3935
.padding(CodeTheme.dimens.grid.x1)
40-
.height(height.dp)
41-
.width(width.dp)
36+
.height(height)
37+
.width(CodeTheme.dimens.staticGrid.x7)
4238
.clip(CodeTheme.shapes.small)
4339
.rememberedClickable(onClick = onClick)
4440
.border(
4541
border = if (isHighlighted)
46-
BorderStroke(CodeTheme.dimens.thickBorder, color = BrandLight.copy(alpha = 0.8f))
42+
BorderStroke(CodeTheme.dimens.thickBorder, color = BrandLight.copy(alpha = 0.7f))
4743
else
48-
BorderStroke(CodeTheme.dimens.border, color = BrandLight.copy(alpha = 0.4f)),
44+
BorderStroke(CodeTheme.dimens.border, color = BrandLight.copy(alpha = 0.3f)),
4945
shape = CodeTheme.shapes.small
5046
)
5147
.background(Color.White.copy(alpha = 0.1f)),

app/src/main/java/com/getcode/view/login/PhoneConfirm.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ fun PhoneConfirm(
115115
.padding(top = CodeTheme.dimens.inset)
116116
.wrapContentHeight()
117117
.fillMaxWidth(),
118-
verticalArrangement = Arrangement.spacedBy(CodeTheme.dimens.grid.x1)
118+
verticalArrangement = Arrangement.spacedBy(CodeTheme.dimens.grid.x2)
119119
) {
120120

121121
ProvideTextStyle(

app/src/main/java/com/getcode/view/login/PhoneVerifyViewModel.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,7 @@ class PhoneVerifyViewModel @Inject constructor(
180180
navigator.push(InviteCodeScreen(phoneNumber.urlEncode()))
181181
null
182182
}
183-
else ->
184-
getGenericError()
183+
else -> getGenericError()
185184
}?.let { message -> TopBarManager.showMessage(message) }
186185
res == PhoneVerificationService.SendVerificationCodeResponse.Result.OK
187186
}

0 commit comments

Comments
 (0)