diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditActivity.kt index 39f003f7..7d8be4c1 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditActivity.kt @@ -64,7 +64,11 @@ class LiveRoomEditActivity : BaseActivity( super.onCreate(savedInstanceState) if (roomDetail == null) { - Toast.makeText(applicationContext, "잘못된 요청입니다.", Toast.LENGTH_LONG).show() + Toast.makeText( + applicationContext, + getString(R.string.msg_live_room_edit_invalid_request), + Toast.LENGTH_LONG + ).show() finish() } @@ -73,13 +77,17 @@ class LiveRoomEditActivity : BaseActivity( binding.etContent.setText(roomDetail.notice) binding.etNumberOfPeople.setText(roomDetail.numberOfParticipantsTotal.toString()) viewModel.setRoomDetail(roomDetail = roomDetail) + binding.tvNumberOfCharacters.text = getString( + R.string.screen_live_room_create_notice_char_count_format, + binding.etContent.length() + ) } @SuppressLint("ClickableViewAccessibility") override fun setupView() { loadingDialog = LoadingDialog(this, layoutInflater) - binding.toolbar.tvBack.text = "라이브 수정" + binding.toolbar.tvBack.setText(R.string.screen_live_room_profile_edit_title) binding.toolbar.tvBack.setOnClickListener { finish() } binding.tvReservationDate.setOnClickListener { @@ -164,7 +172,6 @@ class LiveRoomEditActivity : BaseActivity( } } - @SuppressLint("SetTextI18n") private fun bindData() { compositeDisposable.add( binding.etTitle.textChanges().skip(1) @@ -180,7 +187,10 @@ class LiveRoomEditActivity : BaseActivity( .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe { - binding.tvNumberOfCharacters.text = "${it.length}자" + binding.tvNumberOfCharacters.text = getString( + R.string.screen_live_room_create_notice_char_count_format, + it.length + ) viewModel.content = it.toString() } ) @@ -198,8 +208,14 @@ class LiveRoomEditActivity : BaseActivity( } ) - viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + viewModel.toastLiveData.observe(this) { uiText -> + uiText?.let { + Toast.makeText( + applicationContext, + it.asString(this), + Toast.LENGTH_LONG + ).show() + } } viewModel.isLoading.observe(this) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt index 78697e1f..c983f89b 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/room/update/LiveRoomEditViewModel.kt @@ -7,10 +7,14 @@ import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers import kr.co.vividnext.sodalive.base.BaseViewModel +import kr.co.vividnext.sodalive.common.UiText +import kr.co.vividnext.sodalive.common.UiText.DynamicString +import kr.co.vividnext.sodalive.common.UiText.StringResource import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.extensions.convertDateFormat import kr.co.vividnext.sodalive.live.LiveRepository import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailResponse +import kr.co.vividnext.sodalive.R import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody import java.util.Locale @@ -20,16 +24,16 @@ class LiveRoomEditViewModel( private val repository: LiveRepository ) : BaseViewModel() { - private val _reservationDateLiveData = MutableLiveData("날짜를 선택해주세요") + private val _reservationDateLiveData = MutableLiveData("") val reservationDateLiveData: LiveData get() = _reservationDateLiveData - private val _reservationTimeLiveData = MutableLiveData("시간을 설정해주세요") + private val _reservationTimeLiveData = MutableLiveData("") val reservationTimeLiveData: LiveData get() = _reservationTimeLiveData - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -86,7 +90,7 @@ class LiveRoomEditViewModel( request.numberOfPeople == null && request.beginDateTimeString == null ) { - _toastLiveData.value = "변경사항이 없습니다." + _toastLiveData.value = StringResource(R.string.msg_live_room_edit_no_changes) _isLoading.value = false return } @@ -104,14 +108,15 @@ class LiveRoomEditViewModel( .subscribe( { if (it.success && it.data != null) { - _toastLiveData.value = "라이브 정보가 수정 되었습니다." + _toastLiveData.value = + StringResource(R.string.screen_live_room_info_updated) onSuccess() } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(DynamicString(it.message)) } else { _toastLiveData.postValue( - "라이브 정보를 수정 하지 못했습니다.\n다시 시도해 주세요." + StringResource(R.string.msg_live_room_edit_update_failed) ) } } @@ -121,7 +126,7 @@ class LiveRoomEditViewModel( _isLoading.postValue(false) it.message?.let { message -> Logger.e(message) } _toastLiveData.postValue( - "라이브 정보를 수정 하지 못했습니다.\n다시 시도해 주세요." + StringResource(R.string.msg_live_room_edit_update_failed) ) } ) @@ -161,17 +166,23 @@ class LiveRoomEditViewModel( private fun validateData(): Boolean { if (title.isBlank()) { - _toastLiveData.postValue("제목을 입력해주세요.") + _toastLiveData.postValue( + StringResource(R.string.msg_live_room_create_title_required) + ) return false } if (content.isBlank() || content.length < 5) { - _toastLiveData.postValue("내용을 5자 이상 입력해주세요.") + _toastLiveData.postValue( + StringResource(R.string.msg_live_room_create_notice_required) + ) return false } - if (numberOfPeople < 3 || numberOfPeople > 999) { - _toastLiveData.postValue("인원을 3~999명 사이로 입력해주세요.") + if (numberOfPeople !in 3..999) { + _toastLiveData.postValue( + StringResource(R.string.msg_live_room_create_participants_invalid) + ) return false } diff --git a/app/src/main/res/layout/activity_live_room_edit.xml b/app/src/main/res/layout/activity_live_room_edit.xml index e066c67c..a0a06ace 100644 --- a/app/src/main/res/layout/activity_live_room_edit.xml +++ b/app/src/main/res/layout/activity_live_room_edit.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_bold" - android:text="제목" + android:text="@string/screen_live_room_title_label" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -45,7 +45,7 @@ android:layout_height="wrap_content" android:background="@drawable/edittext_underline" android:fontFamily="@font/gmarket_sans_medium" - android:hint="라이브 제목을 입력해주세요." + android:hint="@string/screen_live_room_title_hint" android:importantForAutofill="no" android:inputType="textWebEditText" android:paddingHorizontal="6.7dp" @@ -75,7 +75,7 @@ android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_bold" android:lineSpacingExtra="5sp" - android:text="공지" + android:text="@string/screen_live_room_notice" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -89,7 +89,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_medium" - android:text="0자" + android:text="@string/screen_live_room_create_notice_char_count_placeholder" android:textColor="@color/color_ff5c49" android:textSize="13.3sp" /> @@ -97,7 +97,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/gmarket_sans_medium" - android:text=" / 최대 1000자" + android:text="@string/screen_live_room_create_notice_char_limit" android:textColor="@color/color_777777" android:textSize="13.3sp" /> @@ -110,7 +110,7 @@ android:background="@drawable/bg_round_corner_6_7_222222" android:fontFamily="@font/gmarket_sans_medium" android:gravity="top" - android:hint="라이브 공지를 입력해 주세요" + android:hint="@string/screen_live_room_notice_hint" android:importantForAutofill="no" android:inputType="textMultiLine" android:overScrollMode="always" @@ -132,7 +132,7 @@ android:layout_marginTop="33.3dp" android:fontFamily="@font/gmarket_sans_bold" android:lineSpacingExtra="5sp" - android:text="시간 설정" + android:text="@string/screen_live_room_create_time_label" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -152,12 +152,12 @@ android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:fontFamily="@font/gmarket_sans_medium" + android:text="@string/screen_live_room_create_reservation_date_label" + android:textColor="@color/color_eeeeee" + android:textSize="13.3sp" /> @@ -182,12 +183,12 @@ android:orientation="vertical"> + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:fontFamily="@font/gmarket_sans_medium" + android:text="@string/screen_live_room_create_reservation_time_label" + android:textColor="@color/color_eeeeee" + android:textSize="13.3sp" /> @@ -211,7 +213,7 @@ android:layout_marginTop="33.3dp" android:fontFamily="@font/gmarket_sans_bold" android:lineSpacingExtra="5sp" - android:text="참여인원 설정" + android:text="@string/screen_live_room_create_capacity_label" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" /> @@ -223,7 +225,7 @@ android:background="@drawable/bg_round_corner_6_7_222222" android:fontFamily="@font/gmarket_sans_medium" android:gravity="center" - android:hint="최대 인원 999명" + android:hint="@string/screen_live_room_create_capacity_hint" android:importantForAutofill="no" android:inputType="number" android:maxLength="3" @@ -253,7 +255,7 @@ android:background="@drawable/bg_round_corner_10_3bb9f1" android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" - android:text="라이브 수정" + android:text="@string/screen_live_room_profile_edit_title" android:textColor="@color/white" android:textSize="18.3sp" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 4f13cbbe..45c113c8 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -483,6 +483,10 @@ Set menu 1 first. Set menu 1 and menu 2 first. Please enter a cancellation reason. + + Invalid request. + No changes to update. + Could not update the live info.\nPlease try again. Create live Load recent data diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 5d0a65cc..85821f4e 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -483,6 +483,10 @@ メニュー1を先に設定してください メニュー1とメニュー2を先に設定してください キャンセル理由を入力してください。 + + 不正なリクエストです。 + 変更内容がありません。 + ライブ情報を修正できませんでした。\nもう一度お試しください。 ライブを作成 最近のデータを読み込む diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2f0befd5..aa778765 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -482,6 +482,10 @@ 메뉴 1을 먼저 설정하세요 메뉴 1과 메뉴 2를 먼저 설정하세요 취소사유를 입력하세요. + + 잘못된 요청입니다. + 변경사항이 없습니다. + 라이브 정보를 수정하지 못했습니다.\n다시 시도해 주세요. 라이브 만들기 최근 데이터 가져오기