diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2514f4f7..46c6c3cb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -217,6 +217,9 @@ android:label="@string/manga" android:launchMode="singleTask" /> + threeDaysAgo }.toList() .sortedByDescending { it.createdAt } - .filter { it.createdAt * 1000L > threeDaysAgo } val anilistActivities = mutableListOf() val groupedActivities = activities.groupBy { it.userId } @@ -1584,7 +1585,7 @@ Page(page:$page,perPage:50) { ) } private fun status(page: Int = 1): String { - return """Page(page:$page,perPage:50){activities(isFollowing: true,sort:ID_DESC){__typename ... on TextActivity{id userId type replyCount text(asHtml:true)siteUrl isLocked isSubscribed likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}... on ListActivity{id userId type replyCount status progress siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}media{id title{english romaji native userPreferred}bannerImage coverImage{extraLarge medium large}}likes{id name bannerImage avatar{medium large}}}... on MessageActivity{id type createdAt}}}""" + return """Page(page:$page,perPage:50){activities(isFollowing: true,sort:ID_DESC){__typename ... on TextActivity{id userId type replyCount text(asHtml:true)siteUrl isLocked isSubscribed likeCount isLiked createdAt user{id name bannerImage avatar{medium large}}likes{id name bannerImage avatar{medium large}}}... on ListActivity{id userId type replyCount status progress siteUrl isLocked isSubscribed likeCount isLiked isPinned createdAt user{id name bannerImage avatar{medium large}}media{id isAdult title{english romaji native userPreferred}bannerImage coverImage{extraLarge medium large}}likes{id name bannerImage avatar{medium large}}}... on MessageActivity{id type createdAt}}}""" } suspend fun getUpcomingAnime(id: String): List { diff --git a/app/src/main/java/ani/dantotsu/home/HomeFragment.kt b/app/src/main/java/ani/dantotsu/home/HomeFragment.kt index 499c7cdb..f21f11b9 100644 --- a/app/src/main/java/ani/dantotsu/home/HomeFragment.kt +++ b/app/src/main/java/ani/dantotsu/home/HomeFragment.kt @@ -34,6 +34,7 @@ import ani.dantotsu.home.status.UserStatusAdapter import ani.dantotsu.loadImage import ani.dantotsu.media.Media import ani.dantotsu.media.MediaAdaptor +import ani.dantotsu.media.MediaListViewActivity import ani.dantotsu.media.user.ListActivity import ani.dantotsu.navBarHeight import ani.dantotsu.profile.ProfileActivity @@ -209,13 +210,15 @@ class HomeFragment : Fragment() { recyclerView: RecyclerView, progress: View, empty: View, - title: View + title: View, + more: View ) { container.visibility = View.VISIBLE progress.visibility = View.VISIBLE recyclerView.visibility = View.GONE empty.visibility = View.GONE title.visibility = View.INVISIBLE + more.visibility = View.INVISIBLE mode.observe(viewLifecycleOwner) { recyclerView.visibility = View.GONE @@ -228,6 +231,14 @@ class HomeFragment : Fragment() { LinearLayoutManager.HORIZONTAL, false ) + more.setOnClickListener { _ -> + MediaListViewActivity.mediaList = it + ContextCompat.startActivity( + requireActivity(), Intent(requireActivity(), MediaListViewActivity::class.java) + .putExtra("title", getString(R.string.continue_watching)), + null + ) + } recyclerView.visibility = View.VISIBLE recyclerView.layoutAnimation = LayoutAnimationController(setSlideIn(), 0.25f) @@ -235,6 +246,7 @@ class HomeFragment : Fragment() { } else { empty.visibility = View.VISIBLE } + more?.visibility = View.VISIBLE title.visibility = View.VISIBLE title.startAnimation(setSlideUp()) progress.visibility = View.GONE @@ -250,7 +262,8 @@ class HomeFragment : Fragment() { binding.homeWatchingRecyclerView, binding.homeWatchingProgressBar, binding.homeWatchingEmpty, - binding.homeContinueWatch + binding.homeContinueWatch, + binding.homeContinueWatchMore ) binding.homeWatchingBrowseButton.setOnClickListener { bottomBar.selectTabAt(0) @@ -262,7 +275,9 @@ class HomeFragment : Fragment() { binding.homeFavAnimeRecyclerView, binding.homeFavAnimeProgressBar, binding.homeFavAnimeEmpty, - binding.homeFavAnime + binding.homeFavAnime, + binding.homeFavAnimeMore + ) initRecyclerView( @@ -271,7 +286,8 @@ class HomeFragment : Fragment() { binding.homePlannedAnimeRecyclerView, binding.homePlannedAnimeProgressBar, binding.homePlannedAnimeEmpty, - binding.homePlannedAnime + binding.homePlannedAnime, + binding.homePlannedAnimeMore ) binding.homePlannedAnimeBrowseButton.setOnClickListener { bottomBar.selectTabAt(0) @@ -283,7 +299,8 @@ class HomeFragment : Fragment() { binding.homeReadingRecyclerView, binding.homeReadingProgressBar, binding.homeReadingEmpty, - binding.homeContinueRead + binding.homeContinueRead, + binding.homeContinueReadMore ) binding.homeReadingBrowseButton.setOnClickListener { bottomBar.selectTabAt(2) @@ -295,7 +312,8 @@ class HomeFragment : Fragment() { binding.homeFavMangaRecyclerView, binding.homeFavMangaProgressBar, binding.homeFavMangaEmpty, - binding.homeFavManga + binding.homeFavManga, + binding.homeFavMangaMore ) initRecyclerView( @@ -304,7 +322,8 @@ class HomeFragment : Fragment() { binding.homePlannedMangaRecyclerView, binding.homePlannedMangaProgressBar, binding.homePlannedMangaEmpty, - binding.homePlannedManga + binding.homePlannedManga, + binding.homePlannedMangaMore ) binding.homePlannedMangaBrowseButton.setOnClickListener { bottomBar.selectTabAt(2) @@ -316,7 +335,8 @@ class HomeFragment : Fragment() { binding.homeRecommendedRecyclerView, binding.homeRecommendedProgressBar, binding.homeRecommendedEmpty, - binding.homeRecommended + binding.homeRecommended, + binding.homeRecommendedMore ) binding.homeUserStatusContainer.visibility = View.VISIBLE binding.homeUserStatusProgressBar.visibility = View.VISIBLE diff --git a/app/src/main/java/ani/dantotsu/home/status/Stories.kt b/app/src/main/java/ani/dantotsu/home/status/Stories.kt index cfdd7e1d..d9e0aec1 100644 --- a/app/src/main/java/ani/dantotsu/home/status/Stories.kt +++ b/app/src/main/java/ani/dantotsu/home/status/Stories.kt @@ -396,7 +396,7 @@ constructor( } binding.infoText.text = text val bannerAnimations: Boolean = PrefManager.getVal(PrefName.BannerAnimations) - blurImage(if (bannerAnimations)binding.contentImageViewKen else binding.contentImageView, story.media?.bannerImage ?: story.media?.coverImage?.extraLarge) + blurImage(if (bannerAnimations) binding.contentImageViewKen else binding.contentImageView, story.media?.bannerImage ?: story.media?.coverImage?.extraLarge) binding.coverImage.loadImage(story.media?.coverImage?.extraLarge) binding.coverImage.setOnClickListener{ ContextCompat.startActivity(context, Intent(context, MediaDetailsActivity::class.java) @@ -406,7 +406,7 @@ constructor( binding.coverImage, ViewCompat.getTransitionName(binding.coverImage)!! ).toBundle() - ) + ) } diff --git a/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt b/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt index 9315863a..c9ecf6f9 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaInfoFragment.kt @@ -573,23 +573,23 @@ class MediaInfoFragment : Fragment() { parent.addView(root) } } - val users: ArrayList = media.users ?: arrayListOf() - if (Anilist.token != null && media.userStatus != null) { - users.add(0, - User( - id = Anilist.userid!!, - name = getString(R.string.your_progress), - pfp = Anilist.avatar, - banner = "", - status = media.userStatus, - score = media.userScore.toFloat(), - progress = media.userProgress, - totalEpisodes = media.anime?.totalEpisodes ?: media.manga?.totalChapters, - nextAiringEpisode = media.anime?.nextAiringEpisode - ) - ) - } if (!media.users.isNullOrEmpty() && !offline) { + val users: ArrayList = media.users ?: arrayListOf() + if (Anilist.token != null && media.userStatus != null) { + users.add(0, + User( + id = Anilist.userid!!, + name = getString(R.string.your_progress), + pfp = Anilist.avatar, + banner = "", + status = media.userStatus, + score = media.userScore.toFloat(), + progress = media.userProgress, + totalEpisodes = media.anime?.totalEpisodes ?: media.manga?.totalChapters, + nextAiringEpisode = media.anime?.nextAiringEpisode + ) + ) + } ItemTitleRecyclerBinding.inflate( LayoutInflater.from(context), parent, diff --git a/app/src/main/java/ani/dantotsu/media/MediaListViewActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaListViewActivity.kt new file mode 100644 index 00000000..956582ae --- /dev/null +++ b/app/src/main/java/ani/dantotsu/media/MediaListViewActivity.kt @@ -0,0 +1,42 @@ +package ani.dantotsu.media + +import android.os.Bundle +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.recyclerview.widget.GridLayoutManager +import ani.dantotsu.databinding.ActivityMediaListViewBinding +import ani.dantotsu.getThemeColor +import ani.dantotsu.initActivity +import ani.dantotsu.themes.ThemeManager +import java.util.ArrayList + +class MediaListViewActivity: AppCompatActivity() { + private lateinit var binding: ActivityMediaListViewBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityMediaListViewBinding.inflate(layoutInflater) + ThemeManager(this).applyTheme() + initActivity(this) + setContentView(binding.root) + + val primaryColor = getThemeColor(com.google.android.material.R.attr.colorSurface) + val primaryTextColor = getThemeColor(com.google.android.material.R.attr.colorPrimary) + val secondaryTextColor = getThemeColor(com.google.android.material.R.attr.colorOutline) + + window.statusBarColor = primaryColor + window.navigationBarColor = primaryColor + binding.listAppBar.setBackgroundColor(primaryColor) + binding.listTitle.setTextColor(primaryTextColor) + + val screenWidth = resources.displayMetrics.run { widthPixels / density } + binding.listTitle.text = intent.getStringExtra("title") + binding.mediaRecyclerView.adapter = MediaAdaptor(0, mediaList, this) + binding.mediaRecyclerView.layoutManager = GridLayoutManager( + this, + (screenWidth / 120f).toInt() + ) + } + companion object{ + var mediaList: ArrayList = arrayListOf() + } +} diff --git a/app/src/main/res/layout/activity_media_list_view.xml b/app/src/main/res/layout/activity_media_list_view.xml new file mode 100644 index 00000000..1b007bff --- /dev/null +++ b/app/src/main/res/layout/activity_media_list_view.xml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index a53ac379..c60981ed 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -314,8 +314,8 @@ android:id="@+id/homeUserStatusContainer" android:layout_width="match_parent" android:layout_height="wrap_content" - android:visibility="gone" - android:minHeight="100dp"> + android:minHeight="100dp" + android:visibility="gone"> - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + - - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + + - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + + - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + - - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + + - + android:orientation="horizontal" + tools:ignore="UseCompoundDrawables"> + + + + + +