fix(ALsettings): staffNameLanguage crash (thx <@977936340186443826>) (#455)

This commit is contained in:
ibo 2024-07-09 04:31:53 +02:00 committed by GitHub
parent 04b9b9e7ff
commit 0214e6611b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 36 additions and 53 deletions

View file

@ -157,7 +157,7 @@ object Anilist {
"Native (キルア=ゾルディック)" "Native (キルア=ゾルディック)"
) )
val ScoreFormat = listOf( val scoreFormats = listOf(
"100 Point (55/100)", "100 Point (55/100)",
"10 Point Decimal (5.5/10)", "10 Point Decimal (5.5/10)",
"10 Point (5/10)", "10 Point (5/10)",
@ -199,9 +199,10 @@ object Anilist {
else -> 0 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(":") 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 hours = parts[0].toIntOrNull() ?: 0
val minutes = parts[1].toIntOrNull() ?: 0 val minutes = parts[1].toIntOrNull() ?: 0
@ -210,7 +211,7 @@ object Anilist {
val formattedMinutes = String.format(Locale.US, "%02d", minutes) val formattedMinutes = String.format(Locale.US, "%02d", minutes)
val searchString = "(GMT$sign$formattedHours:$formattedMinutes)" 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 { fun getApiTimezone(displayTimezone: String): String {

View file

@ -131,14 +131,28 @@ enum class UserTitleLanguage {
@Serializable @Serializable
enum class UserStaffNameLanguage { enum class UserStaffNameLanguage {
@SerialName("ENGLISH") @SerialName("ROMAJI_WESTERN")
ENGLISH, ROMAJI_WESTERN,
@SerialName("ROMAJI") @SerialName("ROMAJI")
ROMAJI, ROMAJI,
@SerialName("NATIVE") @SerialName("NATIVE")
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 @Serializable
data class UserStatistics( data class UserStatistics(
// //
@ -196,20 +210,6 @@ data class MediaListOptions(
@SerialName("mangaList") var mangaList: MediaListTypeOptions?, @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 @Serializable
data class MediaListTypeOptions( data class MediaListTypeOptions(
// The order each list should be displayed in // The order each list should be displayed in

View file

@ -105,8 +105,8 @@ class MediaInfoFragment : Fragment() {
} }
if (media.name != null) binding.mediaInfoNameRomajiContainer.visibility = if (media.name != null) binding.mediaInfoNameRomajiContainer.visibility =
View.VISIBLE View.VISIBLE
val infoNameRomanji = tripleTab + media.nameRomaji val infoNameRomaji = tripleTab + media.nameRomaji
binding.mediaInfoNameRomaji.text = infoNameRomanji binding.mediaInfoNameRomaji.text = infoNameRomaji
binding.mediaInfoNameRomaji.setOnLongClickListener { binding.mediaInfoNameRomaji.setOnLongClickListener {
copyToClipboard(media.nameRomaji) copyToClipboard(media.nameRomaji)
true true

View file

@ -11,12 +11,15 @@ import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import ani.dantotsu.R import ani.dantotsu.R
import ani.dantotsu.connections.anilist.Anilist 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.activityMergeTimeMap
import ani.dantotsu.connections.anilist.Anilist.rowOrderMap 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.staffNameLang
import ani.dantotsu.connections.anilist.Anilist.titleLang import ani.dantotsu.connections.anilist.Anilist.titleLang
import ani.dantotsu.connections.anilist.AnilistMutations 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.databinding.ActivitySettingsAnilistBinding
import ani.dantotsu.initActivity import ani.dantotsu.initActivity
import ani.dantotsu.navBarHeight import ani.dantotsu.navBarHeight
@ -33,20 +36,6 @@ class AnilistSettingsActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingsAnilistBinding private lateinit var binding: ActivitySettingsAnilistBinding
private lateinit var anilistMutations: AnilistMutations 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?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
ThemeManager(this).applyTheme() ThemeManager(this).applyTheme()
@ -67,7 +56,7 @@ class AnilistSettingsActivity : AppCompatActivity() {
} }
val currentTitleLang = Anilist.titleLanguage 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.setText(titleLang[titleFormat.ordinal])
settingsAnilistTitleLanguage.setAdapter( settingsAnilistTitleLanguage.setAdapter(
@ -89,7 +78,7 @@ class AnilistSettingsActivity : AppCompatActivity() {
} }
val currentStaffNameLang = Anilist.staffNameLanguage 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.setText(staffNameLang[staffNameFormat.ordinal])
settingsAnilistStaffLanguage.setAdapter( settingsAnilistStaffLanguage.setAdapter(
@ -97,10 +86,10 @@ class AnilistSettingsActivity : AppCompatActivity() {
) )
settingsAnilistStaffLanguage.setOnItemClickListener { _, _, i, _ -> settingsAnilistStaffLanguage.setOnItemClickListener { _, _, i, _ ->
val selectedLanguage = when (i) { val selectedLanguage = when (i) {
0 -> "ENGLISH" 0 -> "ROMAJI_WESTERN"
1 -> "ROMAJI" 1 -> "ROMAJI"
2 -> "NATIVE" 2 -> "NATIVE"
else -> "ENGLISH" else -> "ROMAJI_WESTERN"
} }
lifecycleScope.launch { lifecycleScope.launch {
anilistMutations.updateSettings(staffNameLanguage = selectedLanguage) anilistMutations.updateSettings(staffNameLanguage = selectedLanguage)
@ -128,10 +117,10 @@ class AnilistSettingsActivity : AppCompatActivity() {
} }
val currentScoreFormat = Anilist.scoreFormat val currentScoreFormat = Anilist.scoreFormat
val scoreFormat = FormatScore.entries.firstOrNull{ it.name == currentScoreFormat } ?: FormatScore.POINT_100 val scoreFormat = ScoreFormat.entries.firstOrNull{ it.name == currentScoreFormat } ?: ScoreFormat.POINT_100
settingsAnilistScoreFormat.setText(ScoreFormat[scoreFormat.ordinal]) settingsAnilistScoreFormat.setText(scoreFormats[scoreFormat.ordinal])
settingsAnilistScoreFormat.setAdapter( settingsAnilistScoreFormat.setAdapter(
ArrayAdapter(context, R.layout.item_dropdown, ScoreFormat) ArrayAdapter(context, R.layout.item_dropdown, scoreFormats)
) )
settingsAnilistScoreFormat.setOnItemClickListener { _, _, i, _ -> settingsAnilistScoreFormat.setOnItemClickListener { _, _, i, _ ->
val selectedFormat = when (i) { val selectedFormat = when (i) {
@ -186,7 +175,7 @@ class AnilistSettingsActivity : AppCompatActivity() {
saveCustomLists() 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.setText(currentTimezone)
settingsAnilistTimezone.setAdapter( settingsAnilistTimezone.setAdapter(
ArrayAdapter(context, R.layout.item_dropdown, Anilist.timeZone) ArrayAdapter(context, R.layout.item_dropdown, Anilist.timeZone)

View file

@ -83,7 +83,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/selected_title_language" /> android:text="@string/selected_title_language" />
@ -120,7 +119,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/selected_staff_language" /> android:text="@string/selected_staff_language" />
@ -157,7 +155,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/selected_merge_time" /> android:text="@string/selected_merge_time" />
@ -223,7 +220,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/selected_score_format" /> android:text="@string/selected_score_format" />
@ -260,7 +256,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/selected_row_order" /> android:text="@string/selected_row_order" />
@ -297,7 +292,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/custom_anime_list" /> android:text="@string/custom_anime_list" />
@ -324,7 +318,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/custom_manga_list" /> android:text="@string/custom_manga_list" />
@ -373,7 +366,6 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginHorizontal="32dp" android:layout_marginHorizontal="32dp"
android:alpha="0.58"
android:fontFamily="@font/poppins_bold" android:fontFamily="@font/poppins_bold"
android:text="@string/selected_time_zone" /> android:text="@string/selected_time_zone" />

View file

@ -339,6 +339,7 @@
<string name="selected_merge_time">Activity Merge Time</string> <string name="selected_merge_time">Activity Merge Time</string>
<string name="selected_score_format">Scoring System</string> <string name="selected_score_format">Scoring System</string>
<string name="selected_time_zone">Timezone</string> <string name="selected_time_zone">Timezone</string>
<string name="selected_no_time_zone">No Timezone selected</string>
<string name="selected_row_order">Default List Order</string> <string name="selected_row_order">Default List Order</string>
<string name="custom_anime_list">Custom Anime Lists</string> <string name="custom_anime_list">Custom Anime Lists</string>
<string name="custom_manga_list">Custom Manga Lists</string> <string name="custom_manga_list">Custom Manga Lists</string>