fix(ALsettings): staffNameLanguage crash (thx <@977936340186443826>) (#455)
This commit is contained in:
parent
04b9b9e7ff
commit
0214e6611b
6 changed files with 36 additions and 53 deletions
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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" />
|
||||
|
||||
|
|
|
@ -339,6 +339,7 @@
|
|||
<string name="selected_merge_time">Activity Merge Time</string>
|
||||
<string name="selected_score_format">Scoring System</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="custom_anime_list">Custom Anime Lists</string>
|
||||
<string name="custom_manga_list">Custom Manga Lists</string>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue