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 "