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 (キルア=ゾルディック)"
|
"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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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" />
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue