Skip to content

Commit 112c245

Browse files
authored
Merge pull request #24 from rbqks529/ui/#12_login_screen_refactor
[UI] 로그인 화면 아이콘, 코드 입력 로직 수정
2 parents 973f69f + a378135 commit 112c245

8 files changed

Lines changed: 40 additions & 53 deletions

File tree

Lines changed: 11 additions & 9 deletions
Loading

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/clubcode/ClubCodeInputScreen.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import androidx.compose.foundation.layout.height
1212
import androidx.compose.foundation.layout.padding
1313
import androidx.compose.foundation.layout.size
1414
import androidx.compose.foundation.shape.RoundedCornerShape
15-
import androidx.compose.material3.Icon
1615
import androidx.compose.material3.IconButton
1716
import androidx.compose.material3.Text
1817
import androidx.compose.runtime.Composable
@@ -33,7 +32,7 @@ import androidx.compose.ui.text.style.TextAlign
3332
import androidx.compose.ui.unit.dp
3433
import androidx.compose.ui.unit.sp
3534
import kotlinx.coroutines.delay
36-
import org.jetbrains.compose.resources.painterResource
35+
import coil3.compose.AsyncImage
3736
import org.jetbrains.compose.resources.stringResource
3837
import org.jetbrains.compose.ui.tooling.preview.Preview
3938
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
@@ -45,7 +44,6 @@ import whosinclient.composeapp.generated.resources.club_code_error_message
4544
import whosinclient.composeapp.generated.resources.club_code_title_1
4645
import whosinclient.composeapp.generated.resources.club_code_title_2
4746
import whosinclient.composeapp.generated.resources.confirm_button
48-
import whosinclient.composeapp.generated.resources.ic_back
4947

5048

