문자열 리소스 참조로 화면 문구 정리

This commit is contained in:
2025-12-30 15:46:01 +09:00
parent 1d002c4045
commit dfaa3961bf
43 changed files with 670 additions and 223 deletions

View File

@@ -1,11 +1,13 @@
package kr.co.vividnext.sodalive.audio_content package kr.co.vividnext.sodalive.audio_content
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.category.CategoryApi import kr.co.vividnext.sodalive.audio_content.category.CategoryApi
import kr.co.vividnext.sodalive.audio_content.detail.PutAudioContentLikeRequest import kr.co.vividnext.sodalive.audio_content.detail.PutAudioContentLikeRequest
import kr.co.vividnext.sodalive.audio_content.donation.AudioContentDonationRequest import kr.co.vividnext.sodalive.audio_content.donation.AudioContentDonationRequest
import kr.co.vividnext.sodalive.audio_content.order.OrderRequest import kr.co.vividnext.sodalive.audio_content.order.OrderRequest
import kr.co.vividnext.sodalive.audio_content.order.OrderType import kr.co.vividnext.sodalive.audio_content.order.OrderType
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.settings.ContentType import kr.co.vividnext.sodalive.settings.ContentType
import okhttp3.MultipartBody import okhttp3.MultipartBody
import okhttp3.RequestBody import okhttp3.RequestBody
@@ -153,7 +155,8 @@ class AudioContentRepository(
fun getContentRanking( fun getContentRanking(
page: Int, page: Int,
size: Int, size: Int,
sortType: String = "매출", sortType: String = SodaLiveApplicationHolder.get()
.getString(R.string.screen_home_sort_revenue),
token: String token: String
) = api.getContentRanking( ) = api.getContentRanking(
page = page - 1, page = page - 1,

View File

@@ -5,12 +5,12 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.audio_content.AudioContentRepository import kr.co.vividnext.sodalive.audio_content.AudioContentRepository
import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem import kr.co.vividnext.sodalive.audio_content.main.GetAudioContentRankingItem
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
class AudioContentRankingAllViewModel( class AudioContentRankingAllViewModel(
private val repository: AudioContentRepository private val repository: AudioContentRepository
@@ -39,12 +39,14 @@ class AudioContentRankingAllViewModel(
private var pageSize = 10 private var pageSize = 10
private var isLast = false private var isLast = false
private var selectedSort = "매출" private var selectedSort =
SodaLiveApplicationHolder.get().getString(R.string.screen_home_sort_revenue)
fun getAudioContentRanking() { fun getAudioContentRanking() {
if (!_isLoading.value!! && !isLast && page <= 5) { if (!_isLoading.value!! && !isLast && page <= 5) {
_isLoading.value = true _isLoading.value = true
val unknownError = SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown) val unknownError =
SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
compositeDisposable.add( compositeDisposable.add(
repository.getContentRanking( repository.getContentRanking(
page = page, page = page,

View File

@@ -42,6 +42,7 @@ import kr.co.vividnext.sodalive.base.SodaDialog
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.common.Utils import kr.co.vividnext.sodalive.common.Utils
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentDetailBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentDetailBinding
import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment import kr.co.vividnext.sodalive.explorer.profile.CreatorFollowNotifyFragment
@@ -938,7 +939,7 @@ class AudioContentDetailActivity : BaseActivity<ActivityAudioContentDetailBindin
binding.ivLike.setImageResource(R.drawable.ic_audio_content_heart_pressed) binding.ivLike.setImageResource(R.drawable.ic_audio_content_heart_pressed)
} else { } else {
binding.tvLike.text = if (likeCount - 1 < 0) { binding.tvLike.text = if (likeCount - 1 < 0) {
"0" SodaLiveApplicationHolder.get().getString(R.string.common_zero)
} else { } else {
"${likeCount - 1}" "${likeCount - 1}"
} }

View File

@@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ItemAudioContentMainNewContentThemeBinding import kr.co.vividnext.sodalive.databinding.ItemAudioContentMainNewContentThemeBinding
class AudioContentMainNewContentThemeAdapter( class AudioContentMainNewContentThemeAdapter(
@@ -24,8 +25,10 @@ class AudioContentMainNewContentThemeAdapter(
fun bind(theme: String) { fun bind(theme: String) {
if ( if (
theme == selectedTheme || theme == selectedTheme ||
(selectedTheme == "" && theme == "전체") || (selectedTheme == "" && theme == SodaLiveApplicationHolder.get()
(selectedTheme == "" && theme == "매출") .getString(R.string.audio_content_label_all)) ||
(selectedTheme == "" && theme == SodaLiveApplicationHolder.get()
.getString(R.string.screen_home_sort_revenue))
) { ) {
binding.tvTheme.setBackgroundResource( binding.tvTheme.setBackgroundResource(
R.drawable.bg_round_corner_16_7_transparent_3bb9f1 R.drawable.bg_round_corner_16_7_transparent_3bb9f1

View File

@@ -25,6 +25,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.ImagePickerCropper import kr.co.vividnext.sodalive.common.ImagePickerCropper
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.RealPathUtil import kr.co.vividnext.sodalive.common.RealPathUtil
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentModifyBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentModifyBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -42,7 +43,12 @@ class AudioContentModifyActivity : BaseActivity<ActivityAudioContentModifyBindin
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val audioContentId = intent.getLongExtra(Constants.EXTRA_AUDIO_CONTENT_ID, 0) val audioContentId = intent.getLongExtra(Constants.EXTRA_AUDIO_CONTENT_ID, 0)
if (audioContentId <= 0) { if (audioContentId <= 0) {
Toast.makeText(applicationContext, "잘못된 요청입니다.", Toast.LENGTH_LONG).show() Toast.makeText(
applicationContext,
SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_error_invalid_request),
Toast.LENGTH_LONG
).show()
finish() finish()
} }

View File

@@ -7,9 +7,11 @@ import com.google.gson.Gson
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.audio_content.AudioContentRepository import kr.co.vividnext.sodalive.audio_content.AudioContentRepository
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import okhttp3.MediaType import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaType
import okhttp3.MultipartBody import okhttp3.MultipartBody
@@ -111,7 +113,8 @@ class AudioContentModifyViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
@@ -125,7 +128,10 @@ class AudioContentModifyViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
if (onFailure != null) { if (onFailure != null) {
onFailure() onFailure()
} }
@@ -201,7 +207,8 @@ class AudioContentModifyViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -211,7 +218,8 @@ class AudioContentModifyViewModel(
_isLoading.postValue(false) _isLoading.postValue(false)
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
) )
@@ -221,12 +229,18 @@ class AudioContentModifyViewModel(
private fun validateData(): Boolean { private fun validateData(): Boolean {
if (title != null && title!!.isBlank()) { if (title != null && title!!.isBlank()) {
_toastLiveData.postValue("제목을 입력해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_upload_error_title_required)
)
return false return false
} }
if (detail != null && (detail!!.isBlank() || detail!!.length < 5)) { if (detail != null && (detail!!.isBlank() || detail!!.length < 5)) {
_toastLiveData.postValue("내용을 5자 이상 입력해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_upload_error_detail_min_length)
)
return false return false
} }

View File

@@ -15,6 +15,7 @@ import kr.co.vividnext.sodalive.audio_content.playlist.create.add_content.Playli
import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent
import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentPlaylistCreateBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentPlaylistCreateBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -39,7 +40,8 @@ class AudioContentPlaylistCreateActivity : BaseActivity<ActivityAudioContentPlay
title = item.title, title = item.title,
category = item.themeStr, category = item.themeStr,
coverUrl = item.coverImageUrl, coverUrl = item.coverImageUrl,
duration = item.duration ?: "00:00:00", duration = item.duration ?: SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_upload_preview_start_time_default),
creatorNickname = item.creatorNickname, creatorNickname = item.creatorNickname,
creatorProfileUrl = "" creatorProfileUrl = ""
) )

View File

@@ -13,12 +13,13 @@ import androidx.recyclerview.widget.RecyclerView
import com.jakewharton.rxbinding4.widget.textChanges import com.jakewharton.rxbinding4.widget.textChanges
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.R
import kr.co.vividnext.sodalive.audio_content.playlist.create.add_content.PlaylistAddContentDialogFragment import kr.co.vividnext.sodalive.audio_content.playlist.create.add_content.PlaylistAddContentDialogFragment
import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent
import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentPlaylistModifyBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentPlaylistModifyBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -46,7 +47,8 @@ class AudioContentPlaylistModifyActivity : BaseActivity<ActivityAudioContentPlay
title = item.title, title = item.title,
category = item.themeStr, category = item.themeStr,
coverUrl = item.coverImageUrl, coverUrl = item.coverImageUrl,
duration = item.duration ?: "00:00:00", duration = item.duration ?: SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_upload_preview_start_time_default),
creatorNickname = item.creatorNickname, creatorNickname = item.creatorNickname,
creatorProfileUrl = "" creatorProfileUrl = ""
) )

View File

@@ -31,6 +31,7 @@ import kr.co.vividnext.sodalive.common.ImagePickerCropper
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.RealPathUtil import kr.co.vividnext.sodalive.common.RealPathUtil
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityAudioContentUploadBinding import kr.co.vividnext.sodalive.databinding.ActivityAudioContentUploadBinding
import kr.co.vividnext.sodalive.dialog.LiveDialog import kr.co.vividnext.sodalive.dialog.LiveDialog
import kr.co.vividnext.sodalive.dialog.SodaLiveTimePickerDialog import kr.co.vividnext.sodalive.dialog.SodaLiveTimePickerDialog
@@ -667,7 +668,7 @@ class AudioContentUploadActivity : BaseActivity<ActivityAudioContentUploadBindin
private fun checkPriceFree() { private fun checkPriceFree() {
viewModel.price = 0 viewModel.price = 0
binding.etSetPrice.setText("0") binding.etSetPrice.setText(SodaLiveApplicationHolder.get().getString(R.string.common_zero))
binding.llSetPrice.visibility = View.GONE binding.llSetPrice.visibility = View.GONE
binding.llConfigPurchase.visibility = View.GONE binding.llConfigPurchase.visibility = View.GONE
binding.tvTitleConfigKeep.visibility = View.GONE binding.tvTitleConfigKeep.visibility = View.GONE

View File

@@ -17,8 +17,10 @@ import androidx.core.view.WindowInsetsControllerCompat
import androidx.localbroadcastmanager.content.LocalBroadcastManager import androidx.localbroadcastmanager.content.LocalBroadcastManager
import androidx.viewbinding.ViewBinding import androidx.viewbinding.ViewBinding
import io.reactivex.rxjava3.disposables.CompositeDisposable import io.reactivex.rxjava3.disposables.CompositeDisposable
import kotlin.math.max import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.settings.language.LocaleHelper import kr.co.vividnext.sodalive.settings.language.LocaleHelper
import kotlin.math.max
abstract class BaseActivity<T : ViewBinding>( abstract class BaseActivity<T : ViewBinding>(
private val inflate: (LayoutInflater) -> T private val inflate: (LayoutInflater) -> T
@@ -110,7 +112,8 @@ abstract class BaseActivity<T : ViewBinding>(
layoutInflater = layoutInflater, layoutInflater = layoutInflater,
title = "포인트 지급", title = "포인트 지급",
desc = message, desc = message,
confirmButtonTitle = "확인", confirmButtonTitle = SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_tag_confirm),
confirmButtonClick = {} confirmButtonClick = {}
).show(screenWidth) ).show(screenWidth)
} }

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
class TalkTabViewModel(private val repository: TalkTabRepository) : BaseViewModel() { class TalkTabViewModel(private val repository: TalkTabRepository) : BaseViewModel() {
@@ -59,13 +61,15 @@ class TalkTabViewModel(private val repository: TalkTabRepository) : BaseViewMode
} }
} else { } else {
_toastLiveData.value = _toastLiveData.value =
response.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." response.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
} }
}, },
{ throwable -> { throwable ->
_isLoading.value = false _isLoading.value = false
throwable.message?.let { message -> Logger.e(message) } throwable.message?.let { message -> Logger.e(message) }
_toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." _toastLiveData.value = SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
} }
) )
) )

View File

@@ -23,6 +23,7 @@ import kr.co.vividnext.sodalive.base.SodaDialog
import kr.co.vividnext.sodalive.chat.character.detail.detail.CharacterType import kr.co.vividnext.sodalive.chat.character.detail.detail.CharacterType
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityChatRoomBinding import kr.co.vividnext.sodalive.databinding.ActivityChatRoomBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.extensions.moneyFormat
@@ -538,7 +539,10 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
} }
override fun onFinish() { override fun onFinish() {
ensureQuotaNoticeShown("00:00:00") ensureQuotaNoticeShown(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_detail_time_default)
)
checkQuotaStatus() checkQuotaStatus()
} }
}.start() }.start()
@@ -565,7 +569,12 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
val ms = if (epoch < 1_000_000_000_000L) epoch * 1000 else epoch val ms = if (epoch < 1_000_000_000_000L) epoch * 1000 else epoch
val remain = ms - System.currentTimeMillis() val remain = ms - System.currentTimeMillis()
val displayMs = (remain + DISPLAY_FUDGE_MS).coerceAtLeast(0L) val displayMs = (remain + DISPLAY_FUDGE_MS).coerceAtLeast(0L)
return if (displayMs > 0L) formatMillisToHms(displayMs) else "00:00:00" return if (displayMs > 0L) {
formatMillisToHms(displayMs)
} else {
SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_detail_time_default)
}
} }
private fun formatMillisToHms(ms: Long): String { private fun formatMillisToHms(ms: Long): String {
@@ -780,7 +789,9 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
) )
}, { error -> }, { error ->
isLoading = false isLoading = false
showToast(error.message ?: getString(R.string.chat_previous_messages_load_failed)) showToast(
error.message ?: getString(R.string.chat_previous_messages_load_failed)
)
}) })
compositeDisposable.add(disposable) compositeDisposable.add(disposable)
@@ -793,10 +804,10 @@ class ChatRoomActivity : BaseActivity<ActivityChatRoomBinding>(
*/ */
private fun onPurchaseMessageClicked(message: ChatMessage) { private fun onPurchaseMessageClicked(message: ChatMessage) {
// 조건 확인: AI 메시지이며 잠금 상태여야 함 // 조건 확인: AI 메시지이며 잠금 상태여야 함
val isLock = (message.price != null) && (message.hasAccess == false) val isLock = (message.price != null) && !message.hasAccess
if (message.mine || !isLock) return if (message.mine || !isLock) return
val priceText = message.price?.toString() ?: "0" val priceText = message.price.toString()
val title = getString(R.string.chat_locked_message_title) val title = getString(R.string.chat_locked_message_title)
val desc = getString(R.string.chat_locked_message_desc, priceText) val desc = getString(R.string.chat_locked_message_desc, priceText)

View File

@@ -9,6 +9,7 @@ import android.os.Environment
import android.provider.DocumentsContract import android.provider.DocumentsContract
import android.provider.MediaStore import android.provider.MediaStore
import android.text.TextUtils import android.text.TextUtils
import kr.co.vividnext.sodalive.R
object RealPathUtil { object RealPathUtil {
fun getRealPath(context: Context, fileUri: Uri): String? { fun getRealPath(context: Context, fileUri: Uri): String? {
@@ -35,7 +36,9 @@ object RealPathUtil {
val type = split[0] val type = split[0]
if ("primary".equals(type, ignoreCase = true)) { if ("primary".equals(type, ignoreCase = true)) {
return Environment.getExternalStorageDirectory().toString() + "/" + split[1] return Environment.getExternalStorageDirectory()
.toString() + SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_separator_slash) + split[1]
} }
} else if (isDownloadsDocument(uri)) { } else if (isDownloadsDocument(uri)) {
var cursor: Cursor? = null var cursor: Cursor? = null

View File

@@ -13,6 +13,7 @@ import coil.transform.RoundedCornersTransformation
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.DialogMemberProfileBinding import kr.co.vividnext.sodalive.databinding.DialogMemberProfileBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.report.ProfileReportDialog import kr.co.vividnext.sodalive.report.ProfileReportDialog
@@ -102,7 +103,7 @@ class MemberProfileDialog(
dialogView.tvBlockMember.text = if (it.isBlocked) { dialogView.tvBlockMember.text = if (it.isBlocked) {
"차단 해제" "차단 해제"
} else { } else {
"차단" SodaLiveApplicationHolder.get().getString(R.string.screen_block_member_block)
} }
dialogView.tvBlockMember.setOnClickListener { _ -> dialogView.tvBlockMember.setOnClickListener { _ ->
@@ -141,15 +142,24 @@ class MemberProfileDialog(
""".trimIndent() """.trimIndent()
} }
val dialog = android.app.AlertDialog.Builder(activity) val dialog = android.app.AlertDialog.Builder(activity)
dialog.setTitle("사용자 차단") dialog.setTitle(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_block_title)
)
dialog.setMessage(message) dialog.setMessage(message)
dialog.setPositiveButton("차단") { _, _ -> dialog.setPositiveButton(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_block_member_block)
) { _, _ ->
viewModel.memberBlock(memberId) { viewModel.memberBlock(memberId) {
dismiss() dismiss()
onBlockComplete() onBlockComplete()
} }
} }
dialog.setNegativeButton("취소") { _, _ -> } dialog.setNegativeButton(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_message_write_cancel)
) { _, _ -> }
dialog.show() dialog.show()
} }

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailUser import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailUser
class ExplorerViewModel(private val repository: ExplorerRepository) : BaseViewModel() { class ExplorerViewModel(private val repository: ExplorerRepository) : BaseViewModel() {
@@ -43,14 +45,18 @@ class ExplorerViewModel(private val repository: ExplorerRepository) : BaseViewMo
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
}, },
{ {
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -74,7 +80,8 @@ class ExplorerViewModel(private val repository: ExplorerRepository) : BaseViewMo
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -83,7 +90,10 @@ class ExplorerViewModel(private val repository: ExplorerRepository) : BaseViewMo
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.common.Utils import kr.co.vividnext.sodalive.common.Utils
import kr.co.vividnext.sodalive.explorer.ExplorerRepository import kr.co.vividnext.sodalive.explorer.ExplorerRepository
import kr.co.vividnext.sodalive.explorer.profile.cheers.PutModifyCheersRequest import kr.co.vividnext.sodalive.explorer.profile.cheers.PutModifyCheersRequest
@@ -49,7 +51,8 @@ class UserProfileViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"신고가 접수되었습니다." SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
) )
} }
@@ -58,13 +61,21 @@ class UserProfileViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("신고가 접수되었습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
)
} }
) )
) )
} }
fun report(type: ReportType, userId: Long, reason: String = "프로필 신고") { fun report(
type: ReportType,
userId: Long,
reason: String = SodaLiveApplicationHolder.get()
.getString(R.string.dialog_member_profile_report_profile)
) {
_isLoading.value = true _isLoading.value = true
val request = ReportRequest(type, reason, reportedMemberId = userId) val request = ReportRequest(type, reason, reportedMemberId = userId)
@@ -81,7 +92,8 @@ class UserProfileViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"신고가 접수되었습니다." SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
) )
} }
@@ -90,7 +102,10 @@ class UserProfileViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("신고가 접수되었습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
)
} }
) )
) )
@@ -115,7 +130,8 @@ class UserProfileViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
@@ -129,7 +145,9 @@ class UserProfileViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown)
)
if (onFailure != null) { if (onFailure != null) {
onFailure() onFailure()
} }
@@ -158,7 +176,8 @@ class UserProfileViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -167,7 +186,10 @@ class UserProfileViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -175,7 +197,10 @@ class UserProfileViewModel(
fun writeCheers(parentCheersId: Long? = null, creatorId: Long, cheersContent: String) { fun writeCheers(parentCheersId: Long? = null, creatorId: Long, cheersContent: String) {
if (cheersContent.isBlank()) { if (cheersContent.isBlank()) {
_toastLiveData.postValue("내용을 입력하세요") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_error_empty)
)
return return
} }
@@ -197,14 +222,18 @@ class UserProfileViewModel(
if (it.success) { if (it.success) {
getCreatorProfile(creatorId) getCreatorProfile(creatorId)
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -217,12 +246,18 @@ class UserProfileViewModel(
isActive: Boolean? = null isActive: Boolean? = null
) { ) {
if (cheersContent == null && isActive == null) { if (cheersContent == null && isActive == null) {
_toastLiveData.postValue("변경사항이 없습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.msg_live_room_edit_no_changes)
)
return return
} }
if (cheersContent != null && cheersContent.isBlank()) { if (cheersContent != null && cheersContent.isBlank()) {
_toastLiveData.postValue("내용을 입력하세요") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_error_empty)
)
return return
} }
@@ -252,14 +287,18 @@ class UserProfileViewModel(
if (it.success) { if (it.success) {
getCreatorProfile(creatorId) getCreatorProfile(creatorId)
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -296,14 +335,18 @@ class UserProfileViewModel(
getCreatorProfile(userId) getCreatorProfile(userId)
_toastLiveData.postValue("차단하였습니다.") _toastLiveData.postValue("차단하였습니다.")
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -326,14 +369,18 @@ class UserProfileViewModel(
getCreatorProfile(userId) getCreatorProfile(userId)
_toastLiveData.postValue("차단이 해제 되었습니다.") _toastLiveData.postValue("차단이 해제 되었습니다.")
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -6,8 +6,10 @@ import com.google.gson.Gson
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
import kr.co.vividnext.sodalive.explorer.profile.creator_community.modify.ModifyCommunityPostRequest import kr.co.vividnext.sodalive.explorer.profile.creator_community.modify.ModifyCommunityPostRequest
@@ -66,7 +68,8 @@ class CreatorCommunityAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -76,7 +79,10 @@ class CreatorCommunityAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -114,7 +120,8 @@ class CreatorCommunityAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -123,7 +130,8 @@ class CreatorCommunityAllViewModel(
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
) )
@@ -177,7 +185,8 @@ class CreatorCommunityAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -185,7 +194,10 @@ class CreatorCommunityAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -212,7 +224,8 @@ class CreatorCommunityAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"신고가 접수되었습니다." SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
) )
} }
@@ -221,7 +234,10 @@ class CreatorCommunityAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("신고가 접수되었습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
)
} }
) )
) )
@@ -247,7 +263,8 @@ class CreatorCommunityAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -257,7 +274,10 @@ class CreatorCommunityAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -8,6 +8,8 @@ import android.view.WindowManager
import android.widget.RadioButton import android.widget.RadioButton
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.DialogCommunityPostReportBinding import kr.co.vividnext.sodalive.databinding.DialogCommunityPostReportBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
@@ -37,7 +39,11 @@ class CreatorCommunityReportDialog(
alertDialog.dismiss() alertDialog.dismiss()
confirmButtonClick(reason) confirmButtonClick(reason)
} else { } else {
Toast.makeText(activity, "신고 이유를 선택하세요.", Toast.LENGTH_LONG).show() Toast.makeText(activity,
SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_detail_report_reason_required),
Toast.LENGTH_LONG
).show()
} }
} }

