From 5c2ae57d77ebd2ca9b31b8a46b7d18e397ec6adf Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Sun, 17 Mar 2024 23:05:05 -0500 Subject: [PATCH] feat: open user links in dantotsu --- app/src/main/AndroidManifest.xml | 11 ++++++ .../main/java/ani/dantotsu/MainActivity.kt | 17 +++++++++ .../connections/anilist/AnilistQueries.kt | 12 +++++++ .../dantotsu/connections/anilist/UrlMedia.kt | 35 +++++++++++-------- .../ani/dantotsu/profile/ProfileActivity.kt | 7 ++-- app/src/main/res/values/strings.xml | 1 + 6 files changed, 67 insertions(+), 16 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 82dffe73..2b9f5cad 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -261,6 +261,17 @@ + + + + + + + + + + + ( + """{User(name:"$username"){id}}""", + force = true + )?.data?.user?.id + } + suspend fun getUserStatistics(id: Int, sort: String = "ID"): Query.StatisticsResponse? { return executeQuery( """{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}}}""", diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/UrlMedia.kt b/app/src/main/java/ani/dantotsu/connections/anilist/UrlMedia.kt index 98d63d27..7df91d75 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/UrlMedia.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/UrlMedia.kt @@ -11,20 +11,27 @@ import ani.dantotsu.themes.ThemeManager class UrlMedia : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - ThemeManager(this).applyTheme() - var id: Int? = intent?.extras?.getInt("media", 0) ?: 0 - var isMAL = false - var continueMedia = true - if (id == 0) { - continueMedia = false - val data: Uri? = intent?.data - isMAL = data?.host != "anilist.co" - id = data?.pathSegments?.getOrNull(1)?.toIntOrNull() - } else loadMedia = id - startMainActivity( - this, - bundleOf("mediaId" to id, "mal" to isMAL, "continue" to continueMedia) - ) + val data: Uri? = intent?.data + val type = data?.pathSegments?.getOrNull(0) + if (type == "anime" || type == "manga") { + var id: Int? = intent?.extras?.getInt("media", 0) ?: 0 + var isMAL = false + var continueMedia = true + if (id == 0) { + continueMedia = false + isMAL = data.host != "anilist.co" + id = data.pathSegments?.getOrNull(1)?.toIntOrNull() + } else loadMedia = id + startMainActivity( + this, + bundleOf("mediaId" to id, "mal" to isMAL, "continue" to continueMedia) + ) + } else if (type == "user") { + val username = data.pathSegments?.getOrNull(1) + startMainActivity(this, bundleOf("username" to username)) + } else { + startMainActivity(this) + } } } \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt index e56e9c0d..fa64dc13 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt @@ -67,8 +67,11 @@ class ProfileActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListene binding.profileViewPager.isUserInputEnabled = false lifecycleScope.launch(Dispatchers.IO) { - val userid = intent.getIntExtra("userId", 0) - val respond = Anilist.query.getUserProfile(userid) + val userid = intent.getIntExtra("userId", -1) + val username = intent.getStringExtra("username") ?: "" + val respond = + if (userid != -1) Anilist.query.getUserProfile(userid) else + Anilist.query.getUserProfile(username) val user = respond?.data?.user if (user == null) { toast("User not found") diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 504f52b4..b5fe8d03 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -486,6 +486,7 @@ Read on Dantotsu Watch on Dantotsu + View Profile in Dantotsu "Continue : Episode " "Continue : " "Episode "