diff --git a/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt b/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt index 81a4f216..8530fc22 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/extensions/StringExtensions.kt @@ -12,8 +12,8 @@ import java.util.TimeZone fun String.convertDateFormat( from: String, to: String, - inputLocale: Locale = Locale.KOREAN, - outputLocale: Locale = Locale.KOREAN + inputLocale: Locale = Locale.getDefault(), + outputLocale: Locale = Locale.getDefault() ): String { val fromDateFormat = SimpleDateFormat(from, inputLocale) val toDateFormat = SimpleDateFormat(to, outputLocale) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailActivity.kt index 714bfa81..bdb15132 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailActivity.kt @@ -53,21 +53,24 @@ class TextMessageDetailActivity : BaseActivity when { messageBox!! == MessageBox.RECEIVE.name -> { - binding.toolbar.tvBack.text = "받은 메시지 상세" + binding.toolbar.tvBack.text = + getString(R.string.screen_message_detail_title_receive) binding.tvKeep.visibility = View.VISIBLE binding.tvReply.visibility = View.VISIBLE binding.tvDelete.visibility = View.VISIBLE } messageBox == MessageBox.KEEP.name -> { - binding.toolbar.tvBack.text = "저장한 메시지 상세" + binding.toolbar.tvBack.text = + getString(R.string.screen_message_detail_title_keep) binding.tvKeep.visibility = View.GONE binding.tvReply.visibility = View.GONE binding.tvDelete.visibility = View.VISIBLE } else -> { - binding.toolbar.tvBack.text = "보낸 메시지 상세" + binding.toolbar.tvBack.text = + getString(R.string.screen_message_detail_title_sent) binding.tvKeep.visibility = View.GONE binding.tvReply.visibility = View.GONE binding.tvDelete.visibility = View.VISIBLE @@ -86,7 +89,7 @@ class TextMessageDetailActivity : BaseActivity if (messageItem!!.isKept) { Toast.makeText( applicationContext, - "이미 보관된 메시지 입니다.", + R.string.screen_message_detail_keep_already, Toast.LENGTH_LONG ).show() return@setOnClickListener @@ -98,7 +101,7 @@ class TextMessageDetailActivity : BaseActivity viewModel.deleteMessage { Toast.makeText( applicationContext, - "메시지가 삭제되었습니다.", + R.string.screen_message_detail_delete_success, Toast.LENGTH_LONG ).show() @@ -132,13 +135,23 @@ class TextMessageDetailActivity : BaseActivity binding.tvMessage.text = messageItem?.textMessage binding.tvDate.text = messageItem?.date!!.convertDateFormat( from = "yyyy-MM-dd hh:mm:ss", - to = "yyyy년 MM월 dd일 E요일 HH:mm" + to = getString(R.string.screen_message_detail_date_format) ) } private fun bindData() { viewModel.toastLiveData.observe(this) { - it?.let { Toast.makeText(applicationContext, it, Toast.LENGTH_LONG).show() } + it?.let { toast -> + val message = toast.message + val text = message ?: toast.resId?.let { resId -> getString(resId) } + text?.let { textMessage -> + Toast.makeText( + applicationContext, + textMessage, + Toast.LENGTH_LONG + ).show() + } + } } viewModel.isLoading.observe(this) { diff --git a/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailViewModel.kt index bc4243a8..bb52a29f 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/message/text/TextMessageDetailViewModel.kt @@ -5,15 +5,17 @@ import androidx.lifecycle.MutableLiveData import com.orhanobut.logger.Logger import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.schedulers.Schedulers +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.common.SharedPreferenceManager +import kr.co.vividnext.sodalive.common.ToastMessage import kr.co.vividnext.sodalive.message.MessageRepository class TextMessageDetailViewModel(private val repository: MessageRepository) : BaseViewModel() { var messageId: Long = 0 - private val _toastLiveData = MutableLiveData() - val toastLiveData: LiveData + private val _toastLiveData = MutableLiveData() + val toastLiveData: LiveData get() = _toastLiveData private var _isLoading = MutableLiveData(false) @@ -22,7 +24,7 @@ class TextMessageDetailViewModel(private val repository: MessageRepository) : Ba fun keepTextMessage() { if (messageId <= 0) { - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown)) return } @@ -39,21 +41,23 @@ class TextMessageDetailViewModel(private val repository: MessageRepository) : Ba _isLoading.value = false if (it.success) { _toastLiveData.postValue( - "보관되었습니다." + ToastMessage(resId = R.string.screen_message_detail_keep_success) ) } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) _isLoading.value = false } ) @@ -62,7 +66,7 @@ class TextMessageDetailViewModel(private val repository: MessageRepository) : Ba fun deleteMessage(onSuccess: () -> Unit) { if (messageId <= 0) { - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue(ToastMessage(resId = R.string.common_error_unknown)) return } @@ -81,17 +85,19 @@ class TextMessageDetailViewModel(private val repository: MessageRepository) : Ba onSuccess() } else { if (it.message != null) { - _toastLiveData.postValue(it.message) + _toastLiveData.postValue(ToastMessage(message = it.message)) } else { _toastLiveData.postValue( - "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + ToastMessage(resId = R.string.common_error_unknown) ) } } }, { it.message?.let { message -> Logger.e(message) } - _toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") + _toastLiveData.postValue( + ToastMessage(resId = R.string.common_error_unknown) + ) _isLoading.value = false } ) diff --git a/app/src/main/res/layout/activity_text_message_detail.xml b/app/src/main/res/layout/activity_text_message_detail.xml index 51e36447..b859df70 100644 --- a/app/src/main/res/layout/activity_text_message_detail.xml +++ b/app/src/main/res/layout/activity_text_message_detail.xml @@ -93,7 +93,7 @@ android:background="@drawable/bg_round_corner_6_7_3bb9f1" android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" - android:text="답장" + android:text="@string/screen_message_detail_action_reply" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -106,7 +106,7 @@ android:background="@drawable/bg_round_corner_6_7_13181b" android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" - android:text="보관" + android:text="@string/screen_message_detail_action_keep" android:textColor="@color/color_3bb9f1" android:textSize="14.7sp" /> @@ -118,7 +118,7 @@ android:background="@drawable/bg_round_corner_6_7_13181b" android:fontFamily="@font/gmarket_sans_bold" android:gravity="center" - android:text="삭제" + android:text="@string/screen_message_detail_action_delete" android:textColor="@color/color_3bb9f1" android:textSize="14.7sp" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 55b4af9d..f9514838 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -260,6 +260,16 @@ No messages.\nTry connecting with friends! Loading text messages… Loading voice messages… + Received message + Saved message + Sent message + Reply + Save + Delete + Saved. + Already saved. + Message deleted. + MMM d, yyyy (EEE) HH:mm Loading live rooms… Cancel reservation Enter a reason for cancellation. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index db4f6d49..ee0b90f8 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -260,6 +260,16 @@ メッセージがありません。\n友達と交流してみましょう! テキストメッセージを読み込み中です。 ボイスメッセージを読み込み中です。 + 受信メッセージ詳細 + 保存メッセージ詳細 + 送信メッセージ詳細 + 返信 + 保存 + 削除 + 保存しました。 + 既に保存されたメッセージです。 + メッセージを削除しました。 + yyyy年 MM月 dd日 E曜日 HH:mm ライブを読み込み中です。 予約キャンセル キャンセル理由を入力してください。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c670cdf..89a8d50f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -259,6 +259,16 @@ 메시지가 없습니다.\n친구들과 소통해보세요! 문자 메시지를 불러오고 있습니다. 음성 메시지를 불러오고 있습니다. + 받은 메시지 상세 + 저장한 메시지 상세 + 보낸 메시지 상세 + 답장 + 보관 + 삭제 + 보관되었습니다. + 이미 보관된 메시지 입니다. + 메시지가 삭제되었습니다. + yyyy년 MM월 dd일 E요일 HH:mm 라이브를 불러오고 있습니다. 예약취소 취소사유를 입력하세요.