diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f3c65e3c..7a22ab3d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -110,6 +110,10 @@ android:name=".profile.ProfileActivity" android:windowSoftInputMode="adjustResize|stateHidden" android:parentActivityName=".MainActivity" /> + 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 0f115832..b76c9530 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistQueries.kt @@ -1254,6 +1254,7 @@ Page(page:$page,perPage:50) { show = true ) } + suspend fun userFavMedia(anime: Boolean, id: Int): ArrayList { var hasNextPage = true var page = 0 @@ -1280,6 +1281,9 @@ Page(page:$page,perPage:50) { private fun userFavMediaQuery(anime: Boolean, page: Int, id: Int): String { return """User(id:${id}){id favourites{${if (anime) "anime" else "manga"}(page:$page){pageInfo{hasNextPage}edges{favouriteOrder node{id idMal isAdult mediaListEntry{ progress private score(format:POINT_100) status } chapters isFavourite format episodes nextAiringEpisode{episode}meanScore isFavourite format startDate{year month day} title{english romaji userPreferred}type status(version:2)bannerImage coverImage{large}}}}}}""" } + suspend fun userFollowing(id: Int): Query.Following?{ + return executeQuery("""{Following:Page {following(userId:${id},sort:[USERNAME]){id name avatar{large medium}bannerImage}}}""", force = true) + } private suspend fun userBannerImage(type: String,id: Int?): String? { val response = executeQuery("""{ MediaListCollection(userId: ${id}, type: $type, chunk:1,perChunk:25, sort: [SCORE_DESC,UPDATED_TIME_DESC]) { lists { entries{ media { id bannerImage } } } } } """) 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 3f912df0..6429bdce 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 @@ -199,7 +199,17 @@ class Query { val user: UserProfile? ) } - + @Serializable + data class Following( + @SerialName("data") + val data: Data + ) { + @Serializable + data class Data( + @SerialName("following") + val following: ani.dantotsu.connections.anilist.api.User? + ) + } @Serializable data class UserProfile( @SerialName("id") diff --git a/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt b/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt new file mode 100644 index 00000000..d61ac864 --- /dev/null +++ b/app/src/main/java/ani/dantotsu/profile/FollowActivity.kt @@ -0,0 +1,32 @@ +package ani.dantotsu.profile + +import android.os.Bundle +import androidx.appcompat.app.AppCompatActivity +import androidx.lifecycle.lifecycleScope +import ani.dantotsu.connections.anilist.Anilist +import ani.dantotsu.databinding.ActivityFollowBinding +import ani.dantotsu.initActivity +import ani.dantotsu.themes.ThemeManager +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + + +class FollowActivity : AppCompatActivity(){ + private lateinit var binding: ActivityFollowBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + ThemeManager(this).applyTheme() + initActivity(this) + binding = ActivityFollowBinding.inflate(layoutInflater) + setContentView(binding.root) + binding.listTitle.text = intent.getStringExtra("title") + lifecycleScope.launch(Dispatchers.IO) { + val respond = Anilist.query.userFollowing(intent.getIntExtra("userId", 0)) + val user = respond?.data?.following + withContext(Dispatchers.Main) { + user?.id + } + } + } +} \ 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 7ab6ee23..71b455df 100644 --- a/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/ProfileActivity.kt @@ -1,10 +1,12 @@ package ani.dantotsu.profile import android.annotation.SuppressLint +import android.content.Intent import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.core.view.updateLayoutParams import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager @@ -98,14 +100,15 @@ class ProfileActivity : AppCompatActivity() { } binding.profileProgressBar.visibility = View.GONE binding.profileTopContainer.visibility = View.VISIBLE - binding.profileBannerImage.loadImage(user.bannerImage) - binding.profileBannerImage.setOnLongClickListener { - ImageViewDialog.newInstance( - this@ProfileActivity, - "${user.name}'s [Banner]", - user.bannerImage + + binding.temp.setOnClickListener { + ContextCompat.startActivity( + this@ProfileActivity, Intent(this@ProfileActivity, FollowActivity::class.java) + .putExtra("title", "Following") + .putExtra("userId", user.id), null ) } + binding.profileUserAvatar.loadImage(user.avatar?.medium) binding.profileUserAvatar.setOnLongClickListener { ImageViewDialog.newInstance( @@ -114,6 +117,7 @@ class ProfileActivity : AppCompatActivity() { user.avatar?.medium ) } + binding.profileUserName.text = "${user.name} $userLevel" if (!(PrefManager.getVal(PrefName.BannerAnimations) as Boolean)) binding.profileBannerImage.pause() binding.profileBannerImage.loadImage(user.bannerImage) @@ -125,14 +129,7 @@ class ProfileActivity : AppCompatActivity() { user.bannerImage ) } - binding.profileUserAvatar.loadImage(user.avatar?.medium) - binding.profileUserAvatar.setOnLongClickListener { - ImageViewDialog.newInstance( - this@ProfileActivity, - user.name + " [Avatar]", - user.avatar?.medium - ) - } + } } diff --git a/app/src/main/res/layout/activity_follow.xml b/app/src/main/res/layout/activity_follow.xml new file mode 100644 index 00000000..ec916119 --- /dev/null +++ b/app/src/main/res/layout/activity_follow.xml @@ -0,0 +1,38 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_profile.xml b/app/src/main/res/layout/activity_profile.xml index 70565a9d..37543e8b 100644 --- a/app/src/main/res/layout/activity_profile.xml +++ b/app/src/main/res/layout/activity_profile.xml @@ -102,7 +102,21 @@ app:cornerRadius="8dp" app:strokeColor="?attr/colorPrimaryContainer" tools:ignore="SpeakableTextPresentCheck" /> - +