From 2dc3035a7c766a6c3530fc0a7664b8320f2b2750 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Sat, 30 Mar 2024 02:39:47 +0530 Subject: [PATCH 1/8] feat: more options in anime and manga side --- .../connections/anilist/AnilistQueries.kt | 42 +++++ .../connections/anilist/AnilistViewModel.kt | 56 +++++++ .../dantotsu/connections/anilist/api/Data.kt | 26 ++- .../java/ani/dantotsu/home/AnimeFragment.kt | 16 ++ .../ani/dantotsu/home/AnimePageAdapter.kt | 48 ++++++ .../java/ani/dantotsu/home/MangaFragment.kt | 21 +++ .../ani/dantotsu/home/MangaPageAdapter.kt | 66 +++++++- .../dantotsu/media/anime/AnimeWatchAdapter.kt | 6 +- .../dantotsu/profile/activity/FeedFragment.kt | 15 +- .../ani/dantotsu/settings/SettingsActivity.kt | 10 +- .../dantotsu/settings/saving/Preferences.kt | 2 + .../widgets/statistics/ProfileStatsWidget.kt | 8 +- .../res/layout/activity_settings_anime.xml | 19 ++- .../res/layout/activity_settings_manga.xml | 18 ++- app/src/main/res/layout/item_anime_page.xml | 120 ++++++++++++++ app/src/main/res/layout/item_manga_page.xml | 152 ++++++++++++++++++ app/src/main/res/layout/statistics_widget.xml | 80 +++++---- app/src/main/res/values/strings.xml | 5 + 18 files changed, 657 insertions(+), 53 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 4e02d228..acd81cff 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -1022,7 +1022,49 @@ query (${"$"}page: Int = 1, ${"$"}id: Int, ${"$"}type: MediaType, ${"$"}isAdult: } return null } + private fun trendingMovie(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: ANIME, format: MOVIE, onList:${PrefManager.getVal(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + private fun topRatedAnime(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: ANIME,onList:${PrefManager.getVal(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + private fun mostFavAnime(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: ANIME,onList:${PrefManager.getVal(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + suspend fun loadAnimeList(): Query.AnimeList?{ + return executeQuery( + """{ + trendingMovie:${trendingMovie()} + topRated:${topRatedAnime()} + mostFav:${mostFavAnime()} + }""".trimIndent(), force = true + ) + } + + private fun trendingManga(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + private fun trendingManhwa(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, countryOfOrigin:KR onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + private fun topRatedManga(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: MANGA,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + private fun mostFavManga(): String{ + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: MANGA,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + } + suspend fun loadMangaList(): Query.MangaList?{ + return executeQuery( + """{ + trendingManga:${trendingManga()} + trendingManhwa:${trendingManhwa()} + topRated:${topRatedManga()} + mostFav:${mostFavManga()} + }""".trimIndent(), force = true + ) + + } suspend fun recentlyUpdated( smaller: Boolean = true, greater: Long = 0, diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt index a4092b91..76689047 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistViewModel.kt @@ -156,6 +156,7 @@ class AnilistAnimeViewModel : ViewModel() { suspend fun loadUpdated() = updated.postValue(Anilist.query.recentlyUpdated()) private val animePopular = MutableLiveData(null) + fun getPopular(): LiveData = animePopular suspend fun loadPopular( type: String, @@ -192,6 +193,30 @@ class AnilistAnimeViewModel : ViewModel() { ) var loaded: Boolean = false + + private val popularMovies: MutableLiveData> = + MutableLiveData>(null) + fun getMovies(): LiveData> = popularMovies + + private val topRated: MutableLiveData> = + MutableLiveData>(null) + fun getTopRated(): LiveData> = topRated + + private val mostFav: MutableLiveData> = + MutableLiveData>(null) + fun getMostFav(): LiveData> = mostFav + suspend fun loadAll() { + val response = Anilist.query.loadAnimeList() + + val trendingMovie = response?.data?.trendingMovie?.media?.map { Media(it) }?.toMutableList() + popularMovies.postValue(trendingMovie ?: arrayListOf()) + + val topRatedList = response?.data?.topRated?.media?.map { Media(it) }?.toMutableList() + topRated.postValue(topRatedList ?: arrayListOf()) + + val mostFavList = response?.data?.mostFav?.media?.map { Media(it) }?.toMutableList() + mostFav.postValue(mostFavList ?: arrayListOf()) + } } class AnilistMangaViewModel : ViewModel() { @@ -268,6 +293,37 @@ class AnilistMangaViewModel : ViewModel() { ) var loaded: Boolean = false + + private val popularManga: MutableLiveData> = + MutableLiveData>(null) + fun getPopularManga(): LiveData> = popularManga + + private val popularManhwa: MutableLiveData> = + MutableLiveData>(null) + fun getPopularManhwa(): LiveData> = popularManhwa + + private val topRated: MutableLiveData> = + MutableLiveData>(null) + fun getTopRated(): LiveData> = topRated + + private val mostFav: MutableLiveData> = + MutableLiveData>(null) + fun getMostFav(): LiveData> = mostFav + suspend fun loadAll() { + val response = Anilist.query.loadMangaList() + + val trendingManga = response?.data?.trendingManga?.media?.map { Media(it) }?.toMutableList() + popularManga.postValue(trendingManga ?: arrayListOf()) + + val trendingManhwa = response?.data?.trendingManhwa?.media?.map { Media(it) }?.toMutableList() + popularManhwa.postValue(trendingManhwa ?: arrayListOf()) + + val topRatedList = response?.data?.topRated?.media?.map { Media(it) }?.toMutableList() + topRated.postValue(topRatedList ?: arrayListOf()) + + val mostFavList = response?.data?.mostFav?.media?.map { Media(it) }?.toMutableList() + mostFav.postValue(mostFavList ?: arrayListOf()) + } } class AnilistSearch : ViewModel() { 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 58445406..512974ce 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 @@ -152,7 +152,31 @@ class Query { @SerialName("mangaMediaList") val mangaMediaList: ani.dantotsu.connections.anilist.api.MediaListCollection? ) } - + @Serializable + data class AnimeList( + @SerialName("data") + val data: Data? + ) { + @Serializable + data class Data( + @SerialName("trendingMovie") val trendingMovie: ani.dantotsu.connections.anilist.api.Page?, + @SerialName("topRated") val topRated: ani.dantotsu.connections.anilist.api.Page?, + @SerialName("mostFav") val mostFav: ani.dantotsu.connections.anilist.api.Page?, + ) + } + @Serializable + data class MangaList( + @SerialName("data") + val data: Data? + ) { + @Serializable + data class Data( + @SerialName("trendingManga") val trendingManga: ani.dantotsu.connections.anilist.api.Page?, + @SerialName("trendingManhwa") val trendingManhwa: ani.dantotsu.connections.anilist.api.Page?, + @SerialName("topRated") val topRated: ani.dantotsu.connections.anilist.api.Page?, + @SerialName("mostFav") val mostFav: ani.dantotsu.connections.anilist.api.Page?, + ) + } @Serializable data class ToggleFollow( @SerialName("data") diff --git a/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt b/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt index c7434c96..3f530fde 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimeFragment.kt @@ -207,6 +207,21 @@ class AnimeFragment : Fragment() { animePageAdapter.updateRecent(MediaAdaptor(0, it, requireActivity())) } } + model.getMovies().observe(viewLifecycleOwner) { + if (it != null) { + animePageAdapter.updateMovies(MediaAdaptor(0, it, requireActivity())) + } + } + model.getTopRated().observe(viewLifecycleOwner) { + if (it != null) { + animePageAdapter.updateTopRated(MediaAdaptor(0, it, requireActivity())) + } + } + model.getMostFav().observe(viewLifecycleOwner) { + if (it != null) { + animePageAdapter.updateMostFav(MediaAdaptor(0, it, requireActivity())) + } + } if (animePageAdapter.trendingViewPager != null) { animePageAdapter.updateHeight() model.getTrending().observe(viewLifecycleOwner) { @@ -264,6 +279,7 @@ class AnimeFragment : Fragment() { model.loaded = true model.loadTrending(1) model.loadUpdated() + model.loadAll() model.loadPopular( "ANIME", sort = Anilist.sortBy[1], onList = PrefManager.getVal( PrefName.PopularAnimeList diff --git a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt index 2aacbda4..f0cd245e 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt @@ -212,7 +212,55 @@ class AnimePageAdapter : RecyclerView.Adapter() { - + private var autoSelect = true var subscribe: MediaDetailsActivity.PopImageButton? = null private var _binding: ItemAnimeWatchBinding? = null @@ -437,7 +437,8 @@ class AnimeWatchAdapter( val sourceFound = media.anime.episodes!!.isNotEmpty() binding.animeSourceNotFound.isGone = sourceFound binding.faqbutton.isGone = sourceFound - if (!sourceFound && PrefManager.getVal(PrefName.SearchSources)) { + + if (!sourceFound && PrefManager.getVal(PrefName.SearchSources) && autoSelect) { if (binding.animeSource.adapter.count > media.selected!!.sourceIndex + 1) { val nextIndex = media.selected!!.sourceIndex + 1 binding.animeSource.setText(binding.animeSource.adapter @@ -453,6 +454,7 @@ class AnimeWatchAdapter( fragment.loadEpisodes(nextIndex, false) } } + binding.animeSource.setOnClickListener { autoSelect = false } } else { binding.animeSourceContinue.visibility = View.GONE binding.animeSourceNotFound.visibility = View.GONE diff --git a/app/src/main/java/ani/dantotsu/profile/activity/FeedFragment.kt b/app/src/main/java/ani/dantotsu/profile/activity/FeedFragment.kt index 40c96829..be624b29 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/FeedFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/FeedFragment.kt @@ -55,12 +55,12 @@ class FeedFragment : Fragment() { if (userId == -1) userId = null global = arguments?.getBoolean("global", false) ?: false - val navBar = if (userId != null) - (activity as ProfileActivity).navBar - else - (activity as FeedActivity).navBar + val navBar = if (userId != null) { + (activity as ProfileActivity).navBar + }else{ + (activity as FeedActivity).navBar + } binding.listRecyclerView.setBaseline(navBar) - binding.listRecyclerView.adapter = adapter binding.listRecyclerView.layoutManager = LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) @@ -72,10 +72,11 @@ class FeedFragment : Fragment() { super.onResume() if (this::binding.isInitialized) { binding.root.requestLayout() - val navBar = if (userId != null) + val navBar = if (userId != null) { (activity as ProfileActivity).navBar - else + }else{ (activity as FeedActivity).navBar + } binding.listRecyclerView.setBaseline(navBar) if (!loadedFirstTime) { activity.lifecycleScope.launch(Dispatchers.IO) { diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index 8733da53..19d03161 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -454,7 +454,10 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene settingsShowYt.setOnCheckedChangeListener { _, isChecked -> PrefManager.setVal(PrefName.ShowYtButton, isChecked) } - + settingsIncludeAnimeList.isChecked = PrefManager.getVal(PrefName.IncludeAnimeList) + settingsIncludeAnimeList.setOnCheckedChangeListener { _, isChecked -> + PrefManager.setVal(PrefName.IncludeAnimeList, isChecked) + } var previousEp: View = when (PrefManager.getVal(PrefName.AnimeDefaultView)) { 0 -> settingsEpList 1 -> settingsEpGrid @@ -541,6 +544,11 @@ class SettingsActivity : AppCompatActivity(), SimpleDialog.OnDialogResultListene settingsChpCompact.setOnClickListener { uiChp(1, it) } + + settingsIncludeMangaList.isChecked = PrefManager.getVal(PrefName.IncludeMangaList) + settingsIncludeMangaList.setOnCheckedChangeListener { _, isChecked -> + PrefManager.setVal(PrefName.IncludeMangaList, isChecked) + } } bindingExtensions = ActivitySettingsExtensionsBinding.bind(binding.root).apply { 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 76e80bb2..bb4b3f1e 100644 --- a/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt +++ b/app/src/main/java/ani/dantotsu/settings/saving/Preferences.kt @@ -77,6 +77,8 @@ enum class PrefName(val data: Pref) { //TODO: Split this into multiple files MangaListSortOrder(Pref(Location.UI, String::class, "score")), CommentSortOrder(Pref(Location.UI, String::class, "newest")), FollowerLayout(Pref(Location.UI, Int::class, 0)), + IncludeAnimeList(Pref(Location.UI, Boolean::class, true)), + IncludeMangaList(Pref(Location.UI, Boolean::class, true)), //Player DefaultSpeed(Pref(Location.Player, Int::class, 5)), diff --git a/app/src/main/java/ani/dantotsu/widgets/statistics/ProfileStatsWidget.kt b/app/src/main/java/ani/dantotsu/widgets/statistics/ProfileStatsWidget.kt index 06202ea0..498f6739 100644 --- a/app/src/main/java/ani/dantotsu/widgets/statistics/ProfileStatsWidget.kt +++ b/app/src/main/java/ani/dantotsu/widgets/statistics/ProfileStatsWidget.kt @@ -140,13 +140,13 @@ class ProfileStatsWidget : AppWidgetProvider() { ) ) setTextColor(R.id.userLabel, titleTextColor) - setTextColor(R.id.topLeftItem, statsTextColor) + setTextColor(R.id.topLeftItem, titleTextColor) setTextColor(R.id.topLeftLabel, statsTextColor) - setTextColor(R.id.topRightItem, statsTextColor) + setTextColor(R.id.topRightItem, titleTextColor) setTextColor(R.id.topRightLabel, statsTextColor) - setTextColor(R.id.bottomLeftItem, statsTextColor) + setTextColor(R.id.bottomLeftItem, titleTextColor) setTextColor(R.id.bottomLeftLabel, statsTextColor) - setTextColor(R.id.bottomRightItem, statsTextColor) + setTextColor(R.id.bottomRightItem, titleTextColor) setTextColor(R.id.bottomRightLabel, statsTextColor) setImageViewBitmap( diff --git a/app/src/main/res/layout/activity_settings_anime.xml b/app/src/main/res/layout/activity_settings_anime.xml index c24b8114..a3193bba 100644 --- a/app/src/main/res/layout/activity_settings_anime.xml +++ b/app/src/main/res/layout/activity_settings_anime.xml @@ -181,7 +181,6 @@ android:id="@+id/settingsShowYt" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginBottom="16dp" android:checked="true" android:drawableStart="@drawable/ic_round_play_circle_24" android:drawablePadding="16dp" @@ -195,5 +194,23 @@ app:drawableTint="?attr/colorPrimary" app:showText="false" app:thumbTint="@color/button_switch_track" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_settings_manga.xml b/app/src/main/res/layout/activity_settings_manga.xml index 66939e74..9b955c71 100644 --- a/app/src/main/res/layout/activity_settings_manga.xml +++ b/app/src/main/res/layout/activity_settings_manga.xml @@ -158,7 +158,23 @@ app:iconPadding="16dp" app:iconSize="24dp" app:iconTint="?attr/colorPrimary" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + android:orientation="vertical" + android:theme="@style/Theme.Dantotsu.AppWidgetContainer"> + tools:ignore="ContentDescription" /> + android:baselineAligned="false" + android:gravity="center_horizontal" + android:orientation="horizontal"> + + tools:ignore="ContentDescription" /> + + android:text="@string/loading" + android:textSize="18sp" /> + android:gravity="center" + android:orientation="vertical" + android:padding="4dp"> + + android:layout_weight="1" + android:baselineAligned="false" + android:orientation="horizontal"> + + + android:text="@string/loading" /> + @@ -96,21 +101,23 @@ android:layout_gravity="center" android:layout_weight="1" android:orientation="vertical"> + + android:text="@string/loading" /> + + android:gravity="center" + android:text="@string/episodes_watched_n" /> @@ -125,10 +132,11 @@ android:id="@+id/bottomLeft" android:layout_width="match_parent" android:layout_height="match_parent" - android:layout_weight="1" android:layout_gravity="center" - android:orientation="horizontal" - android:baselineAligned="false"> + android:layout_weight="1" + android:baselineAligned="false" + android:orientation="horizontal"> + + + android:text="@string/loading" /> + + android:fontFamily="@font/poppins_semi_bold" + android:gravity="center" + android:text="@string/manga_read" /> + + android:text="@string/loading" /> + + android:gravity="center" + android:text="@string/chapters_read_n" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5f02f550..a3ade9bb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -839,4 +839,9 @@ Non quae tempore quo provident laudantium qui illo dolor vel quia dolor et exerc Title Color Stats Text Color Placeholder + Trending Movies + Include list + Top rated + Most Favourite + Trending Manhwa From 1c1d14fff117536a2a5d01bd05b8568e0323b0d5 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Sat, 30 Mar 2024 02:54:44 +0530 Subject: [PATCH 2/8] fix: "popular manga" text missing --- .../java/ani/dantotsu/connections/anilist/AnilistQueries.kt | 4 ++-- app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt | 3 +++ app/src/main/res/layout/item_manga_page.xml | 1 - 3 files changed, 5 insertions(+), 3 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 acd81cff..30e6f5ca 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -1043,10 +1043,10 @@ query (${"$"}page: Int = 1, ${"$"}id: Int, ${"$"}type: MediaType, ${"$"}isAdult: } private fun trendingManga(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA,countryOfOrigin:JP ,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun trendingManhwa(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, countryOfOrigin:KR onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, countryOfOrigin:KR ,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun topRatedManga(): String{ return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: MANGA,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" diff --git a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt index e813ab78..213c61d2 100644 --- a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt @@ -178,6 +178,7 @@ class MangaPageAdapter : RecyclerView.Adapter - From a02b8b7b0a203b259be852dfdcc68a66f9b95267 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Sat, 30 Mar 2024 03:04:27 +0530 Subject: [PATCH 3/8] fix: text in manga side not disappearing --- app/src/main/res/layout/item_manga_page.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/res/layout/item_manga_page.xml b/app/src/main/res/layout/item_manga_page.xml index 13b8966c..e711f136 100644 --- a/app/src/main/res/layout/item_manga_page.xml +++ b/app/src/main/res/layout/item_manga_page.xml @@ -133,6 +133,7 @@ android:fontFamily="@font/poppins_bold" android:padding="8dp" android:text="@string/trending_manga" + android:visibility="invisible" android:textSize="16sp" /> Date: Sat, 30 Mar 2024 03:11:05 +0530 Subject: [PATCH 4/8] fix: removed onlist for now --- .../dantotsu/connections/anilist/AnilistQueries.kt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 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 30e6f5ca..4492c414 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -1023,13 +1023,13 @@ query (${"$"}page: Int = 1, ${"$"}id: Int, ${"$"}type: MediaType, ${"$"}isAdult: return null } private fun trendingMovie(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: ANIME, format: MOVIE, onList:${PrefManager.getVal(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: ANIME, format: MOVIE){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun topRatedAnime(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: ANIME,onList:${PrefManager.getVal(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: ANIME){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun mostFavAnime(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: ANIME,onList:${PrefManager.getVal(PrefName.IncludeAnimeList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: ANIME){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } suspend fun loadAnimeList(): Query.AnimeList?{ return executeQuery( @@ -1043,16 +1043,16 @@ query (${"$"}page: Int = 1, ${"$"}id: Int, ${"$"}type: MediaType, ${"$"}isAdult: } private fun trendingManga(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA,countryOfOrigin:JP ,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA,countryOfOrigin:JP){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun trendingManhwa(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, countryOfOrigin:KR ,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:POPULARITY_DESC, type: MANGA, countryOfOrigin:KR){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun topRatedManga(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: MANGA,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort: SCORE_DESC, type: MANGA){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } private fun mostFavManga(): String{ - return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: MANGA,onList:${PrefManager.getVal(PrefName.IncludeMangaList)}){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" + return """Page(page:1,perPage:50){pageInfo{hasNextPage total}media(sort:FAVOURITES_DESC,type: MANGA){id idMal status chapters episodes nextAiringEpisode{episode}isAdult type meanScore isFavourite format bannerImage countryOfOrigin coverImage{large}title{english romaji userPreferred}mediaListEntry{progress private score(format:POINT_100)status}}}""" } suspend fun loadMangaList(): Query.MangaList?{ return executeQuery( From c29147a6817e01c3d0284b50d4ff428735792681 Mon Sep 17 00:00:00 2001 From: TwistedUmbrellaX <1173913+AbandonedCart@users.noreply.github.com> Date: Fri, 29 Mar 2024 18:11:37 -0400 Subject: [PATCH 5/8] Just some quality of life garbage (#304) * fix: statistics widget min sizes * fix: offset for split TextView values Due to format and color changes, the text is split between two separate items and this space avoids multiple insertions in code * feat: extension launch from notice * fix: wait for the UI to post stuff to it --- .../main/java/ani/dantotsu/MainActivity.kt | 25 ++++++++++--------- .../extension/ExtensionUpdateNotifier.kt | 2 +- app/src/main/res/values/strings.xml | 6 +++-- .../res/xml-v31/statistics_widget_info.xml | 6 ++--- .../main/res/xml/statistics_widget_info.xml | 8 +++--- 5 files changed, 25 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index 8a45b6e3..adf1334f 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -15,6 +15,7 @@ import android.os.Looper import android.provider.Settings import android.view.LayoutInflater import android.view.View +import android.view.View.OnClickListener import android.view.ViewGroup import android.view.animation.AnticipateInterpolator import android.widget.TextView @@ -54,6 +55,7 @@ import ani.dantotsu.others.CustomBottomDialog import ani.dantotsu.profile.ProfileActivity import ani.dantotsu.profile.activity.FeedActivity import ani.dantotsu.profile.activity.NotificationActivity +import ani.dantotsu.settings.ExtensionsActivity import ani.dantotsu.settings.saving.PrefManager import ani.dantotsu.settings.saving.PrefManager.asLiveBool import ani.dantotsu.settings.saving.PrefName @@ -228,17 +230,6 @@ class MainActivity : AppCompatActivity() { } } - val preferences: SourcePreferences = Injekt.get() - if (preferences.animeExtensionUpdatesCount() - .get() > 0 || preferences.mangaExtensionUpdatesCount().get() > 0 - ) { - Toast.makeText( - this, - "You have extension updates available!", - Toast.LENGTH_LONG - ).show() - } - binding.root.isMotionEventSplittingEnabled = false lifecycleScope.launch { @@ -282,6 +273,16 @@ class MainActivity : AppCompatActivity() { binding.root.doOnAttach { initActivity(this) + val preferences: SourcePreferences = Injekt.get() + if (preferences.animeExtensionUpdatesCount() + .get() > 0 || preferences.mangaExtensionUpdatesCount().get() > 0 + ) { + snackString(R.string.extension_updates_available) + ?.setDuration(Snackbar.LENGTH_LONG) + ?.setAction(R.string.review) { + startActivity(Intent(this, ExtensionsActivity::class.java)) + } + } window.navigationBarColor = ContextCompat.getColor(this, android.R.color.transparent) selectedOption = if (fragment != null) { when (fragment) { @@ -482,7 +483,7 @@ class MainActivity : AppCompatActivity() { dialogView.findViewById(R.id.userAgentTextBox)?.hint = "Password" val subtitleTextView = dialogView.findViewById(R.id.subtitle) subtitleTextView?.visibility = View.VISIBLE - subtitleTextView?.text = "Enter your password to decrypt the file" + subtitleTextView?.text = getString(R.string.enter_password_to_decrypt_file) val dialog = AlertDialog.Builder(this, R.style.MyPopup) .setTitle("Enter Password") diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateNotifier.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateNotifier.kt index 84acd4b3..559cc35f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateNotifier.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionUpdateNotifier.kt @@ -15,7 +15,7 @@ class ExtensionUpdateNotifier(private val context: Context) { Notifications.CHANNEL_EXTENSIONS_UPDATE, ) { setContentTitle( - "Extension updates available" + context.getString(R.string.extension_updates_available) ) val extNames = names.joinToString(", ") setContentText(extNames) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8483ce51..7da65ce2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -49,9 +49,9 @@ Popular Manga Username - Chapters Read + Chapters Read Chapters\nRead - Episodes Watched + Episodes Watched Episodes\nWatched Continue Reading Continue Watching @@ -175,6 +175,7 @@ Offline Mode Settings Extensions + Extension updates available Player Settings Only show my content in \"Recently Updated\" Download Manager @@ -418,6 +419,7 @@ Extension installed Error: %1$s Step: %1$s + Review DAMN! YOU TRULY ARE JOBLESS\nYOU REACHED THE END Couldn\'t find any File Manager to open SD card diff --git a/app/src/main/res/xml-v31/statistics_widget_info.xml b/app/src/main/res/xml-v31/statistics_widget_info.xml index 5ede252a..db300364 100644 --- a/app/src/main/res/xml-v31/statistics_widget_info.xml +++ b/app/src/main/res/xml-v31/statistics_widget_info.xml @@ -3,10 +3,10 @@ android:description="@string/profile_stats_widget" android:initialKeyguardLayout="@layout/statistics_widget" android:initialLayout="@layout/statistics_widget" - android:targetCellWidth="3" + android:targetCellWidth="2" android:targetCellHeight="2" - android:minResizeWidth="180dp" - android:minResizeHeight="110dp" + android:minResizeWidth="130dp" + android:minResizeHeight="220dp" android:previewImage="@drawable/statistics_widget_preview" android:previewLayout="@layout/statistics_widget" android:resizeMode="horizontal|vertical" diff --git a/app/src/main/res/xml/statistics_widget_info.xml b/app/src/main/res/xml/statistics_widget_info.xml index 6dc9ec4b..bb008af0 100644 --- a/app/src/main/res/xml/statistics_widget_info.xml +++ b/app/src/main/res/xml/statistics_widget_info.xml @@ -3,10 +3,10 @@ android:description="@string/profile_stats_widget" android:initialKeyguardLayout="@layout/statistics_widget" android:initialLayout="@layout/statistics_widget" - android:minWidth="180dp" - android:minHeight="110dp" - android:minResizeWidth="180dp" - android:minResizeHeight="110dp" + android:minWidth="130dp" + android:minHeight="220dp" + android:minResizeWidth="130dp" + android:minResizeHeight="220dp" android:previewImage="@drawable/statistics_widget_preview" android:resizeMode="horizontal|vertical" android:updatePeriodMillis="86400000" From e31d2ada4ffab7fd157975a6bfbab34462fa77c1 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Fri, 29 Mar 2024 17:18:20 -0500 Subject: [PATCH 6/8] fix: logout of comments when log out of anilist --- .../dantotsu/connections/anilist/Anilist.kt | 4 ++ .../connections/comments/CommentsAPI.kt | 37 ++++++++++++------- 2 files changed, 28 insertions(+), 13 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 804343f6..fc089716 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/Anilist.kt @@ -7,6 +7,7 @@ import android.util.Log import androidx.browser.customtabs.CustomTabsIntent import ani.dantotsu.R import ani.dantotsu.client +import ani.dantotsu.connections.comments.CommentsAPI import ani.dantotsu.currContext import ani.dantotsu.openLinkInBrowser import ani.dantotsu.settings.saving.PrefManager @@ -117,6 +118,9 @@ object Anilist { episodesWatched = null chapterRead = null PrefManager.removeVal(PrefName.AnilistToken) + //logout from comments api + CommentsAPI.logout() + } suspend inline fun executeQuery( diff --git a/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt b/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt index defb5bad..9c6d473c 100644 --- a/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt +++ b/app/src/main/java/ani/dantotsu/connections/comments/CommentsAPI.kt @@ -24,7 +24,7 @@ import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get object CommentsAPI { - val address: String = "https://1224665.xyz:443" + private const val ADDRESS: String = "https://1224665.xyz:443" var authToken: String? = null var userId: String? = null var isBanned: Boolean = false @@ -33,7 +33,7 @@ object CommentsAPI { var totalVotes: Int = 0 suspend fun getCommentsForId(id: Int, page: Int = 1, tag: Int?, sort: String?): CommentResponse? { - var url = "$address/comments/$id/$page" + var url = "$ADDRESS/comments/$id/$page" val request = requestBuilder() tag?.let { url += "?tag=$it" @@ -61,7 +61,7 @@ object CommentsAPI { } suspend fun getRepliesFromId(id: Int, page: Int = 1): CommentResponse? { - val url = "$address/comments/parent/$id/$page" + val url = "$ADDRESS/comments/parent/$id/$page" val request = requestBuilder() val json = try { request.get(url) @@ -83,7 +83,7 @@ object CommentsAPI { } suspend fun getSingleComment(id: Int): Comment? { - val url = "$address/comments/$id" + val url = "$ADDRESS/comments/$id" val request = requestBuilder() val json = try { request.get(url) @@ -105,7 +105,7 @@ object CommentsAPI { } suspend fun vote(commentId: Int, voteType: Int): Boolean { - val url = "$address/comments/vote/$commentId/$voteType" + val url = "$ADDRESS/comments/vote/$commentId/$voteType" val request = requestBuilder() val json = try { request.post(url) @@ -121,7 +121,7 @@ object CommentsAPI { } suspend fun comment(mediaId: Int, parentCommentId: Int?, content: String, tag: Int?): Comment? { - val url = "$address/comments" + val url = "$ADDRESS/comments" val body = FormBody.Builder() .add("user_id", userId ?: return null) .add("media_id", mediaId.toString()) @@ -169,7 +169,7 @@ object CommentsAPI { } suspend fun deleteComment(commentId: Int): Boolean { - val url = "$address/comments/$commentId" + val url = "$ADDRESS/comments/$commentId" val request = requestBuilder() val json = try { request.delete(url) @@ -185,7 +185,7 @@ object CommentsAPI { } suspend fun editComment(commentId: Int, content: String): Boolean { - val url = "$address/comments/$commentId" + val url = "$ADDRESS/comments/$commentId" val body = FormBody.Builder() .add("content", content) .build() @@ -204,7 +204,7 @@ object CommentsAPI { } suspend fun banUser(userId: String): Boolean { - val url = "$address/ban/$userId" + val url = "$ADDRESS/ban/$userId" val request = requestBuilder() val json = try { request.post(url) @@ -225,7 +225,7 @@ object CommentsAPI { mediaTitle: String, reportedId: String ): Boolean { - val url = "$address/report/$commentId" + val url = "$ADDRESS/report/$commentId" val body = FormBody.Builder() .add("username", username) .add("mediaName", mediaTitle) @@ -247,7 +247,7 @@ object CommentsAPI { } suspend fun getNotifications(client: OkHttpClient): NotificationResponse? { - val url = "$address/notification/reply" + val url = "$ADDRESS/notification/reply" val request = requestBuilder(client) val json = try { request.get(url) @@ -268,7 +268,7 @@ object CommentsAPI { } private suspend fun getUserDetails(client: OkHttpClient? = null): User? { - val url = "$address/user" + val url = "$ADDRESS/user" val request = if (client != null) requestBuilder(client) else requestBuilder() val json = try { request.get(url) @@ -310,7 +310,7 @@ object CommentsAPI { } } - val url = "$address/authenticate" + val url = "$ADDRESS/authenticate" val token = PrefManager.getVal(PrefName.AnilistToken, null as String?) ?: return repeat(MAX_RETRIES) { try { @@ -348,6 +348,17 @@ object CommentsAPI { snackString("Failed to login after multiple attempts") } + fun logout() { + PrefManager.removeVal(PrefName.CommentAuthResponse) + PrefManager.removeVal(PrefName.CommentTokenExpiry) + authToken = null + userId = null + isBanned = false + isAdmin = false + isMod = false + totalVotes = 0 + } + private suspend fun authRequest( token: String, url: String, From ca482ea9d4ac7cd5b3436aae1d29e826e6604913 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Fri, 29 Mar 2024 17:53:50 -0500 Subject: [PATCH 7/8] fix: navbar breaking on return to comments fragment --- .../main/java/ani/dantotsu/media/comments/CommentsFragment.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt index 7e8143a4..ff362563 100644 --- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt @@ -370,7 +370,6 @@ class CommentsFragment : Fragment() { override fun onResume() { super.onResume() tag = null - binding.commentsList.setBaseline(activity.navBar, activity.binding.commentInputLayout) section.groups.forEach { if (it is CommentItem && it.containsGif()) { it.notifyChanged() From e34a20bce6df7a19f4280cbd93cc2a58acd56b15 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Fri, 29 Mar 2024 18:04:19 -0500 Subject: [PATCH 8/8] fix: comment scrolling freezing --- .../main/java/ani/dantotsu/media/comments/CommentsFragment.kt | 2 +- app/src/main/res/layout/fragment_comments.xml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt index ff362563..fec27104 100644 --- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt @@ -75,7 +75,7 @@ class CommentsFragment : Fragment() { super.onViewCreated(view, savedInstanceState) activity = requireActivity() as MediaDetailsActivity - binding.commentsList.setBaseline(activity.navBar, activity.binding.commentInputLayout) + binding.commentsListContainer.setBaseline(activity.navBar, activity.binding.commentInputLayout) //get the media id from the intent val mediaId = arguments?.getInt("mediaId") ?: -1 diff --git a/app/src/main/res/layout/fragment_comments.xml b/app/src/main/res/layout/fragment_comments.xml index 59f93c50..ee2002fc 100644 --- a/app/src/main/res/layout/fragment_comments.xml +++ b/app/src/main/res/layout/fragment_comments.xml @@ -59,6 +59,7 @@ tools:visibility="gone"/>