View File

@@ -5,9 +5,11 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.audio_content.comment.ModifyCommentRequest import kr.co.vividnext.sodalive.audio_content.comment.ModifyCommentRequest
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostCommentListItem import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostCommentListItem
@@ -63,7 +65,8 @@ class CreatorCommunityCommentListViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
@@ -77,7 +80,10 @@ class CreatorCommunityCommentListViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
if (onFailure != null) { if (onFailure != null) {
onFailure() onFailure()
} }
@@ -124,7 +130,8 @@ class CreatorCommunityCommentListViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -132,7 +139,10 @@ class CreatorCommunityCommentListViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -146,12 +156,18 @@ class CreatorCommunityCommentListViewModel(
isActive: Boolean? = null isActive: Boolean? = null
) { ) {
if (comment == null && isActive == null) { if (comment == null && isActive == null) {
_toastLiveData.postValue("변경사항이 없습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_comment_no_change)
)
return return
} }
if (comment != null && comment.isBlank()) { if (comment != null && comment.isBlank()) {
_toastLiveData.postValue("내용을 입력하세요") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_creator_community_write_content_hint)
)
return return
} }
@@ -188,14 +204,18 @@ class CreatorCommunityCommentListViewModel(
getCommentList(postId) getCommentList(postId)
} }
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -228,7 +248,8 @@ class CreatorCommunityCommentListViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
@@ -242,7 +263,10 @@ class CreatorCommunityCommentListViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
if (onFailure != null) { if (onFailure != null) {
onFailure() onFailure()
} }