5149
@Composable
@@ -108,10 +106,9 @@ fun ClubCodeInputScreen(
108106
.padding(bottom = 32.dp)
109107
.size(24.dp)
110108
) {
111-
Icon(
112-
painter = painterResource(Res.drawable.ic_back),
109+
AsyncImage(
110+
model = Res.getUri("files/ic_back.svg"),
113111
contentDescription = stringResource(Res.string.back_button),
114-
tint = Color.Black,
115112
modifier = Modifier.size(18.dp)
116113
)
117114
}

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/EmailVerificationScreen.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import androidx.compose.foundation.layout.fillMaxSize
99
import androidx.compose.foundation.layout.fillMaxWidth
1010
import androidx.compose.foundation.layout.padding
1111
import androidx.compose.foundation.layout.size
12-
import androidx.compose.material3.Icon
1312
import androidx.compose.material3.IconButton
1413
import androidx.compose.material3.Text
1514
import androidx.compose.runtime.Composable
@@ -29,7 +28,7 @@ import androidx.compose.ui.text.font.FontWeight
2928
import androidx.compose.ui.unit.dp
3029
import androidx.compose.ui.unit.sp
3130
import kotlinx.coroutines.delay
32-
import org.jetbrains.compose.resources.painterResource
31+
import coil3.compose.AsyncImage
3332
import org.jetbrains.compose.resources.stringResource
3433
import org.jetbrains.compose.ui.tooling.preview.Preview
3534
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
@@ -38,7 +37,6 @@ import whosinclient.composeapp.generated.resources.Res
3837
import whosinclient.composeapp.generated.resources.back_button
3938
import whosinclient.composeapp.generated.resources.confirm_button
4039
import whosinclient.composeapp.generated.resources.email_verification_title
41-
import whosinclient.composeapp.generated.resources.ic_back
4240

4341
@Composable
4442
fun EmailVerificationScreen(
@@ -86,10 +84,9 @@ fun EmailVerificationScreen(
8684
.padding(bottom = 32.dp)
8785
.size(24.dp)
8886
) {
89-
Icon(
90-
painter = painterResource(Res.drawable.ic_back),
87+
AsyncImage(
88+
model = Res.getUri("files/ic_back.svg"),
9189
contentDescription = stringResource(Res.string.back_button),
92-
tint = Color.Black,
9390
modifier = Modifier.size(18.dp)
9491
)
9592
}
@@ -123,6 +120,8 @@ fun EmailVerificationScreen(
123120
} else if (input.isEmpty() && !wasEmpty && index > 0) {
124121
currentFocusIndex = index - 1
125122
focusRequesters[index - 1].requestFocus()
123+
} else if (input.isNotEmpty()) {
124+
currentFocusIndex = index
126125
}
127126
}
128127
},

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/FindPasswordScreen.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize
77
import androidx.compose.foundation.layout.fillMaxWidth
88
import androidx.compose.foundation.layout.padding
99
import androidx.compose.foundation.layout.size
10-
import androidx.compose.material3.Icon
1110
import androidx.compose.material3.IconButton
1211
import androidx.compose.material3.Text
1312
import androidx.compose.runtime.Composable
@@ -21,15 +20,14 @@ import androidx.compose.ui.graphics.Color
2120
import androidx.compose.ui.text.font.FontWeight
2221
import androidx.compose.ui.unit.dp
2322
import androidx.compose.ui.unit.sp
24-
import org.jetbrains.compose.resources.painterResource
23+
import coil3.compose.AsyncImage
2524
import org.jetbrains.compose.resources.stringResource
2625
import org.jetbrains.compose.ui.tooling.preview.Preview
2726
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
2827
import org.whosin.client.presentation.auth.login.component.CommonLoginInputField
2928
import whosinclient.composeapp.generated.resources.Res
3029
import whosinclient.composeapp.generated.resources.back_button
3130
import whosinclient.composeapp.generated.resources.email_placeholder
32-
import whosinclient.composeapp.generated.resources.ic_back
3331
import whosinclient.composeapp.generated.resources.password_reset_title
3432
import whosinclient.composeapp.generated.resources.send_email_button
3533

@@ -59,12 +57,10 @@ fun FindPasswordScreen(
5957
.padding(bottom = 32.dp)
6058
.size(24.dp)
6159
) {
62-
Icon(
63-
painter = painterResource(Res.drawable.ic_back),
60+
AsyncImage(
61+
model = Res.getUri("files/ic_back.svg"),
6462
contentDescription = stringResource(Res.string.back_button),
65-
tint = Color.Black,
66-
modifier = Modifier
67-
.size(18.dp)
63+
modifier = Modifier.size(18.dp)
6864
)
6965
}
7066

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/NicknameInputScreen.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize
77
import androidx.compose.foundation.layout.fillMaxWidth
88
import androidx.compose.foundation.layout.padding
99
import androidx.compose.foundation.layout.size
10-
import androidx.compose.material3.Icon
1110
import androidx.compose.material3.IconButton
1211
import androidx.compose.material3.Text
1312
import androidx.compose.runtime.Composable
@@ -21,14 +20,13 @@ import androidx.compose.ui.graphics.Color
2120
import androidx.compose.ui.text.font.FontWeight
2221
import androidx.compose.ui.unit.dp
2322
import androidx.compose.ui.unit.sp
24-
import org.jetbrains.compose.resources.painterResource
23+
import coil3.compose.AsyncImage
2524
import org.jetbrains.compose.resources.stringResource
2625
import org.jetbrains.compose.ui.tooling.preview.Preview
2726
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
2827
import org.whosin.client.presentation.auth.login.component.CommonLoginInputField
2928
import whosinclient.composeapp.generated.resources.Res
3029
import whosinclient.composeapp.generated.resources.back_button
31-
import whosinclient.composeapp.generated.resources.ic_back
3230
import whosinclient.composeapp.generated.resources.next_button
3331
import whosinclient.composeapp.generated.resources.nickname_input_placeholder
3432
import whosinclient.composeapp.generated.resources.nickname_input_title
@@ -60,10 +58,9 @@ fun NicknameInputScreen(
6058
.padding(bottom = 32.dp)
6159
.size(24.dp)
6260
) {
63-
Icon(
64-
painter = painterResource(Res.drawable.ic_back),
61+
AsyncImage(
62+
model = Res.getUri("files/ic_back.svg"),
6563
contentDescription = stringResource(Res.string.back_button),
66-
tint = Color.Black,
6764
modifier = Modifier.size(18.dp)
6865
)
6966
}

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/PasswordInputScreen.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize
77
import androidx.compose.foundation.layout.fillMaxWidth
88
import androidx.compose.foundation.layout.padding
99
import androidx.compose.foundation.layout.size
10-
import androidx.compose.material3.Icon
1110
import androidx.compose.material3.IconButton
1211
import androidx.compose.material3.Text
1312
import androidx.compose.runtime.Composable
@@ -21,14 +20,13 @@ import androidx.compose.ui.graphics.Color
2120
import androidx.compose.ui.text.font.FontWeight
2221
import androidx.compose.ui.unit.dp
2322
import androidx.compose.ui.unit.sp
24-
import org.jetbrains.compose.resources.painterResource
23+
import coil3.compose.AsyncImage
2524
import org.jetbrains.compose.resources.stringResource
2625
import org.jetbrains.compose.ui.tooling.preview.Preview
2726
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
2827
import org.whosin.client.presentation.auth.login.component.CommonLoginInputField
2928
import whosinclient.composeapp.generated.resources.Res
3029
import whosinclient.composeapp.generated.resources.back_button
31-
import whosinclient.composeapp.generated.resources.ic_back
3230
import whosinclient.composeapp.generated.resources.next_button
3331
import whosinclient.composeapp.generated.resources.password_confirm_label
3432
import whosinclient.composeapp.generated.resources.password_confirm_placeholder
@@ -65,10 +63,9 @@ fun PasswordInputScreen(
6563
.padding(bottom = 32.dp)
6664
.size(24.dp)
6765
) {
68-
Icon(
69-
painter = painterResource(Res.drawable.ic_back),
66+
AsyncImage(
67+
model = Res.getUri("files/ic_back.svg"),
7068
contentDescription = stringResource(Res.string.back_button),
71-
tint = Color.Black,
7269
modifier = Modifier.size(18.dp)
7370
)
7471
}

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/SignupEmailInputScreen.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize
77
import androidx.compose.foundation.layout.fillMaxWidth
88
import androidx.compose.foundation.layout.padding
99
import androidx.compose.foundation.layout.size
10-
import androidx.compose.material3.Icon
1110
import androidx.compose.material3.IconButton
1211
import androidx.compose.material3.Text
1312
import androidx.compose.runtime.Composable
@@ -21,15 +20,14 @@ import androidx.compose.ui.graphics.Color
2120
import androidx.compose.ui.text.font.FontWeight
2221
import androidx.compose.ui.unit.dp
2322
import androidx.compose.ui.unit.sp
24-
import org.jetbrains.compose.resources.painterResource
23+
import coil3.compose.AsyncImage
2524
import org.jetbrains.compose.resources.stringResource
2625
import org.jetbrains.compose.ui.tooling.preview.Preview
2726
import org.whosin.client.presentation.auth.login.component.CommonLoginButton
2827
import org.whosin.client.presentation.auth.login.component.CommonLoginInputField
2928
import whosinclient.composeapp.generated.resources.Res
3029
import whosinclient.composeapp.generated.resources.back_button
3130
import whosinclient.composeapp.generated.resources.email_placeholder
32-
import whosinclient.composeapp.generated.resources.ic_back
3331
import whosinclient.composeapp.generated.resources.next_button
3432
import whosinclient.composeapp.generated.resources.signup_title
3533

@@ -59,12 +57,10 @@ fun SignupScreen(
5957
.padding(bottom = 32.dp)
6058
.size(24.dp)
6159
) {
62-
Icon(
63-
painter = painterResource(Res.drawable.ic_back),
60+
AsyncImage(
61+
model = Res.getUri("files/ic_back.svg"),
6462
contentDescription = stringResource(Res.string.back_button),
65-
tint = Color.Black,
66-
modifier = Modifier
67-
.size(18.dp)
63+
modifier = Modifier.size(18.dp)
6864
)
6965
}
7066

composeApp/src/commonMain/kotlin/org/whosin/client/presentation/auth/login/component/NumberInputBox.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,14 +70,17 @@ fun NumberInputBox(
7070
value = textFieldValue,
7171
onValueChange = { newValue ->
7272
val cleaned = newValue.text.replace("\u200B", "")
73-
val filtered = cleaned.filter { it.isDigit() }.take(1)
74-
73+
val filtered = cleaned.filter { it.isDigit() }
7574
if (newValue.text.isEmpty() && value.isEmpty()) {
7675
onBackspace?.invoke()
7776
return@BasicTextField
7877
}
79-
80-
onValueChange(filtered)
78+
79+
if (filtered.isNotEmpty()) {
80+
onValueChange(filtered.last().toString())
81+
} else {
82+
onValueChange("")
83+
}
8184
},
8285
textStyle = textStyle.copy(
8386
color = if (value.isEmpty()) Color.Transparent else Color.Black

0 commit comments

Comments
 (0)