From 5218d5cd28cefbaf82ed2e62bf33fbadb8ea842f Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 00:00:10 -0600 Subject: [PATCH 1/8] fix: for different count types --- .../connections/anilist/AnilistQueries.kt | 2 +- .../ani/dantotsu/connections/anilist/api/Data.kt | 2 ++ .../ani/dantotsu/connections/anilist/api/User.kt | 2 +- .../java/ani/dantotsu/profile/StatsFragment.kt | 15 +++++++++++++-- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt index efda5768..5030527c 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -68,7 +68,7 @@ class AnilistQueries { suspend fun getUserStatistics(id: Int, sort: String = "ID"): Query.StatisticsResponse? { return executeQuery( - """{User(id:$id){id name statistics{anime{...UserStatistics}manga{...UserStatistics}}}}fragment UserStatistics on UserStatistics{count meanScore standardDeviation minutesWatched episodesWatched chaptersRead volumesRead formats(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds format}statuses(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds status}scores(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds score}lengths(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds length}releaseYears(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds releaseYear}startYears(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds startYear}genres(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds genre}tags(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds tag{id name}}countries(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds country}voiceActors(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds voiceActor{id name{first middle last full native alternative userPreferred}}characterIds}staff(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds staff{id name{first middle last full native alternative userPreferred}}}studios(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds studio{id name isAnimationStudio}}}""", + """{User(id:$id){id name mediaListOptions{scoreFormat}statistics{anime{...UserStatistics}manga{...UserStatistics}}}}fragment UserStatistics on UserStatistics{count meanScore standardDeviation minutesWatched episodesWatched chaptersRead volumesRead formats(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds format}statuses(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds status}scores(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds score}lengths(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds length}releaseYears(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds releaseYear}startYears(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds startYear}genres(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds genre}tags(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds tag{id name}}countries(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds country}voiceActors(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds voiceActor{id name{first middle last full native alternative userPreferred}}characterIds}staff(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds staff{id name{first middle last full native alternative userPreferred}}}studios(sort:$sort){count meanScore minutesWatched chaptersRead mediaIds studio{id name isAnimationStudio}}}""", force = true, show = true ) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/api/Data.kt b/app/src/main/java/ani/dantotsu/connections/anilist/api/Data.kt index 7d458933..4e7f2259 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/api/Data.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/api/Data.kt @@ -326,6 +326,8 @@ class Query { val id: Int, @SerialName("name") val name: String, + @SerialName("mediaListOptions") + val mediaListOptions: MediaListOptions, @SerialName("statistics") val statistics: StatisticsTypes ) 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 d5c6ed65..c74ef85b 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 @@ -164,7 +164,7 @@ data class Favourites( @Serializable data class MediaListOptions( // The score format the user is using for media lists - // @SerialName("scoreFormat") var scoreFormat: ScoreFormat?, + @SerialName("scoreFormat") var scoreFormat: String?, // The default order list rows should be displayed in @SerialName("rowOrder") var rowOrder: String?, diff --git a/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt b/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt index 687a18d5..cb9943d4 100644 --- a/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt @@ -225,9 +225,9 @@ class StatsFragment : val chartPackets = mutableListOf() stats.forEach { stat -> val names: List = if (anime) { - stat?.statistics?.anime?.scores?.map { it.score } ?: emptyList() + stat?.statistics?.anime?.scores?.map { convertScore(it.score, stat.mediaListOptions.scoreFormat) } ?: emptyList() } else { - stat?.statistics?.manga?.scores?.map { it.score } ?: emptyList() + stat?.statistics?.manga?.scores?.map { convertScore(it.score, stat.mediaListOptions.scoreFormat) } ?: emptyList() } val values: List = if (anime) { when (statType) { @@ -704,6 +704,17 @@ class StatsFragment : } } + private fun convertScore(score: Int, type: String?): Int { + return when (type) { + "POINT_100" -> score + "POINT_10_DECIMAL" -> score + "POINT_10" -> score * 10 + "POINT_5" -> score * 20 + "POINT_3" -> score * 33 + else -> score + } + } + companion object { fun newInstance(user: Query.UserProfile): StatsFragment { val args = Bundle().apply { From db979de829cd8d13b31227fe999e19443d720c6c Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 00:25:40 -0600 Subject: [PATCH 2/8] feat: normalize genres --- .../java/ani/dantotsu/profile/ChartBuilder.kt | 117 +++++++++++++----- .../ani/dantotsu/profile/StatsFragment.kt | 45 +++++-- 2 files changed, 117 insertions(+), 45 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/profile/ChartBuilder.kt b/app/src/main/java/ani/dantotsu/profile/ChartBuilder.kt index f9a81ee4..1fcce464 100644 --- a/app/src/main/java/ani/dantotsu/profile/ChartBuilder.kt +++ b/app/src/main/java/ani/dantotsu/profile/ChartBuilder.kt @@ -18,7 +18,6 @@ import com.github.aachartmodel.aainfographics.aaoptionsmodel.AAScrollablePlotAre import com.github.aachartmodel.aainfographics.aaoptionsmodel.AAStyle import com.github.aachartmodel.aainfographics.aaoptionsmodel.AAYAxis import com.github.aachartmodel.aainfographics.aatools.AAColor -import com.github.aachartmodel.aainfographics.aatools.AAGradientColor class ChartBuilder { companion object { @@ -37,7 +36,7 @@ class ChartBuilder { data class ChartPacket( val username: String, val names: List, - val statData: List + var statData: List ) fun buildChart( @@ -47,11 +46,12 @@ class ChartBuilder { statType: StatType, mediaType: MediaType, chartPackets: List, - xAxisName: String = "X Axis", + xAxisName: String, xAxisTickInterval: Int? = null, polar: Boolean = false, passedCategories: List? = null, scrollPos: Float? = null, + normalize: Boolean = false ): AAOptions { val typedValue = TypedValue() context.theme.resolveAttribute( @@ -69,6 +69,11 @@ class ChartBuilder { aaChartType = AAChartType.Column categories = chartPackets[0].names.map { it.toString() } } + if (normalize && chartPackets.size > 1) { + chartPackets.forEach { + it.statData = normalizeData(it.statData) + } + } val namesMax = chartPackets.maxOf { it.names.size } val palette = ColorEditor.generateColorPalette(primaryColor, namesMax) @@ -76,20 +81,25 @@ class ChartBuilder { ChartType.OneDimensional -> { val chart = AAChartModel() .chartType(aaChartType) - .subtitle(getTypeName(statType, mediaType)) + .subtitle( + getTypeName( + statType, + mediaType + ) + if (normalize && chartPackets.size > 1) " (Normalized)" else "" + ) .zoomType(AAChartZoomType.None) .dataLabelsEnabled(true) val elements: MutableList = mutableListOf() chartPackets.forEachIndexed { index, chartPacket -> - val element = AASeriesElement() - .name(chartPacket.username) - .data( - get1DElements( - chartPacket.names, - chartPacket.statData, - palette - ) + val element = AASeriesElement() + .name(chartPacket.username) + .data( + get1DElements( + chartPacket.names, + chartPacket.statData, + palette ) + ) if (index == 0) { element.color(primaryColor) } else { @@ -109,31 +119,66 @@ class ChartBuilder { palette.map { String.format("#%06X", 0xFFFFFF and it) }.toTypedArray() val chart = AAChartModel() .chartType(aaChartType) - .subtitle(getTypeName(statType, mediaType)) + .subtitle( + getTypeName( + statType, + mediaType + ) + if (normalize && chartPackets.size > 1) " (Normalized)" else "" + ) .zoomType(AAChartZoomType.None) .dataLabelsEnabled(false) - .yAxisTitle(getTypeName(statType, mediaType)) - if (chartPackets.size == 1) { - chart.colorsTheme(hexColorsArray) - } + .yAxisTitle( + getTypeName( + statType, + mediaType + ) + if (normalize && chartPackets.size > 1) " (Normalized)" else "" + ) + if (chartPackets.size == 1) { + chart.colorsTheme(hexColorsArray) + } val elements: MutableList = mutableListOf() chartPackets.forEachIndexed { index, chartPacket -> val element = get2DElements( - chartPacket.names, - chartPacket.statData, - chartPackets.size == 1 - ) + chartPacket.names, + chartPacket.statData, + chartPackets.size == 1 + ) element.name(chartPacket.username) if (index == 0) { - element.color(AAColor.rgbaColor(Color.red(primaryColor), Color.green(primaryColor), Color.blue(primaryColor), 0.9f)) + element.color( + AAColor.rgbaColor( + Color.red(primaryColor), + Color.green(primaryColor), + Color.blue(primaryColor), + 0.9f + ) + ) } else { - element.color(AAColor.rgbaColor(Color.red(ColorEditor.oppositeColor(primaryColor)), Color.green(ColorEditor.oppositeColor(primaryColor)), Color.blue(ColorEditor.oppositeColor(primaryColor)), 0.9f)) + element.color( + AAColor.rgbaColor( + Color.red( + ColorEditor.oppositeColor( + primaryColor + ) + ), + Color.green(ColorEditor.oppositeColor(primaryColor)), + Color.blue(ColorEditor.oppositeColor(primaryColor)), + 0.9f + ) + ) } if (chartPackets.size == 1) { - element.fillColor(AAColor.rgbaColor(Color.red(primaryColor), Color.green(primaryColor), Color.blue(primaryColor), 0.9f)) + element.fillColor( + AAColor.rgbaColor( + Color.red(primaryColor), + Color.green(primaryColor), + Color.blue(primaryColor), + 0.9f + ) + ) } elements.add(element) } @@ -205,12 +250,12 @@ class ChartBuilder { statValues.add(arrayOf(names[i], statData[i], statData[i])) } return AASeriesElement() - .data(statValues.toTypedArray()) - .dataLabels( - AADataLabels() - .enabled(false) - ) - .colorByPoint(colorByPoint) + .data(statValues.toTypedArray()) + .dataLabels( + AADataLabels() + .enabled(false) + ) + .colorByPoint(colorByPoint) } private fun get1DElements( @@ -255,6 +300,14 @@ class ChartBuilder { } } + private fun normalizeData(data: List): List { + if (data.isEmpty()) { + return data + } + val max = data.maxOf { it.toDouble() } + return data.map { (it.toDouble() / max) * 100 } + } + private fun setColors(aaOptions: AAOptions, context: Context, primaryColor: Int) { val backgroundColor = TypedValue() context.theme.resolveAttribute( @@ -281,7 +334,7 @@ class ChartBuilder { Color.red(colorOnBackground.data), Color.green(colorOnBackground.data), Color.blue(colorOnBackground.data), - 0.9f + 1.0f ) ) @@ -292,7 +345,7 @@ class ChartBuilder { Color.red(backgroundColor.data), Color.green(backgroundColor.data), Color.blue(backgroundColor.data), - 0.9f + 1.0f ) ) aaOptions.title?.style(onBackgroundStyle) diff --git a/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt b/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt index cb9943d4..bb245f47 100644 --- a/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/StatsFragment.kt @@ -12,10 +12,10 @@ import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.connections.anilist.api.Query import ani.dantotsu.databinding.FragmentStatisticsBinding -import ani.dantotsu.profile.ChartBuilder.Companion.ChartType -import ani.dantotsu.profile.ChartBuilder.Companion.StatType -import ani.dantotsu.profile.ChartBuilder.Companion.MediaType import ani.dantotsu.profile.ChartBuilder.Companion.ChartPacket +import ani.dantotsu.profile.ChartBuilder.Companion.ChartType +import ani.dantotsu.profile.ChartBuilder.Companion.MediaType +import ani.dantotsu.profile.ChartBuilder.Companion.StatType import com.github.aachartmodel.aainfographics.aachartcreator.AAChartType import com.xwray.groupie.GroupieAdapter import kotlinx.coroutines.Dispatchers @@ -147,7 +147,7 @@ class StatsFragment : private fun loadFormatChart(anime: Boolean) { val chartPackets = mutableListOf() - stats.forEach {stat -> + stats.forEach { stat -> val names: List = if (anime) { stat?.statistics?.anime?.formats?.map { it.format } ?: emptyList() } else { @@ -167,7 +167,7 @@ class StatsFragment : } ?: emptyList() } if (names.isNotEmpty() && values.isNotEmpty()) { - chartPackets.add(ChartPacket(stat?.name?:"Unknown", names, values)) + chartPackets.add(ChartPacket(stat?.name ?: "Unknown", names, values)) } } if (chartPackets.isNotEmpty()) { @@ -178,6 +178,7 @@ class StatsFragment : statType, type, chartPackets, + xAxisName = "Format", ) adapter.add(ChartItem("Format", formatChart, activity)) } @@ -215,7 +216,8 @@ class StatsFragment : AAChartType.Funnel, statType, type, - chartPackets + chartPackets, + xAxisName = "Status", ) adapter.add(ChartItem("Status", statusChart, activity)) } @@ -225,9 +227,19 @@ class StatsFragment : val chartPackets = mutableListOf() stats.forEach { stat -> val names: List = if (anime) { - stat?.statistics?.anime?.scores?.map { convertScore(it.score, stat.mediaListOptions.scoreFormat) } ?: emptyList() + stat?.statistics?.anime?.scores?.map { + convertScore( + it.score, + stat.mediaListOptions.scoreFormat + ) + } ?: emptyList() } else { - stat?.statistics?.manga?.scores?.map { convertScore(it.score, stat.mediaListOptions.scoreFormat) } ?: emptyList() + stat?.statistics?.manga?.scores?.map { + convertScore( + it.score, + stat.mediaListOptions.scoreFormat + ) + } ?: emptyList() } val values: List = if (anime) { when (statType) { @@ -337,6 +349,7 @@ class StatsFragment : type, chartPackets, xAxisName = "Year", + scrollPos = 0.0f ) adapter.add(ChartItem("Release Year", releaseYearChart, activity)) } @@ -429,6 +442,7 @@ class StatsFragment : xAxisName = "Genre", polar = true, passedCategories = chartPackets[0].names as List, + normalize = true ) adapter.add(ChartItem("Genre", genreChart, activity)) } @@ -546,9 +560,11 @@ class StatsFragment : val chartPackets = mutableListOf() stats.forEach { stat -> val names: List = if (anime) { - stat?.statistics?.anime?.voiceActors?.map { it.voiceActor.name.full?:"unknown" } ?: emptyList() + stat?.statistics?.anime?.voiceActors?.map { it.voiceActor.name.full ?: "unknown" } + ?: emptyList() } else { - stat?.statistics?.manga?.voiceActors?.map { it.voiceActor.name.full?:"unknown" } ?: emptyList() + stat?.statistics?.manga?.voiceActors?.map { it.voiceActor.name.full ?: "unknown" } + ?: emptyList() } val values: List = if (anime) { when (statType) { @@ -644,7 +660,8 @@ class StatsFragment : xAxisName = "Studio", polar = true, passedCategories = chartPackets[0].names as List, - scrollPos = null + scrollPos = null, + normalize = true ) adapter.add(ChartItem("Studio", studioChart, activity)) } @@ -654,9 +671,11 @@ class StatsFragment : val chartPackets = mutableListOf() stats.forEach { stat -> val names: List = if (anime) { - stat?.statistics?.anime?.staff?.map { it.staff.name.full?:"unknown" } ?: emptyList() + stat?.statistics?.anime?.staff?.map { it.staff.name.full ?: "unknown" } + ?: emptyList() } else { - stat?.statistics?.manga?.staff?.map { it.staff.name.full?:"unknown" } ?: emptyList() + stat?.statistics?.manga?.staff?.map { it.staff.name.full ?: "unknown" } + ?: emptyList() } val values: List = if (anime) { when (statType) { From 7ad586c994e88c3757f82b1920c96dd435e4416c Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 00:29:48 -0600 Subject: [PATCH 3/8] feat: brighten pink theme --- app/src/main/res/values/colors.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index d71f6935..ac1a6054 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -226,7 +226,7 @@ #e800ac - #B30084 + #FF92E2 #FFFFFF #FFD8EA #3C002A From ab14c4815f5b593ff5eca2bffe09c5139f2bf9dd Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 00:53:56 -0600 Subject: [PATCH 4/8] fix: home list sorting --- .../connections/anilist/AnilistQueries.kt | 22 +++++++++---------- .../ani/dantotsu/media/anime/ExoplayerView.kt | 8 +++---- .../dantotsu/settings/saving/Preferences.kt | 1 - 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt index 5030527c..695889ba 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -352,10 +352,10 @@ class AnilistQueries { returnArray.addAll(map.values) return returnArray } - val set = PrefManager.getVal>(PrefName.ContinuedAnimeSet).toMutableSet() - if (set.isNotEmpty()) { - set.forEach { - if (map.containsKey(it.toInt())) returnArray.add(map[it.toInt()]!!) + val list = PrefManager.getNullableCustomVal("continueAnimeList", listOf(), List::class.java) as List + if (list.isNotEmpty()) { + list.reversed().forEach { + if (map.containsKey(it)) returnArray.add(map[it]!!) } for (i in map) { if (i.value !in returnArray) returnArray.add(i.value) @@ -504,10 +504,10 @@ class AnilistQueries { returnMap["current$type"] = returnArray return } - val set = PrefManager.getVal>(PrefName.ContinuedAnimeSet).toMutableSet() - if (set.isNotEmpty()) { - set.forEach { - if (subMap.containsKey(it.toInt())) returnArray.add(subMap[it.toInt()]!!) + val list = PrefManager.getNullableCustomVal("continueAnimeList", listOf(), List::class.java) as List + if (list.isNotEmpty()) { + list.reversed().forEach { + if (subMap.containsKey(it)) returnArray.add(subMap[it]!!) } for (i in subMap) { if (i.value !in returnArray) returnArray.add(i.value) @@ -529,9 +529,9 @@ class AnilistQueries { subMap[m.id] = m } } - val set = PrefManager.getCustomVal>("continue_$type", setOf()).toMutableSet() - if (set.isNotEmpty()) { - set.reversed().forEach { + val list = PrefManager.getNullableCustomVal("continueAnimeList", listOf(), List::class.java) as List + if (list.isNotEmpty()) { + list.reversed().forEach { if (subMap.containsKey(it)) returnArray.add(subMap[it]!!) } for (i in subMap) { diff --git a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt index 0b2f831d..037b7495 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/ExoplayerView.kt @@ -1245,10 +1245,10 @@ class ExoplayerView : AppCompatActivity(), Player.Listener, SessionAvailabilityL media.anime!!.selectedEpisode!! ) - val list = PrefManager.getVal>(PrefName.ContinuedAnimeSet).toMutableList() - if (list.contains(media.id.toString())) list.remove(media.id.toString()) - list.add(media.id.toString()) - PrefManager.setVal(PrefName.ContinuedAnimeSet, list.toSet()) + val list = (PrefManager.getNullableCustomVal("continueAnimeList", listOf(), List::class.java) as List).toMutableList() + if (list.contains(media.id)) list.remove(media.id) + list.add(media.id) + PrefManager.setCustomVal("continueAnimeList", list) lifecycleScope.launch(Dispatchers.IO) { extractor?.onVideoStopped(video) diff --git a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt index af7e005b..7dec7e49 100644 --- a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt +++ b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt @@ -100,7 +100,6 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files UseInternalCast(Pref(Location.Player, Boolean::class, false)), Pip(Pref(Location.Player, Boolean::class, true)), RotationPlayer(Pref(Location.Player, Boolean::class, true)), - ContinuedAnimeSet(Pref(Location.Player, Set::class, setOf())), //Reader ShowSource(Pref(Location.Reader, Boolean::class, true)), From db50975174c3264b94a820a6de86eb4ecb4ee651 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 01:11:49 -0600 Subject: [PATCH 5/8] fix: navbar color in media details --- app/src/main/res/values/themes.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 91fa4e90..e1d6f959 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -42,7 +42,7 @@ + + + $html + + + """.trimIndent() + } + companion object { fun newInstance(query: Query.UserProfile): ProfileFragment { val args = Bundle().apply { diff --git a/app/src/main/java/ani/dantotsu/util/ColorEditor.kt b/app/src/main/java/ani/dantotsu/util/ColorEditor.kt index 4a2c1d45..6503f225 100644 --- a/app/src/main/java/ani/dantotsu/util/ColorEditor.kt +++ b/app/src/main/java/ani/dantotsu/util/ColorEditor.kt @@ -84,5 +84,14 @@ class ColorEditor { } return adjustedColor } + + fun Int.toCssColor(): String { + var base = "rgba(" + base += "${Color.red(this)}, " + base += "${Color.green(this)}, " + base += "${Color.blue(this)}, " + base += "${Color.alpha(this) / 255.0})" + return base + } } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index 90253f56..81e2207b 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -332,7 +332,7 @@ - From f3c89b3ac5358662eb5485b9d49dec30e1f95b05 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 02:30:56 -0600 Subject: [PATCH 7/8] chore: remove debug webview --- app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt b/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt index 3356bd59..ecdbca5a 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt @@ -7,7 +7,6 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.LayoutAnimationController -import android.webkit.WebView import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels @@ -64,7 +63,6 @@ class ProfileFragment() : Fragment() { binding.profileUserBio.settings.loadWithOverviewMode = true binding.profileUserBio.settings.useWideViewPort = true binding.profileUserBio.settings.javaScriptEnabled = true - WebView.setWebContentsDebuggingEnabled(true) binding.profileUserBio.setInitialScale(1) binding.profileUserBio.loadDataWithBaseURL( null, From 47d74de7ce64436b2c7fcbd29b2e943708f4859f Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Tue, 5 Mar 2024 02:33:39 -0600 Subject: [PATCH 8/8] fix: normal link colors --- app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt b/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt index ecdbca5a..06590372 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileFragment.kt @@ -62,7 +62,6 @@ class ProfileFragment() : Fragment() { binding.profileUserBio.settings.loadWithOverviewMode = true binding.profileUserBio.settings.useWideViewPort = true - binding.profileUserBio.settings.javaScriptEnabled = true binding.profileUserBio.setInitialScale(1) binding.profileUserBio.loadDataWithBaseURL( null, @@ -204,6 +203,9 @@ class ProfileFragment() : Fragment() { max-width: 100%; height: auto; /* Maintain aspect ratio */ } + a { + color: ${textColor.toCssColor()}; + } /* Add responsive design elements for other content as needed */