View File

@@ -8,8 +8,10 @@ import android.net.Uri
import android.widget.Toast import android.widget.Toast
import androidx.annotation.Keep import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName import com.google.gson.annotations.SerializedName
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService import kr.co.vividnext.sodalive.audio_content.AudioContentPlayService
import kr.co.vividnext.sodalive.audio_content.player.AudioContentPlayerService import kr.co.vividnext.sodalive.audio_content.player.AudioContentPlayerService
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import java.io.IOException import java.io.IOException
@Keep @Keep
@@ -93,7 +95,12 @@ class CreatorCommunityMediaPlayerManager(
} }
} catch (e: IOException) { } catch (e: IOException) {
e.printStackTrace() e.printStackTrace()
Toast.makeText(context, "콘텐츠를 재생하지 못했습니다.\n다시 시도해 주세요", Toast.LENGTH_SHORT).show() Toast.makeText(
context,
SodaLiveApplicationHolder.get()
.getString(R.string.screen_audition_play_error),
Toast.LENGTH_SHORT
).show()
} }
setOnCompletionListener { setOnCompletionListener {

View File

@@ -6,8 +6,10 @@ import com.google.gson.Gson
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
import okhttp3.MediaType import okhttp3.MediaType
@@ -84,7 +86,8 @@ class CreatorCommunityModifyViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
@@ -96,7 +99,10 @@ class CreatorCommunityModifyViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
if (onFailure != null) { if (onFailure != null) {
onFailure() onFailure()
} }
@@ -178,7 +184,8 @@ class CreatorCommunityModifyViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -187,7 +194,8 @@ class CreatorCommunityModifyViewModel(
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
) )
@@ -197,7 +205,10 @@ class CreatorCommunityModifyViewModel(
private fun validateData(): Boolean { private fun validateData(): Boolean {
if (content.isBlank() || content.length < 5) { if (content.isBlank() || content.length < 5) {
_toastLiveData.postValue("내용을 5자 이상 입력해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_upload_error_detail_min_length)
)
return false return false
} }

View File

@@ -1,7 +1,6 @@
package kr.co.vividnext.sodalive.explorer.profile.creator_community.write package kr.co.vividnext.sodalive.explorer.profile.creator_community.write
import android.Manifest import android.Manifest
import android.annotation.SuppressLint
import android.graphics.Bitmap import android.graphics.Bitmap
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
@@ -21,6 +20,7 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.ImagePickerCropper import kr.co.vividnext.sodalive.common.ImagePickerCropper
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityCreatorCommunityWriteBinding import kr.co.vividnext.sodalive.databinding.ActivityCreatorCommunityWriteBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import org.koin.android.ext.android.inject import org.koin.android.ext.android.inject
@@ -298,7 +298,10 @@ class CreatorCommunityWriteActivity : BaseActivity<ActivityCreatorCommunityWrite
private fun checkPriceFree() { private fun checkPriceFree() {
viewModel.price = 0 viewModel.price = 0
binding.etPrice.setText("0") binding.etPrice.setText(
SodaLiveApplicationHolder.get()
.getString(R.string.common_zero)
)
binding.rlPrice.visibility = View.GONE binding.rlPrice.visibility = View.GONE
binding.ivPriceFree.visibility = View.VISIBLE binding.ivPriceFree.visibility = View.VISIBLE

View File

@@ -6,8 +6,10 @@ import com.google.gson.Gson
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import okhttp3.MediaType import okhttp3.MediaType
import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaType
@@ -154,7 +156,8 @@ class CreatorCommunityWriteViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -164,7 +167,8 @@ class CreatorCommunityWriteViewModel(
_isLoading.postValue(false) _isLoading.postValue(false)
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
) )
@@ -174,7 +178,10 @@ class CreatorCommunityWriteViewModel(
private fun validateData(): Boolean { private fun validateData(): Boolean {
if (content.isBlank() || content.length < 5) { if (content.isBlank() || content.length < 5) {
_toastLiveData.postValue("내용을 5자 이상 입력해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_upload_error_detail_min_length)
)
return false return false
} }

View File

@@ -18,6 +18,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior
import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.FragmentRecordingVoiceBinding import kr.co.vividnext.sodalive.databinding.FragmentRecordingVoiceBinding
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
@@ -289,6 +290,7 @@ class RecordingVoiceFragment : BottomSheetDialogFragment() {
private fun stopCountDownTimer() { private fun stopCountDownTimer() {
handler.removeCallbacksAndMessages(null) handler.removeCallbacksAndMessages(null)
startTime = 0 startTime = 0
binding.tvTimer.text = "00:00.00" binding.tvTimer.text =
SodaLiveApplicationHolder.get().getString(R.string.recording_voice_initial_time)
} }
} }

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.ExplorerRepository import kr.co.vividnext.sodalive.explorer.ExplorerRepository
import kr.co.vividnext.sodalive.mypage.profile.ProfileUpdateRequest import kr.co.vividnext.sodalive.mypage.profile.ProfileUpdateRequest
import kr.co.vividnext.sodalive.user.UserRepository import kr.co.vividnext.sodalive.user.UserRepository
@@ -64,7 +66,8 @@ class UserProfileDonationAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -74,7 +77,10 @@ class UserProfileDonationAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -110,7 +116,8 @@ class UserProfileDonationAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -120,7 +127,10 @@ class UserProfileDonationAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.ExplorerRepository import kr.co.vividnext.sodalive.explorer.ExplorerRepository
import kr.co.vividnext.sodalive.explorer.profile.GetCheersResponse import kr.co.vividnext.sodalive.explorer.profile.GetCheersResponse
import kr.co.vividnext.sodalive.explorer.profile.cheers.PutModifyCheersRequest import kr.co.vividnext.sodalive.explorer.profile.cheers.PutModifyCheersRequest
@@ -59,7 +61,8 @@ class UserProfileFantalkAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -69,7 +72,10 @@ class UserProfileFantalkAllViewModel(
{ {
_isLoading.postValue(false) _isLoading.postValue(false)
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -93,7 +99,8 @@ class UserProfileFantalkAllViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"신고가 접수되었습니다." SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
) )
} }
@@ -102,7 +109,10 @@ class UserProfileFantalkAllViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("신고가 접수되었습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
)
} }
) )
) )
@@ -110,7 +120,10 @@ class UserProfileFantalkAllViewModel(
fun writeCheers(parentCheersId: Long? = null, creatorId: Long, cheersContent: String) { fun writeCheers(parentCheersId: Long? = null, creatorId: Long, cheersContent: String) {
if (cheersContent.isBlank()) { if (cheersContent.isBlank()) {
_toastLiveData.postValue("내용을 입력하세요") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_comment_input_required)
)
return return
} }
@@ -134,14 +147,18 @@ class UserProfileFantalkAllViewModel(
cheersPage = 1 cheersPage = 1
getCheersList(creatorId) getCheersList(creatorId)
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )
@@ -154,12 +171,18 @@ class UserProfileFantalkAllViewModel(
isActive: Boolean? = null isActive: Boolean? = null
) { ) {
if (cheersContent == null && isActive == null) { if (cheersContent == null && isActive == null) {
_toastLiveData.postValue("변경사항이 없습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.msg_live_room_edit_no_changes)
)
return return
} }
if (cheersContent != null && cheersContent.isBlank()) { if (cheersContent != null && cheersContent.isBlank()) {
_toastLiveData.postValue("내용을 입력하세요") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.audio_content_comment_input_required)
)
return return
} }
@@ -191,14 +214,18 @@ class UserProfileFantalkAllViewModel(
cheersPage = 1 cheersPage = 1
getCheersList(creatorId) getCheersList(creatorId)
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.ExplorerRepository import kr.co.vividnext.sodalive.explorer.ExplorerRepository
import kr.co.vividnext.sodalive.user.UserRepository import kr.co.vividnext.sodalive.user.UserRepository
@@ -72,7 +74,8 @@ class UserFollowerListViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -81,7 +84,8 @@ class UserFollowerListViewModel(
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
) )
@@ -113,7 +117,8 @@ class UserFollowerListViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
) )
} }
} }
@@ -121,7 +126,10 @@ class UserFollowerListViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.common_error_unknown)
)
} }
) )
) )

