Skip to content

Commit 9bebc7b

Browse files
committed
[fix]#208: 이미지 삭제 지원해요
1 parent 341a049 commit 9bebc7b

File tree

5 files changed

+56
-12
lines changed

5 files changed

+56
-12
lines changed

feature/entire/src/main/java/com/bff/wespot/entire/screen/edit/ProfileEditScreen.kt

+47-11
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import androidx.compose.foundation.rememberScrollState
2020
import androidx.compose.foundation.shape.CircleShape
2121
import androidx.compose.foundation.verticalScroll
2222
import androidx.compose.material3.ExperimentalMaterial3Api
23+
import androidx.compose.material3.HorizontalDivider
2324
import androidx.compose.material3.Scaffold
2425
import androidx.compose.material3.Text
2526
import androidx.compose.runtime.Composable
@@ -34,6 +35,7 @@ import androidx.compose.ui.Alignment
3435
import androidx.compose.ui.Modifier
3536
import androidx.compose.ui.draw.clip
3637
import androidx.compose.ui.focus.FocusState
38+
import androidx.compose.ui.graphics.Color
3739
import androidx.compose.ui.platform.LocalContext
3840
import androidx.compose.ui.platform.LocalFocusManager
3941
import androidx.compose.ui.platform.LocalView
@@ -63,6 +65,7 @@ import com.bff.wespot.navigation.Navigator
6365
import com.bff.wespot.ui.component.LetterCountIndicator
6466
import com.bff.wespot.ui.component.LoadingAnimation
6567
import com.bff.wespot.ui.component.TopToast
68+
import com.bff.wespot.ui.component.WSBottomSheet
6669
import com.bff.wespot.ui.model.ToastState
6770
import com.bff.wespot.ui.util.clickableSingle
6871
import com.bff.wespot.ui.util.handleSideEffect
@@ -99,10 +102,6 @@ fun ProfileEditScreen(
99102
val action = viewModel::onAction
100103
val state by viewModel.collectAsState()
101104

102-
var showBottomSheet by remember {
103-
mutableStateOf(false)
104-
}
105-
106105
val pickImage =
107106
rememberLauncherForActivityResult(contract = ActivityResultContracts.PickVisualMedia()) {
108107
it?.let {
@@ -144,13 +143,7 @@ fun ProfileEditScreen(
144143
modifier = Modifier
145144
.padding(top = 16.dp)
146145
.clickableSingle {
147-
pickImage.launch(
148-
PickVisualMediaRequest(
149-
ActivityResultContracts.PickVisualMedia.SingleMimeType(
150-
"image/*",
151-
),
152-
),
153-
)
146+
action(EntireEditAction.ChangeBottomSheetState(true))
154147
},
155148
) {
156149
AsyncImage(
@@ -291,6 +284,49 @@ fun ProfileEditScreen(
291284
}
292285
}
293286

287+
if (state.changeBottomSheet) {
288+
WSBottomSheet(
289+
closeSheet = {
290+
action(EntireEditAction.ChangeBottomSheetState(false))
291+
}
292+
) {
293+
Column(
294+
verticalArrangement = Arrangement.spacedBy(16.dp),
295+
modifier = Modifier
296+
.fillMaxWidth()
297+
.padding(horizontal = 20.dp, vertical = 28.dp)
298+
) {
299+
Text(
300+
text = stringResource(R.string.change_image),
301+
modifier = Modifier
302+
.fillMaxWidth()
303+
.clickableSingle {
304+
pickImage.launch(
305+
PickVisualMediaRequest(
306+
ActivityResultContracts.PickVisualMedia.SingleMimeType(
307+
"image/*",
308+
),
309+
),
310+
)
311+
action(EntireEditAction.ChangeBottomSheetState(false))
312+
}
313+
)
314+
HorizontalDivider(
315+
color = Color(0xFF4F5157),
316+
)
317+
Text(
318+
text = stringResource(R.string.remove_image),
319+
modifier = Modifier
320+
.fillMaxWidth()
321+
.clickableSingle {
322+
action(EntireEditAction.OnProfileImagePicked(null))
323+
action(EntireEditAction.ChangeBottomSheetState(false))
324+
}
325+
)
326+
}
327+
}
328+
}
329+
294330
LaunchedEffect(Unit) {
295331
action(EntireEditAction.OnProfileEditScreenEntered(navArgs.isCompleteProfileEdit))
296332
}

feature/entire/src/main/java/com/bff/wespot/entire/state/edit/EntireEditAction.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ sealed class EntireEditAction {
88
data class OnIntroductionChanged(val introduction: String) : EntireEditAction()
99
data object OnRequestDialogDismissed : EntireEditAction()
1010
data object OnRequestDialogShown : EntireEditAction()
11-
data class OnProfileImagePicked(val profilePath: String) : EntireEditAction()
11+
data class OnProfileImagePicked(val profilePath: String?) : EntireEditAction()
12+
data class ChangeBottomSheetState(val isBottomSheetOpen: Boolean) : EntireEditAction()
1213
}

feature/entire/src/main/java/com/bff/wespot/entire/state/edit/EntireEditUiState.kt

+1
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ data class EntireEditUiState(
1616
val requestDialog: Boolean = false,
1717
val profilePath: String? = null,
1818
val loading: Boolean = false,
19+
val changeBottomSheet: Boolean = false,
1920
)

feature/entire/src/main/java/com/bff/wespot/entire/viewmodel/EntireEditViewModel.kt

+4
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ class EntireEditViewModel @Inject constructor(
8282
is EntireEditAction.OnProfileImagePicked -> {
8383
reduce { state.copy(profilePath = action.profilePath) }
8484
}
85+
86+
is EntireEditAction.ChangeBottomSheetState -> {
87+
reduce { state.copy(changeBottomSheet = action.isBottomSheetOpen) }
88+
}
8589
}
8690
}
8791

feature/entire/src/main/res/values/strings.xml

+2
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,6 @@
6565
<string name="blocked_message_load_error_message">차단된 메세지를 불러오는데 실패했어요.</string>
6666
<string name="introduction_placeholder">(ex. 귀염둥이 엥뿌삐 ENFP)</string>
6767
<string name="request">신청</string>
68+
<string name="change_image">이미지 변경</string>
69+
<string name="remove_image">이미지 지우기</string>
6870
</resources>

0 commit comments

Comments
 (0)