메뉴 설정 화면 문자열 리소스화
메뉴 선택/저장 UI 텍스트를 문자열 리소스와 다국어 번역으로 교체함 메뉴 프리셋 선택/저장 토스트를 UiText 기반으로 공통 오류 메시지 사용
This commit is contained in:
@@ -40,7 +40,7 @@ class MenuConfigActivity : BaseActivity<ActivityMenuConfigBinding>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun setupView() {
|
override fun setupView() {
|
||||||
binding.toolbar.tvBack.text = "메뉴 설정"
|
binding.toolbar.tvBack.setText(R.string.screen_menu_config_title)
|
||||||
binding.toolbar.tvBack.setOnClickListener { finish() }
|
binding.toolbar.tvBack.setOnClickListener { finish() }
|
||||||
|
|
||||||
loadingDialog = LoadingDialog(this, layoutInflater)
|
loadingDialog = LoadingDialog(this, layoutInflater)
|
||||||
@@ -71,7 +71,9 @@ class MenuConfigActivity : BaseActivity<ActivityMenuConfigBinding>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun bindData() {
|
private fun bindData() {
|
||||||
viewModel.toastLiveData.observe(this) { it?.let { showToast(it) } }
|
viewModel.toastLiveData.observe(this) { uiText ->
|
||||||
|
uiText?.let { showToast(it.asString(this)) }
|
||||||
|
}
|
||||||
viewModel.isLoading.observe(this) {
|
viewModel.isLoading.observe(this) {
|
||||||
if (it) {
|
if (it) {
|
||||||
loadingDialog.show(screenWidth)
|
loadingDialog.show(screenWidth)
|
||||||
|
|||||||
@@ -6,8 +6,12 @@ import com.orhanobut.logger.Logger
|
|||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.schedulers.Schedulers
|
import io.reactivex.rxjava3.schedulers.Schedulers
|
||||||
import kr.co.vividnext.sodalive.base.BaseViewModel
|
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.common.SharedPreferenceManager
|
||||||
import kr.co.vividnext.sodalive.live.room.create.LiveRoomCreateViewModel
|
import kr.co.vividnext.sodalive.live.room.create.LiveRoomCreateViewModel
|
||||||
|
import kr.co.vividnext.sodalive.R
|
||||||
|
|
||||||
class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseViewModel() {
|
class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseViewModel() {
|
||||||
|
|
||||||
@@ -15,8 +19,8 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
val isLoading: LiveData<Boolean>
|
val isLoading: LiveData<Boolean>
|
||||||
get() = _isLoading
|
get() = _isLoading
|
||||||
|
|
||||||
private val _toastLiveData = MutableLiveData<String?>()
|
private val _toastLiveData = MutableLiveData<UiText?>()
|
||||||
val toastLiveData: LiveData<String?>
|
val toastLiveData: LiveData<UiText?>
|
||||||
get() = _toastLiveData
|
get() = _toastLiveData
|
||||||
|
|
||||||
private val _selectedMenuLiveData = MutableLiveData<LiveRoomCreateViewModel.SelectedMenu>()
|
private val _selectedMenuLiveData = MutableLiveData<LiveRoomCreateViewModel.SelectedMenu>()
|
||||||
@@ -51,10 +55,10 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
selectMenuPreset(selectedMenu)
|
selectMenuPreset(selectedMenu)
|
||||||
} else {
|
} else {
|
||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
_toastLiveData.postValue(it.message)
|
_toastLiveData.postValue(DynamicString(it.message))
|
||||||
} else {
|
} else {
|
||||||
_toastLiveData.postValue(
|
_toastLiveData.postValue(
|
||||||
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
StringResource(R.string.common_error_unknown)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -63,7 +67,9 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
{
|
{
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
it.message?.let { message -> Logger.e(message) }
|
it.message?.let { message -> Logger.e(message) }
|
||||||
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
_toastLiveData.postValue(
|
||||||
|
StringResource(R.string.common_error_unknown)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -77,12 +83,14 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
selectedMenuPreset == LiveRoomCreateViewModel.SelectedMenu.MENU_3
|
selectedMenuPreset == LiveRoomCreateViewModel.SelectedMenu.MENU_3
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
_toastLiveData.value = "메뉴 1을 먼저 설정하세요"
|
_toastLiveData.value =
|
||||||
|
StringResource(R.string.screen_live_room_menu_first_required)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if (menuList.size == 1 && selectedMenuPreset == LiveRoomCreateViewModel.SelectedMenu.MENU_3) {
|
if (menuList.size == 1 && selectedMenuPreset == LiveRoomCreateViewModel.SelectedMenu.MENU_3) {
|
||||||
_toastLiveData.value = "메뉴 1과 메뉴 2를 먼저 설정하세요"
|
_toastLiveData.value =
|
||||||
|
StringResource(R.string.screen_live_room_menu_first_second_required)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,7 +113,7 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
|
|
||||||
fun saveMenu() {
|
fun saveMenu() {
|
||||||
if (menuText == _selectedMenuTextLiveData.value) {
|
if (menuText == _selectedMenuTextLiveData.value) {
|
||||||
_toastLiveData.postValue("저장되었습니다.")
|
_toastLiveData.postValue(StringResource(R.string.msg_menu_config_saved))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,14 +129,16 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
.subscribe(
|
.subscribe(
|
||||||
{
|
{
|
||||||
if (it.success) {
|
if (it.success) {
|
||||||
_toastLiveData.postValue("저장되었습니다.")
|
_toastLiveData.postValue(
|
||||||
|
StringResource(R.string.msg_menu_config_saved)
|
||||||
|
)
|
||||||
getAllMenuPreset(selectedMenu = _selectedMenuLiveData.value!!)
|
getAllMenuPreset(selectedMenu = _selectedMenuLiveData.value!!)
|
||||||
} else {
|
} else {
|
||||||
if (it.message != null) {
|
if (it.message != null) {
|
||||||
_toastLiveData.postValue(it.message)
|
_toastLiveData.postValue(DynamicString(it.message))
|
||||||
} else {
|
} else {
|
||||||
_toastLiveData.postValue(
|
_toastLiveData.postValue(
|
||||||
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요."
|
StringResource(R.string.common_error_unknown)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,7 +147,9 @@ class MenuConfigViewModel(private val repository: MenuConfigRepository) : BaseVi
|
|||||||
{
|
{
|
||||||
_isLoading.value = false
|
_isLoading.value = false
|
||||||
it.message?.let { message -> Logger.e(message) }
|
it.message?.let { message -> Logger.e(message) }
|
||||||
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.")
|
_toastLiveData.postValue(
|
||||||
|
StringResource(R.string.common_error_unknown)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -49,7 +49,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:text="메뉴 1"
|
android:text="@string/screen_live_room_menu_preset_1"
|
||||||
android:textColor="@color/color_3bb9f1"
|
android:textColor="@color/color_3bb9f1"
|
||||||
android:textSize="14.7sp" />
|
android:textSize="14.7sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -78,7 +78,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:text="메뉴 2"
|
android:text="@string/screen_live_room_menu_preset_2"
|
||||||
android:textColor="@color/color_555555"
|
android:textColor="@color/color_555555"
|
||||||
android:textSize="14.7sp" />
|
android:textSize="14.7sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -107,7 +107,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:text="메뉴 3"
|
android:text="@string/screen_live_room_menu_preset_3"
|
||||||
android:textColor="@color/color_555555"
|
android:textColor="@color/color_555555"
|
||||||
android:textSize="14.7sp" />
|
android:textSize="14.7sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
android:background="@drawable/bg_round_corner_6_7_222222"
|
android:background="@drawable/bg_round_corner_6_7_222222"
|
||||||
android:fontFamily="@font/gmarket_sans_medium"
|
android:fontFamily="@font/gmarket_sans_medium"
|
||||||
android:gravity="top"
|
android:gravity="top"
|
||||||
android:hint="메뉴판을 작성해주세요."
|
android:hint="@string/screen_live_room_menu_hint"
|
||||||
android:importantForAutofill="no"
|
android:importantForAutofill="no"
|
||||||
android:inputType="textMultiLine"
|
android:inputType="textMultiLine"
|
||||||
android:overScrollMode="always"
|
android:overScrollMode="always"
|
||||||
@@ -143,7 +143,7 @@
|
|||||||
android:fontFamily="@font/gmarket_sans_bold"
|
android:fontFamily="@font/gmarket_sans_bold"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingVertical="16dp"
|
android:paddingVertical="16dp"
|
||||||
android:text="메뉴 저장"
|
android:text="@string/screen_menu_config_save"
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="18.3sp" />
|
android:textSize="18.3sp" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|||||||
@@ -483,6 +483,10 @@
|
|||||||
<string name="screen_live_room_menu_first_required">Set menu 1 first.</string>
|
<string name="screen_live_room_menu_first_required">Set menu 1 first.</string>
|
||||||
<string name="screen_live_room_menu_first_second_required">Set menu 1 and menu 2 first.</string>
|
<string name="screen_live_room_menu_first_second_required">Set menu 1 and menu 2 first.</string>
|
||||||
<string name="screen_live_room_cancel_reason_required">Please enter a cancellation reason.</string>
|
<string name="screen_live_room_cancel_reason_required">Please enter a cancellation reason.</string>
|
||||||
|
<!-- Menu Config -->
|
||||||
|
<string name="screen_menu_config_title">Menu settings</string>
|
||||||
|
<string name="screen_menu_config_save">Save menu</string>
|
||||||
|
<string name="msg_menu_config_saved">Saved.</string>
|
||||||
<!-- Live Room Edit -->
|
<!-- Live Room Edit -->
|
||||||
<string name="msg_live_room_edit_invalid_request">Invalid request.</string>
|
<string name="msg_live_room_edit_invalid_request">Invalid request.</string>
|
||||||
<string name="msg_live_room_edit_no_changes">No changes to update.</string>
|
<string name="msg_live_room_edit_no_changes">No changes to update.</string>
|
||||||
|
|||||||
@@ -483,6 +483,10 @@
|
|||||||
<string name="screen_live_room_menu_first_required">メニュー1を先に設定してください</string>
|
<string name="screen_live_room_menu_first_required">メニュー1を先に設定してください</string>
|
||||||
<string name="screen_live_room_menu_first_second_required">メニュー1とメニュー2を先に設定してください</string>
|
<string name="screen_live_room_menu_first_second_required">メニュー1とメニュー2を先に設定してください</string>
|
||||||
<string name="screen_live_room_cancel_reason_required">キャンセル理由を入力してください。</string>
|
<string name="screen_live_room_cancel_reason_required">キャンセル理由を入力してください。</string>
|
||||||
|
<!-- Menu Config -->
|
||||||
|
<string name="screen_menu_config_title">メニュー設定</string>
|
||||||
|
<string name="screen_menu_config_save">メニュー保存</string>
|
||||||
|
<string name="msg_menu_config_saved">保存しました。</string>
|
||||||
<!-- Live Room Edit -->
|
<!-- Live Room Edit -->
|
||||||
<string name="msg_live_room_edit_invalid_request">不正なリクエストです。</string>
|
<string name="msg_live_room_edit_invalid_request">不正なリクエストです。</string>
|
||||||
<string name="msg_live_room_edit_no_changes">変更内容がありません。</string>
|
<string name="msg_live_room_edit_no_changes">変更内容がありません。</string>
|
||||||
|
|||||||
@@ -482,6 +482,10 @@
|
|||||||
<string name="screen_live_room_menu_first_required">메뉴 1을 먼저 설정하세요</string>
|
<string name="screen_live_room_menu_first_required">메뉴 1을 먼저 설정하세요</string>
|
||||||
<string name="screen_live_room_menu_first_second_required">메뉴 1과 메뉴 2를 먼저 설정하세요</string>
|
<string name="screen_live_room_menu_first_second_required">메뉴 1과 메뉴 2를 먼저 설정하세요</string>
|
||||||
<string name="screen_live_room_cancel_reason_required">취소사유를 입력하세요.</string>
|
<string name="screen_live_room_cancel_reason_required">취소사유를 입력하세요.</string>
|
||||||
|
<!-- Menu Config -->
|
||||||
|
<string name="screen_menu_config_title">메뉴 설정</string>
|
||||||
|
<string name="screen_menu_config_save">메뉴 저장</string>
|
||||||
|
<string name="msg_menu_config_saved">저장되었습니다.</string>
|
||||||
<!-- Live Room Edit -->
|
<!-- Live Room Edit -->
|
||||||
<string name="msg_live_room_edit_invalid_request">잘못된 요청입니다.</string>
|
<string name="msg_live_room_edit_invalid_request">잘못된 요청입니다.</string>
|
||||||
<string name="msg_live_room_edit_no_changes">변경사항이 없습니다.</string>
|
<string name="msg_live_room_edit_no_changes">변경사항이 없습니다.</string>
|
||||||
|
|||||||
Reference in New Issue
Block a user