View File

@@ -6,9 +6,11 @@ import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.core.Flowable
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.audio_content.AudioContentRepository import kr.co.vividnext.sodalive.audio_content.AudioContentRepository
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository import kr.co.vividnext.sodalive.explorer.profile.creator_community.CreatorCommunityRepository
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse
import kr.co.vividnext.sodalive.home.AudioContentMainItem import kr.co.vividnext.sodalive.home.AudioContentMainItem
@@ -93,7 +95,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -101,7 +104,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -123,7 +129,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -131,7 +138,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -213,7 +223,8 @@ class LiveViewModel(
_toastLiveData.postValue(now.message) _toastLiveData.postValue(now.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -231,7 +242,8 @@ class LiveViewModel(
_toastLiveData.postValue(reservation.message) _toastLiveData.postValue(reservation.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -271,7 +283,10 @@ class LiveViewModel(
{ {
_isLoading.postValue(false) _isLoading.postValue(false)
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -295,7 +310,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -303,7 +319,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -328,7 +347,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -336,7 +356,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -363,7 +386,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -371,7 +395,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -395,7 +422,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -403,7 +431,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -468,7 +499,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -476,7 +508,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -509,7 +544,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -517,7 +553,10 @@ class LiveViewModel(
{ {
_isLoading.postValue(false) _isLoading.postValue(false)
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -552,7 +591,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -560,7 +600,10 @@ class LiveViewModel(
{ {
_isLoading.postValue(false) _isLoading.postValue(false)
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -594,7 +637,8 @@ class LiveViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -602,7 +646,10 @@ class LiveViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )

View File

@@ -14,6 +14,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityLiveReservationCancelBinding import kr.co.vividnext.sodalive.databinding.ActivityLiveReservationCancelBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.main.MainActivity import kr.co.vividnext.sodalive.main.MainActivity
@@ -75,7 +76,8 @@ class LiveReservationCancelActivity : BaseActivity<ActivityLiveReservationCancel
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
override fun setupView() { override fun setupView() {
loadingDialog = LoadingDialog(this, layoutInflater) loadingDialog = LoadingDialog(this, layoutInflater)
binding.toolbar.tvBack.text = "예약취소" binding.toolbar.tvBack.text = SodaLiveApplicationHolder.get()
.getString(R.string.live_reservation_cancel_action)
binding.toolbar.tvBack.setOnClickListener { finish() } binding.toolbar.tvBack.setOnClickListener { finish() }
binding.tvReason1.setOnClickListener { binding.tvReason1.setOnClickListener {
@@ -119,7 +121,9 @@ class LiveReservationCancelActivity : BaseActivity<ActivityLiveReservationCancel
binding.tvCancel.setOnClickListener { binding.tvCancel.setOnClickListener {
viewModel.cancelReservation { viewModel.cancelReservation {
if (binding.tvPrice.text == "무료") { if (binding.tvPrice.text == SodaLiveApplicationHolder.get()
.getString(R.string.live_reservation_free)
) {
binding.tvCancelComplete.visibility = View.GONE binding.tvCancelComplete.visibility = View.GONE
} else { } else {
binding.tvCancelComplete.visibility = View.VISIBLE binding.tvCancelComplete.visibility = View.VISIBLE
@@ -156,7 +160,9 @@ class LiveReservationCancelActivity : BaseActivity<ActivityLiveReservationCancel
binding.tvPrice.text = "${response.price}" binding.tvPrice.text = "${response.price}"
} else { } else {
binding.tvCheckCanStatus.visibility = View.GONE binding.tvCheckCanStatus.visibility = View.GONE
binding.tvPrice.text = "무료" binding.tvPrice.text =
SodaLiveApplicationHolder.get()
.getString(R.string.live_reservation_free)
} }
} }
} }

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.live.LiveRepository import kr.co.vividnext.sodalive.live.LiveRepository
class LiveReservationStatusViewModel( class LiveReservationStatusViewModel(
@@ -44,7 +46,8 @@ class LiveReservationStatusViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -53,7 +56,10 @@ class LiveReservationStatusViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -76,7 +82,8 @@ class LiveReservationStatusViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -86,7 +93,10 @@ class LiveReservationStatusViewModel(
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -117,7 +127,8 @@ class LiveReservationStatusViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -126,7 +137,10 @@ class LiveReservationStatusViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )

View File

@@ -8,9 +8,11 @@ import com.orhanobut.logger.Logger
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Single import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers import io.reactivex.rxjava3.schedulers.Schedulers
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.ApiResponse import kr.co.vividnext.sodalive.common.ApiResponse
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.common.Utils import kr.co.vividnext.sodalive.common.Utils
import kr.co.vividnext.sodalive.live.LiveRepository import kr.co.vividnext.sodalive.live.LiveRepository
import kr.co.vividnext.sodalive.live.room.donation.GetLiveRoomDonationStatusResponse import kr.co.vividnext.sodalive.live.room.donation.GetLiveRoomDonationStatusResponse
@@ -164,14 +166,18 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
}, },
{ {
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -192,14 +198,18 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
}, },
{ {
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -236,14 +246,18 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
}, },
{ {
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -348,7 +362,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -357,7 +372,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -385,7 +403,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -394,7 +413,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -489,7 +511,9 @@ class LiveRoomViewModel(
} }
if (coverImage == null && requestJson == null) { if (coverImage == null && requestJson == null) {
_toastLiveData.value = "변경사항이 없습니다." _toastLiveData.value =
SodaLiveApplicationHolder.get()
.getString(R.string.msg_live_room_edit_no_changes)
return return
} }
@@ -512,7 +536,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"라이브 정보를 수정하지 못했습니다.\n다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.msg_live_room_edit_update_failed)
) )
} }
} }
@@ -520,7 +545,8 @@ class LiveRoomViewModel(
{ {
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"라이브 정보를 수정하지 못했습니다.\n다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.msg_live_room_edit_update_failed)
) )
} }
) )
@@ -544,7 +570,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -552,7 +579,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -586,7 +616,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
onFailure() onFailure()
@@ -594,7 +625,10 @@ class LiveRoomViewModel(
}, },
{ {
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
onFailure() onFailure()
} }
) )
@@ -630,7 +664,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -638,7 +673,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -827,7 +865,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -835,7 +874,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -858,7 +900,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -866,7 +909,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -899,14 +945,18 @@ class LiveRoomViewModel(
_toastLiveData.postValue("차단하였습니다.") _toastLiveData.postValue("차단하였습니다.")
onSuccess() onSuccess()
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -929,20 +979,29 @@ class LiveRoomViewModel(
getUserProfile(roomId = roomInfoResponse.roomId, userId = userId) {} getUserProfile(roomId = roomInfoResponse.roomId, userId = userId) {}
_toastLiveData.postValue("차단이 해제 되었습니다.") _toastLiveData.postValue("차단이 해제 되었습니다.")
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
} }
fun report(type: ReportType, userId: Long, reason: String = "프로필 신고") { fun report(
type: ReportType,
userId: Long,
reason: String = SodaLiveApplicationHolder.get()
.getString(R.string.dialog_member_profile_report_profile)
) {
_isLoading.value = true _isLoading.value = true
val request = ReportRequest(type, reason, reportedMemberId = userId) val request = ReportRequest(type, reason, reportedMemberId = userId)
@@ -959,7 +1018,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"신고가 접수되었습니다." SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
) )
} }
@@ -968,7 +1028,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("신고가 접수되었습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
)
} }
) )
) )
@@ -1119,7 +1182,8 @@ class LiveRoomViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -1128,7 +1192,10 @@ class LiveRoomViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )

