diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/AudioContentPlaylistCreateActivity.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/AudioContentPlaylistCreateActivity.kt index dbdc9a31..b12edad2 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/AudioContentPlaylistCreateActivity.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/AudioContentPlaylistCreateActivity.kt @@ -1,6 +1,5 @@ package kr.co.vividnext.sodalive.audio_content.playlist.create -import android.annotation.SuppressLint import android.app.Service import android.graphics.Rect import android.os.Bundle @@ -11,6 +10,7 @@ import androidx.recyclerview.widget.RecyclerView import com.jakewharton.rxbinding4.widget.textChanges import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers 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.detail.AudioContentPlaylistContent import kr.co.vividnext.sodalive.base.BaseActivity @@ -70,7 +70,8 @@ class AudioContentPlaylistCreateActivity : BaseActivity 30) { - val truncated = it.take(30) + if (it.length > PLAYLIST_TITLE_MAX_LENGTH) { + val truncated = it.take(PLAYLIST_TITLE_MAX_LENGTH) binding.etTitle.setText(truncated) binding.etTitle.setSelection(truncated.length) setTitle(truncated) @@ -171,8 +172,8 @@ class AudioContentPlaylistCreateActivity : BaseActivity 40) { - val truncated = it.take(40) + if (it.length > PLAYLIST_DESC_MAX_LENGTH) { + val truncated = it.take(PLAYLIST_DESC_MAX_LENGTH) binding.etDesc.setText(truncated) binding.etDesc.setSelection(truncated.length) setDesc(truncated) @@ -183,15 +184,26 @@ class AudioContentPlaylistCreateActivity : BaseActivity Unit) { if (validate()) { + val unknownError = + SodaLiveApplicationHolder.get().getString(R.string.common_error_unknown) _isLoading.value = true val contentIdAndOrderList = contentList.mapIndexed { index, item -> PlaylistContentIdAndOrder(item.id, index + 1) @@ -66,7 +70,7 @@ class AudioContentPlaylistCreateViewModel( if (it.message != null) { _toastLiveData.value = it.message } else { - _toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + _toastLiveData.value = unknownError } } }, @@ -75,7 +79,7 @@ class AudioContentPlaylistCreateViewModel( if (it.message != null) { _toastLiveData.value = it.message } else { - _toastLiveData.value = "알 수 없는 오류가 발생했습니다. 다시 시도해 주세요." + _toastLiveData.value = unknownError } } ) @@ -84,16 +88,27 @@ class AudioContentPlaylistCreateViewModel( } private fun validate(): Boolean { - if (title.isBlank() || title.length < 3) { - _toastLiveData.value = "제목을 3자 이상 입력하세요" + if (title.isBlank() || title.length < MIN_TITLE_LENGTH) { + _toastLiveData.value = SodaLiveApplicationHolder.get().getString( + R.string.audio_content_playlist_create_title_min_length_error, + MIN_TITLE_LENGTH + ) return false } if (contentList.isEmpty()) { - _toastLiveData.value = "콘텐츠를 1개 이상 추가하세요" + _toastLiveData.value = SodaLiveApplicationHolder.get().getString( + R.string.audio_content_playlist_create_content_min_count_error, + MIN_CONTENT_COUNT + ) return false } return true } + + private companion object { + private const val MIN_TITLE_LENGTH = 3 + private const val MIN_CONTENT_COUNT = 1 + } } diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/add_content/PlaylistAddContentDialogFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/add_content/PlaylistAddContentDialogFragment.kt index 9728b1e6..92cd4ce7 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/add_content/PlaylistAddContentDialogFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/playlist/create/add_content/PlaylistAddContentDialogFragment.kt @@ -15,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.audio_content.order.AudioContentOrderListViewModel import kr.co.vividnext.sodalive.audio_content.order.GetAudioContentOrderListItem import kr.co.vividnext.sodalive.audio_content.playlist.detail.AudioContentPlaylistContent @@ -148,7 +149,7 @@ class PlaylistAddContentDialogFragment( recyclerView.adapter = adapter } - @SuppressLint("SetTextI18n", "NotifyDataSetChanged") + @SuppressLint("NotifyDataSetChanged") private fun bindData() { viewModel.toastLiveData.observe(viewLifecycleOwner) { Toast.makeText(requireActivity(), it, Toast.LENGTH_LONG).show() @@ -175,7 +176,10 @@ class PlaylistAddContentDialogFragment( } viewModel.totalCount.observe(viewLifecycleOwner) { - binding.tvContentCount.text = "${it}개" + binding.tvContentCount.text = getString( + R.string.audio_content_playlist_total_count, + it + ) } } } diff --git a/app/src/main/res/layout/activity_audio_content_playlist_create.xml b/app/src/main/res/layout/activity_audio_content_playlist_create.xml index 1329006e..169d019d 100644 --- a/app/src/main/res/layout/activity_audio_content_playlist_create.xml +++ b/app/src/main/res/layout/activity_audio_content_playlist_create.xml @@ -27,7 +27,7 @@ android:gravity="center_vertical" android:minHeight="48dp" android:paddingHorizontal="13.3dp" - android:text="새 재생목록 만들기" + android:text="@string/audio_content_playlist_create_title" android:textColor="@color/color_eeeeee" android:textSize="18.3sp" app:drawableStartCompat="@drawable/ic_back" @@ -43,7 +43,7 @@ android:gravity="center" android:minHeight="48dp" android:paddingHorizontal="13.3dp" - android:text="저장" + android:text="@string/audio_content_playlist_create_save" android:textColor="@color/color_eeeeee" android:textSize="14.7sp" /> @@ -55,7 +55,7 @@ android:layout_marginStart="13.3dp" android:layout_marginTop="26.7dp" android:fontFamily="@font/gmarket_sans_bold" - android:text="재생목록 제목" + android:text="@string/audio_content_playlist_create_title_label" android:textColor="@color/color_eeeeee" android:textSize="16.7sp" app:layout_constraintStart_toStartOf="parent" @@ -67,7 +67,7 @@ android:layout_height="wrap_content" android:layout_marginEnd="13.3dp" android:fontFamily="@font/gmarket_sans_medium" - android:text="0/30" + android:text="@string/audio_content_playlist_create_title_length_initial" android:textColor="@color/color_777777" android:textSize="13.3sp" app:layout_constraintBottom_toBottomOf="@+id/tv_title" @@ -92,7 +92,8 @@ app:layout_constraintEnd_toEndOf="@+id/tv_title_length" app:layout_constraintStart_toStartOf="@+id/tv_title" app:layout_constraintTop_toBottomOf="@+id/tv_title" - tools:text="사랑하는게 어때서?" /> + tools:text="사랑하는게 어때서?" + tools:ignore="LabelFor" /> @@ -48,7 +48,7 @@ android:layout_height="wrap_content" android:layout_centerVertical="true" android:fontFamily="@font/gmarket_sans_medium" - android:text="전체" + android:text="@string/audio_content_label_all" android:textColor="@color/white" android:textSize="14.7sp" /> diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 7164a416..f76ba069 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -865,6 +865,16 @@ Rented Sold Out + Create new playlist + Create new playlist + Save + Title + 0/30 + Description. + 0/40 + Add/Remove content + %1$d/%2$d + Enter at least %1$d characters for the title. + Add at least %1$d content item. %1$d items Total %1$d items No playlists yet. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 1252d7f2..f04cfc86 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -865,6 +865,16 @@ レンタル中 売り切れ + 新しいプレイリストを作成 + 新しいプレイリストを作成 + 保存 + タイトル + 0/30 + 説明を入力してください。 + 0/40 + コンテンツを追加/削除 + %1$d/%2$d + タイトルを%1$d文字以上入力してください + コンテンツを%1$d件以上追加してください %1$d件 合計 %1$d件 プレイリストが空です。 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index dcb99844..57f04004 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -864,6 +864,16 @@ 대여중 Sold Out + 새 재생목록 만들기 + 새 재생목록 만들기 + 저장 + 제목 + 0/30 + 설명을 입력해주세요. + 0/40 + 새로운 콘텐츠 추가/제거 + %1$d/%2$d + 제목을 %1$d자 이상 입력하세요 + 콘텐츠를 %1$d개 이상 추가하세요 %1$d개 총 %1$d개 재생목록이 비어있습니다.