Skip to content

Commit

Permalink
[TNT-117] feat: 트레이너, 트레이니 프로필 설정 화면 내 이미지 리사이즈 로직 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
hoyahozz committed Jan 24, 2025
1 parent 8411c6a commit 1fad9af
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 4 deletions.
4 changes: 4 additions & 0 deletions domain/src/main/java/co/kr/tnt/domain/Constants.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package co.kr.tnt.domain

// TnT 에서 사용자가 업로드할 수 있는 이미지의 최대 용량은 10MB이다.
const val IMAGE_MAX_SIZE = 10 * 1024 * 1024
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -31,22 +32,34 @@ import co.kr.tnt.designsystem.component.button.TnTBottomButton
import co.kr.tnt.designsystem.component.image.TnTProfileImage
import co.kr.tnt.designsystem.component.image.model.ProfileType
import co.kr.tnt.designsystem.theme.TnTTheme
import co.kr.tnt.domain.IMAGE_MAX_SIZE
import co.kr.tnt.feature.trainee.signup.R
import co.kr.tnt.trainee.signup.component.ProgressSteps
import co.kr.tnt.ui.coil.ResizeTransformation
import coil.compose.rememberAsyncImagePainter
import coil.request.ImageRequest

@Composable
fun TraineeProfileSetupScreen() {
val context = LocalContext.current

// TODO 상태 관리 따로 빼기
val maxLength = 15
var text by remember { mutableStateOf("") }
val isWarning by remember { derivedStateOf { text.length > maxLength } }
var profileImage by remember { mutableStateOf<Uri?>(null) }

val pickMediaLauncher = rememberLauncherForActivityResult(PickVisualMedia()) { uri ->
profileImage = uri
if (uri != null) {
profileImage = uri
}
}
val painter = rememberAsyncImagePainter(profileImage)
val painter = rememberAsyncImagePainter(
model = ImageRequest.Builder(context)
.data(profileImage)
.transformations(ResizeTransformation(IMAGE_MAX_SIZE))
.build(),
)

Scaffold(
// TODO 버튼 클릭 시 트레이너/트레이니 화면으로 이동
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
Expand All @@ -32,21 +33,33 @@ import co.kr.tnt.designsystem.component.button.TnTBottomButton
import co.kr.tnt.designsystem.component.image.TnTProfileImage
import co.kr.tnt.designsystem.component.image.model.ProfileType
import co.kr.tnt.designsystem.theme.TnTTheme
import co.kr.tnt.domain.IMAGE_MAX_SIZE
import co.kr.tnt.feature.trainer.signup.R
import co.kr.tnt.ui.coil.ResizeTransformation
import coil.compose.rememberAsyncImagePainter
import coil.request.ImageRequest

@Composable
fun TrainerProfileSetupScreen() {
val context = LocalContext.current

// TODO 상태 관리 따로 빼기
val maxLength = 15
var text by remember { mutableStateOf("") }
val isWarning by remember { derivedStateOf { text.length > maxLength } }
var profileImage by remember { mutableStateOf<Uri?>(null) }

val pickMediaLauncher = rememberLauncherForActivityResult(PickVisualMedia()) { uri ->
profileImage = uri
if (uri != null) {
profileImage = uri
}
}
val painter = rememberAsyncImagePainter(profileImage)
val painter = rememberAsyncImagePainter(
model = ImageRequest.Builder(context)
.data(profileImage)
.transformations(ResizeTransformation(IMAGE_MAX_SIZE))
.build(),
)

Scaffold(
topBar = { TnTTopBar(onBackClick = {}) },
Expand Down

0 comments on commit 1fad9af

Please sign in to comment.