View File

@@ -28,6 +28,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.ImagePickerCropper import kr.co.vividnext.sodalive.common.ImagePickerCropper
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityLiveRoomCreateBinding import kr.co.vividnext.sodalive.databinding.ActivityLiveRoomCreateBinding
import kr.co.vividnext.sodalive.databinding.ItemLiveTagSelectedBinding import kr.co.vividnext.sodalive.databinding.ItemLiveTagSelectedBinding
import kr.co.vividnext.sodalive.extensions.convertDateFormat import kr.co.vividnext.sodalive.extensions.convertDateFormat
@@ -292,7 +293,11 @@ class LiveRoomCreateActivity : BaseActivity<ActivityLiveRoomCreateBinding>(
if (SharedPreferenceManager.role == MemberRole.CREATOR.name) { if (SharedPreferenceManager.role == MemberRole.CREATOR.name) {
binding.llPrice.visibility = View.VISIBLE binding.llPrice.visibility = View.VISIBLE
binding.tvPriceFree.setOnClickListener { binding.etPrice.setText("0") } binding.tvPriceFree.setOnClickListener {
binding.etPrice.setText(
SodaLiveApplicationHolder.get().getString(R.string.common_zero)
)
}
binding.tvPrice100.setOnClickListener { binding.etPrice.setText("100") } binding.tvPrice100.setOnClickListener { binding.etPrice.setText("100") }
binding.tvPrice300.setOnClickListener { binding.etPrice.setText("300") } binding.tvPrice300.setOnClickListener { binding.etPrice.setText("300") }
binding.tvPrice500.setOnClickListener { binding.etPrice.setText("500") } binding.tvPrice500.setOnClickListener { binding.etPrice.setText("500") }

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.live.LiveRepository import kr.co.vividnext.sodalive.live.LiveRepository
class LiveRoomDonationMessageViewModel(private val repository: LiveRepository) : BaseViewModel() { class LiveRoomDonationMessageViewModel(private val repository: LiveRepository) : BaseViewModel() {
@@ -46,7 +48,8 @@ class LiveRoomDonationMessageViewModel(private val repository: LiveRepository) :
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -54,7 +57,10 @@ class LiveRoomDonationMessageViewModel(private val repository: LiveRepository) :
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -80,7 +86,8 @@ class LiveRoomDonationMessageViewModel(private val repository: LiveRepository) :
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -88,7 +95,10 @@ class LiveRoomDonationMessageViewModel(private val repository: LiveRepository) :
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )

View File

@@ -30,6 +30,7 @@ import com.gun0912.tedpermission.normal.TedPermission
import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.FragmentVoiceMessageWriteBinding import kr.co.vividnext.sodalive.databinding.FragmentVoiceMessageWriteBinding
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailUser import kr.co.vividnext.sodalive.live.room.detail.GetRoomDetailUser
@@ -433,7 +434,8 @@ class VoiceMessageWriteFragment(
countDownTimer = null countDownTimer = null
} }
binding.tvTimer.text = "00:00:00" binding.tvTimer.text = SodaLiveApplicationHolder.get()
.getString(R.string.screen_audio_content_detail_time_default)
second = -1 second = -1
minute = 0 minute = 0
hour = 0 hour = 0

View File

@@ -22,6 +22,7 @@ import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.FunctionButtonHelper import kr.co.vividnext.sodalive.common.FunctionButtonHelper
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.FragmentMyBinding import kr.co.vividnext.sodalive.databinding.FragmentMyBinding
import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity import kr.co.vividnext.sodalive.explorer.profile.UserProfileActivity
import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.extensions.dpToPx
@@ -344,12 +345,14 @@ class MyPageFragment : BaseFragment<FragmentMyBinding>(FragmentMyBinding::inflat
(requireActivity() as MainActivity).showLoginActivity() (requireActivity() as MainActivity).showLoginActivity()
} }
binding.tvCanAmount.text = "0" binding.tvCanAmount.text =
SodaLiveApplicationHolder.get().getString(R.string.common_zero)
binding.tvCanAmount.setOnClickListener { binding.tvCanAmount.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity() (requireActivity() as MainActivity).showLoginActivity()
} }
binding.tvPointAmount.text = "0" binding.tvPointAmount.text =
SodaLiveApplicationHolder.get().getString(R.string.common_zero)
binding.tvPointAmount.setOnClickListener { binding.tvPointAmount.setOnClickListener {
(requireActivity() as MainActivity).showLoginActivity() (requireActivity() as MainActivity).showLoginActivity()
} }

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
class AlarmListViewModel(private val repository: AlarmListRepository) : BaseViewModel() { class AlarmListViewModel(private val repository: AlarmListRepository) : BaseViewModel() {
private val _toastLiveData = MutableLiveData<String?>() private val _toastLiveData = MutableLiveData<String?>()
@@ -47,7 +49,8 @@ class AlarmListViewModel(private val repository: AlarmListRepository) : BaseView
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -55,7 +58,10 @@ class AlarmListViewModel(private val repository: AlarmListRepository) : BaseView
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )
@@ -77,7 +83,8 @@ class AlarmListViewModel(private val repository: AlarmListRepository) : BaseView
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
) )
} }
} }
@@ -85,7 +92,10 @@ class AlarmListViewModel(private val repository: AlarmListRepository) : BaseView
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_live_room_unknown_error)
)
} }
) )
) )

