From 0214e6611be7e3eab3c6f0b6ec6d9334b095e02a Mon Sep 17 00:00:00 2001 From: ibo <41344259+sneazy-ibo@users.noreply.github.com> Date: Tue, 9 Jul 2024 04:31:53 +0200 Subject: [PATCH] fix(ALsettings): staffNameLanguage crash (thx <@977936340186443826>) (#455) --- .../dantotsu/connections/anilist/Anilist.kt | 9 ++--- .../dantotsu/connections/anilist/api/User.kt | 32 ++++++++--------- .../ani/dantotsu/media/MediaInfoFragment.kt | 4 +-- .../settings/AnilistSettingsActivity.kt | 35 +++++++------------ .../res/layout/activity_settings_anilist.xml | 8 ----- app/src/main/res/values/strings.xml | 1 + 6 files changed, 36 insertions(+), 53 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt b/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt index 6b0d288c..6acb67a4 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt @@ -157,7 +157,7 @@ object Anilist { "Native (キルア=ゾルディック)" ) - val ScoreFormat = listOf( + val scoreFormats = listOf( "100 Point (55/100)", "10 Point Decimal (5.5/10)", "10 Point (5/10)", @@ -199,9 +199,10 @@ object Anilist { else -> 0 } - fun getDisplayTimezone(apiTimezone: String): String { + fun getDisplayTimezone(apiTimezone: String, context: Context): String { + val noTimezone = context.getString(R.string.selected_no_time_zone) val parts = apiTimezone.split(":") - if (parts.size != 2) return "(GMT+00:00) London" + if (parts.size != 2) return noTimezone val hours = parts[0].toIntOrNull() ?: 0 val minutes = parts[1].toIntOrNull() ?: 0 @@ -210,7 +211,7 @@ object Anilist { val formattedMinutes = String.format(Locale.US, "%02d", minutes) val searchString = "(GMT$sign$formattedHours:$formattedMinutes)" - return timeZone.find { it.contains(searchString) } ?: "(GMT+00:00) London" + return timeZone.find { it.contains(searchString) } ?: noTimezone } fun getApiTimezone(displayTimezone: String): String { diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/api/User.kt b/app/src/main/java/ani/dantotsu/connections/anilist/api/User.kt index b887c710..ed20cb26 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/api/User.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/api/User.kt @@ -131,14 +131,28 @@ enum class UserTitleLanguage { @Serializable enum class UserStaffNameLanguage { - @SerialName("ENGLISH") - ENGLISH, + @SerialName("ROMAJI_WESTERN") + ROMAJI_WESTERN, @SerialName("ROMAJI") ROMAJI, @SerialName("NATIVE") NATIVE } +@Serializable +enum class ScoreFormat { + @SerialName("POINT_100") + POINT_100, + @SerialName("POINT_10_DECIMAL") + POINT_10_DECIMAL, + @SerialName("POINT_10") + POINT_10, + @SerialName("POINT_5") + POINT_5, + @SerialName("POINT_3") + POINT_3, +} + @Serializable data class UserStatistics( // @@ -196,20 +210,6 @@ data class MediaListOptions( @SerialName("mangaList") var mangaList: MediaListTypeOptions?, ) -@Serializable -enum class ScoreFormat { - @SerialName("POINT_100") - POINT_100, - @SerialName("POINT_10_DECIMAL") - POINT_10_DECIMAL, - @SerialName("POINT_10") - POINT_10, - @SerialName("POINT_5") - POINT_5, - @SerialName("POINT_3") - POINT_3, -} - @Serializable data class MediaListTypeOptions( // The order each list should be displayed in diff --git a/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt index 216c937f..02305938 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt @@ -105,8 +105,8 @@ class MediaInfoFragment : Fragment() { } if (media.name != null) binding.mediaInfoNameRomajiContainer.visibility = View.VISIBLE - val infoNameRomanji = tripleTab + media.nameRomaji - binding.mediaInfoNameRomaji.text = infoNameRomanji + val infoNameRomaji = tripleTab + media.nameRomaji + binding.mediaInfoNameRomaji.text = infoNameRomaji binding.mediaInfoNameRomaji.setOnLongClickListener { copyToClipboard(media.nameRomaji) true diff --git a/app/src/main/java/ani/dantotsu/settings/AnilistSettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/AnilistSettingsActivity.kt index 684fb8db..ca9741c5 100644 --- a/app/src/main/java/ani/dantotsu/settings/AnilistSettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/AnilistSettingsActivity.kt @@ -11,12 +11,15 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist -import ani.dantotsu.connections.anilist.Anilist.ScoreFormat import ani.dantotsu.connections.anilist.Anilist.activityMergeTimeMap import ani.dantotsu.connections.anilist.Anilist.rowOrderMap +import ani.dantotsu.connections.anilist.Anilist.scoreFormats import ani.dantotsu.connections.anilist.Anilist.staffNameLang import ani.dantotsu.connections.anilist.Anilist.titleLang import ani.dantotsu.connections.anilist.AnilistMutations +import ani.dantotsu.connections.anilist.api.ScoreFormat +import ani.dantotsu.connections.anilist.api.UserStaffNameLanguage +import ani.dantotsu.connections.anilist.api.UserTitleLanguage import ani.dantotsu.databinding.ActivitySettingsAnilistBinding import ani.dantotsu.initActivity import ani.dantotsu.navBarHeight @@ -33,20 +36,6 @@ class AnilistSettingsActivity : AppCompatActivity() { private lateinit var binding: ActivitySettingsAnilistBinding private lateinit var anilistMutations: AnilistMutations - enum class FormatLang { - ENGLISH, - ROMAJI, - NATIVE - } - - enum class FormatScore { - POINT_100, - POINT_10_DECIMAL, - POINT_10, - POINT_5, - POINT_3, - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() @@ -67,7 +56,7 @@ class AnilistSettingsActivity : AppCompatActivity() { } val currentTitleLang = Anilist.titleLanguage - val titleFormat = FormatLang.entries.firstOrNull { it.name == currentTitleLang } ?: FormatLang.ENGLISH + val titleFormat = UserTitleLanguage.entries.firstOrNull { it.name == currentTitleLang } ?: UserTitleLanguage.ENGLISH settingsAnilistTitleLanguage.setText(titleLang[titleFormat.ordinal]) settingsAnilistTitleLanguage.setAdapter( @@ -89,7 +78,7 @@ class AnilistSettingsActivity : AppCompatActivity() { } val currentStaffNameLang = Anilist.staffNameLanguage - val staffNameFormat = FormatLang.entries.firstOrNull { it.name == currentStaffNameLang } ?: FormatLang.ENGLISH + val staffNameFormat = UserStaffNameLanguage.entries.firstOrNull { it.name == currentStaffNameLang } ?: UserStaffNameLanguage.ROMAJI_WESTERN settingsAnilistStaffLanguage.setText(staffNameLang[staffNameFormat.ordinal]) settingsAnilistStaffLanguage.setAdapter( @@ -97,10 +86,10 @@ class AnilistSettingsActivity : AppCompatActivity() { ) settingsAnilistStaffLanguage.setOnItemClickListener { _, _, i, _ -> val selectedLanguage = when (i) { - 0 -> "ENGLISH" + 0 -> "ROMAJI_WESTERN" 1 -> "ROMAJI" 2 -> "NATIVE" - else -> "ENGLISH" + else -> "ROMAJI_WESTERN" } lifecycleScope.launch { anilistMutations.updateSettings(staffNameLanguage = selectedLanguage) @@ -128,10 +117,10 @@ class AnilistSettingsActivity : AppCompatActivity() { } val currentScoreFormat = Anilist.scoreFormat - val scoreFormat = FormatScore.entries.firstOrNull{ it.name == currentScoreFormat } ?: FormatScore.POINT_100 - settingsAnilistScoreFormat.setText(ScoreFormat[scoreFormat.ordinal]) + val scoreFormat = ScoreFormat.entries.firstOrNull{ it.name == currentScoreFormat } ?: ScoreFormat.POINT_100 + settingsAnilistScoreFormat.setText(scoreFormats[scoreFormat.ordinal]) settingsAnilistScoreFormat.setAdapter( - ArrayAdapter(context, R.layout.item_dropdown, ScoreFormat) + ArrayAdapter(context, R.layout.item_dropdown, scoreFormats) ) settingsAnilistScoreFormat.setOnItemClickListener { _, _, i, _ -> val selectedFormat = when (i) { @@ -186,7 +175,7 @@ class AnilistSettingsActivity : AppCompatActivity() { saveCustomLists() } - val currentTimezone = Anilist.timezone?.let { Anilist.getDisplayTimezone(it) } ?: "(GMT+00:00) London" + val currentTimezone = Anilist.timezone?.let { Anilist.getDisplayTimezone(it, context) } ?: context.getString(R.string.selected_no_time_zone) settingsAnilistTimezone.setText(currentTimezone) settingsAnilistTimezone.setAdapter( ArrayAdapter(context, R.layout.item_dropdown, Anilist.timeZone) diff --git a/app/src/main/res/layout/activity_settings_anilist.xml b/app/src/main/res/layout/activity_settings_anilist.xml index aa7bdd9e..4111056a 100644 --- a/app/src/main/res/layout/activity_settings_anilist.xml +++ b/app/src/main/res/layout/activity_settings_anilist.xml @@ -83,7 +83,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/selected_title_language" /> @@ -120,7 +119,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/selected_staff_language" /> @@ -157,7 +155,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/selected_merge_time" /> @@ -223,7 +220,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/selected_score_format" /> @@ -260,7 +256,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/selected_row_order" /> @@ -297,7 +292,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/custom_anime_list" /> @@ -324,7 +318,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/custom_manga_list" /> @@ -373,7 +366,6 @@ android:layout_height="wrap_content" android:layout_marginTop="20dp" android:layout_marginHorizontal="32dp" - android:alpha="0.58" android:fontFamily="@font/poppins_bold" android:text="@string/selected_time_zone" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a6ae420c..50555026 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -339,6 +339,7 @@ Activity Merge Time Scoring System Timezone + No Timezone selected Default List Order Custom Anime Lists Custom Manga Lists