View File

@@ -2,6 +2,8 @@ package kr.co.vividnext.sodalive.mypage.alarm.db
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
@Entity(tableName = "alarms") @Entity(tableName = "alarms")
data class Alarm( data class Alarm(
@@ -16,6 +18,10 @@ data class Alarm(
var isEnabled: Boolean = true var isEnabled: Boolean = true
) { ) {
fun getDaysText(): String { fun getDaysText(): String {
return if (days.size == 7) "매일" else days.joinToString(", ") return if (days.size == 7) {
SodaLiveApplicationHolder.get().getString(R.string.alarm_add_everyday)
} else {
days.joinToString(", ")
}
} }
} }

View File

@@ -4,7 +4,9 @@ import android.app.AlarmManager
import android.app.PendingIntent import android.app.PendingIntent
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.mypage.alarm.db.Alarm import kr.co.vividnext.sodalive.mypage.alarm.db.Alarm
import kr.co.vividnext.sodalive.mypage.alarm.receiver.AlarmReceiver import kr.co.vividnext.sodalive.mypage.alarm.receiver.AlarmReceiver
import java.util.Calendar import java.util.Calendar
@@ -109,13 +111,13 @@ class AlarmScheduler(private val context: Context) {
private fun getDayOfWeek(day: String): Int { private fun getDayOfWeek(day: String): Int {
return when (day) { return when (day) {
"" -> Calendar.SUNDAY SodaLiveApplicationHolder.get().getString(R.string.day_sun_short) -> Calendar.SUNDAY
"" -> Calendar.MONDAY SodaLiveApplicationHolder.get().getString(R.string.day_mon_short) -> Calendar.MONDAY
"" -> Calendar.TUESDAY SodaLiveApplicationHolder.get().getString(R.string.day_tue_short) -> Calendar.TUESDAY
"" -> Calendar.WEDNESDAY SodaLiveApplicationHolder.get().getString(R.string.day_wed_short) -> Calendar.WEDNESDAY
"" -> Calendar.THURSDAY SodaLiveApplicationHolder.get().getString(R.string.day_thu_short) -> Calendar.THURSDAY
"" -> Calendar.FRIDAY SodaLiveApplicationHolder.get().getString(R.string.day_fri_short) -> Calendar.FRIDAY
"" -> Calendar.SATURDAY SodaLiveApplicationHolder.get().getString(R.string.day_sat_short) -> Calendar.SATURDAY
else -> Calendar.MONDAY else -> Calendar.MONDAY
} }
} }

View File

@@ -8,7 +8,9 @@ import kr.co.bootpay.android.Bootpay
import kr.co.bootpay.android.events.BootpayEventListener import kr.co.bootpay.android.events.BootpayEventListener
import kr.co.bootpay.android.models.Payload import kr.co.bootpay.android.models.Payload
import kr.co.vividnext.sodalive.BuildConfig import kr.co.vividnext.sodalive.BuildConfig
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import java.util.Date import java.util.Date
object Auth { object Auth {
@@ -18,9 +20,9 @@ object Auth {
val payload = Payload() val payload = Payload()
.setApplicationId(BuildConfig.BOOTPAY_APP_ID) .setApplicationId(BuildConfig.BOOTPAY_APP_ID)
.setOrderName("본인인증") .setOrderName(SodaLiveApplicationHolder.get().getString(R.string.auth_title))
.setPg("다날") .setPg("다날")
.setMethod("본인인증") .setMethod(SodaLiveApplicationHolder.get().getString(R.string.auth_title))
.setAuthenticationId(authenticationId) .setAuthenticationId(authenticationId)
.setPrice(0.toDouble()) .setPrice(0.toDouble())

View File

@@ -33,6 +33,7 @@ import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.Constants import kr.co.vividnext.sodalive.common.Constants
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityCanPaymentBinding import kr.co.vividnext.sodalive.databinding.ActivityCanPaymentBinding
import kr.co.vividnext.sodalive.extensions.formatMoney import kr.co.vividnext.sodalive.extensions.formatMoney
import kr.co.vividnext.sodalive.mypage.auth.BootpayResponse import kr.co.vividnext.sodalive.mypage.auth.BootpayResponse
@@ -46,7 +47,10 @@ class CanPaymentActivity : BaseActivity<ActivityCanPaymentBinding>(
ActivityCanPaymentBinding::inflate ActivityCanPaymentBinding::inflate
) { ) {
enum class PaymentMethod(val method: String) { enum class PaymentMethod(val method: String) {
UNIFIED("통합 결제"), UNIFIED(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_can_payment_method_unified)
),
PHONE("휴대폰"), PHONE("휴대폰"),
KAKAOPAY("카카오페이") KAKAOPAY("카카오페이")
} }

View File

@@ -20,6 +20,7 @@ import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseActivity import kr.co.vividnext.sodalive.base.BaseActivity
import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.databinding.ActivityCanPaymentBinding import kr.co.vividnext.sodalive.databinding.ActivityCanPaymentBinding
import kr.co.vividnext.sodalive.extensions.fontSpan import kr.co.vividnext.sodalive.extensions.fontSpan
import kr.co.vividnext.sodalive.extensions.moneyFormat import kr.co.vividnext.sodalive.extensions.moneyFormat
@@ -31,7 +32,11 @@ class CanPaymentTempActivity : BaseActivity<ActivityCanPaymentBinding>(
ActivityCanPaymentBinding::inflate ActivityCanPaymentBinding::inflate
) { ) {
enum class PaymentMethod(val method: String) { enum class PaymentMethod(val method: String) {
UNIFIED("통합 결제"), PHONE("휴대폰") UNIFIED(
SodaLiveApplicationHolder.get()
.getString(R.string.screen_can_payment_method_unified)
),
PHONE("휴대폰")
} }
private val viewModel: CanPaymentTempViewModel by inject() private val viewModel: CanPaymentTempViewModel by inject()

View File

@@ -5,8 +5,10 @@ import androidx.lifecycle.MutableLiveData
import com.orhanobut.logger.Logger 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.R
import kr.co.vividnext.sodalive.base.BaseViewModel import kr.co.vividnext.sodalive.base.BaseViewModel
import kr.co.vividnext.sodalive.common.SharedPreferenceManager import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.SodaLiveApplicationHolder
import kr.co.vividnext.sodalive.report.ReportRepository import kr.co.vividnext.sodalive.report.ReportRepository
import kr.co.vividnext.sodalive.report.ReportRequest import kr.co.vividnext.sodalive.report.ReportRequest
import kr.co.vividnext.sodalive.report.ReportType import kr.co.vividnext.sodalive.report.ReportType
@@ -48,7 +50,8 @@ class UserViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
) )
} }
} }
@@ -57,7 +60,8 @@ class UserViewModel(
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue( _toastLiveData.postValue(
"알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
) )
} }
) )
@@ -81,14 +85,18 @@ class UserViewModel(
_toastLiveData.postValue("차단하였습니다.") _toastLiveData.postValue("차단하였습니다.")
onSuccess() onSuccess()
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
)
} }
) )
) )
@@ -111,14 +119,18 @@ class UserViewModel(
_toastLiveData.postValue("차단이 해제 되었습니다.") _toastLiveData.postValue("차단이 해제 되었습니다.")
onSuccess() onSuccess()
} else { } else {
val message = it.message ?: "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." val message = it.message ?: SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
_toastLiveData.postValue(message) _toastLiveData.postValue(message)
} }
}, },
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("알 수 없는 오류가 발생했습니다. 다시 시도해 주세요.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.msg_can_coupon_unknown_error)
)
} }
) )
) )
@@ -127,7 +139,8 @@ class UserViewModel(
fun report( fun report(
type: ReportType, type: ReportType,
userId: Long, userId: Long,
reason: String = "프로필 신고", reason: String = SodaLiveApplicationHolder.get()
.getString(R.string.dialog_member_profile_report_profile),
onSuccess: () -> Unit onSuccess: () -> Unit
) { ) {
_isLoading.value = true _isLoading.value = true
@@ -146,7 +159,8 @@ class UserViewModel(
_toastLiveData.postValue(it.message) _toastLiveData.postValue(it.message)
} else { } else {
_toastLiveData.postValue( _toastLiveData.postValue(
"신고가 접수되었습니다." SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
) )
} }
@@ -156,7 +170,10 @@ class UserViewModel(
{ {
_isLoading.value = false _isLoading.value = false
it.message?.let { message -> Logger.e(message) } it.message?.let { message -> Logger.e(message) }
_toastLiveData.postValue("신고가 접수되었습니다.") _toastLiveData.postValue(
SodaLiveApplicationHolder.get()
.getString(R.string.character_comment_report_submitted)
)
onSuccess() onSuccess()
} }
) )

View File

@@ -31,7 +31,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:text="목소리로 만나는 새로운 세계" android:text="@string/screen_splash_tagline"
android:textColor="#263238" android:textColor="#263238"
android:textSize="23sp" /> android:textSize="23sp" />
@@ -48,7 +48,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:fontFamily="@font/pretendard_bold" android:fontFamily="@font/pretendard_bold"
android:text="소다라이브" android:text="@string/screen_splash_brand_name"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="21sp" android:textSize="21sp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"