From d355cc561e392f0acbdb17d7f0e70c7134173ad6 Mon Sep 17 00:00:00 2001 From: rebelonion <87634197+rebelonion@users.noreply.github.com> Date: Sun, 12 May 2024 08:46:51 -0500 Subject: [PATCH] feat: replying to activities --- .../connections/anilist/AnilistMutations.kt | 9 ++++++++ .../dantotsu/profile/activity/ActivityItem.kt | 17 ++++++++++++++ .../dantotsu/util/MarkdownCreatorActivity.kt | 14 +++++++++++- app/src/main/res/layout/item_activity.xml | 22 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 63 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistMutations.kt b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistMutations.kt index fda763ef..96d50dcf 100644 --- a/app/src/main/java/ani/dantotsu/connections/anilist/AnilistMutations.kt +++ b/app/src/main/java/ani/dantotsu/connections/anilist/AnilistMutations.kt @@ -98,4 +98,13 @@ class AnilistMutations { return errors?.toString() ?: (currContext()?.getString(ani.dantotsu.R.string.success) ?: "Success") } + + suspend fun postReply(activityId: Int, text: String): String { + val encodedText = Gson().toJson(text) + val query = "mutation{SaveActivityReply(activityId:$activityId,text:$encodedText){id}}" + val result = executeQuery(query) + val errors = result?.get("errors") + return errors?.toString() + ?: (currContext()?.getString(ani.dantotsu.R.string.success) ?: "Success") + } } \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt index 0dc80c03..da8f770e 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/ActivityItem.kt @@ -1,5 +1,6 @@ package ani.dantotsu.profile.activity +import android.content.Intent import android.view.View import androidx.core.content.ContextCompat import androidx.core.view.isVisible @@ -17,6 +18,7 @@ import ani.dantotsu.profile.UsersDialogFragment import ani.dantotsu.setAnimation import ani.dantotsu.snackString import ani.dantotsu.util.AniMarkdown.Companion.getBasicAniHTML +import ani.dantotsu.util.MarkdownCreatorActivity import com.xwray.groupie.GroupieAdapter import com.xwray.groupie.viewbinding.BindableItem import kotlinx.coroutines.CoroutineScope @@ -67,6 +69,21 @@ class ActivityItem( repliesAdapter.addAll(replyItems) binding.activityReplies.visibility = View.VISIBLE binding.commentTotalReplies.setText(R.string.hide_replies) + if (activity.isLocked != true) { + binding.commentReply.setOnClickListener { + val context = binding.root.context + ContextCompat.startActivity( + context, + Intent(context, MarkdownCreatorActivity::class.java) + .putExtra("type", "replyActivity") + .putExtra("parentId", activity.id), + null + ) + } + } else { + binding.commentReply.visibility = View.GONE + binding.dot.visibility = View.GONE + } } else -> { diff --git a/app/src/main/java/ani/dantotsu/util/MarkdownCreatorActivity.kt b/app/src/main/java/ani/dantotsu/util/MarkdownCreatorActivity.kt index fd4094b9..2a074d06 100644 --- a/app/src/main/java/ani/dantotsu/util/MarkdownCreatorActivity.kt +++ b/app/src/main/java/ani/dantotsu/util/MarkdownCreatorActivity.kt @@ -18,12 +18,12 @@ import io.noties.markwon.editor.MarkwonEditor import io.noties.markwon.editor.MarkwonEditorTextWatcher import kotlinx.coroutines.DelicateCoroutinesApi import tachiyomi.core.util.lang.launchIO -import java.util.Locale class MarkdownCreatorActivity : AppCompatActivity() { private lateinit var binding: ActivityMarkdownCreatorBinding private lateinit var type: String private var text: String = "" + private var parentId: Int = 0 @OptIn(DelicateCoroutinesApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -40,11 +40,22 @@ class MarkdownCreatorActivity : AppCompatActivity() { if (intent.hasExtra("type")) { type = intent.getStringExtra("type")!! } else { + toast("Error: No type") finish() + return } binding.markdownCreatorTitle.text = when (type) { "activity" -> getString(R.string.create_new_activity) "review" -> getString(R.string.create_new_review) + "replyActivity" -> { + parentId = intent.getIntExtra("parentId", -1) + if (parentId == -1) { + toast("Error: No parent ID") + finish() + return + } + getString(R.string.create_new_reply) + } else -> "" } binding.editText.setText(text) @@ -73,6 +84,7 @@ class MarkdownCreatorActivity : AppCompatActivity() { val success = when (type) { "activity" -> Anilist.mutation.postActivity(text) //"review" -> Anilist.mutation.postReview(text) + "replyActivity" -> Anilist.mutation.postReply(parentId, text) else -> "Error: Unknown type" } toast(success) diff --git a/app/src/main/res/layout/item_activity.xml b/app/src/main/res/layout/item_activity.xml index 580e2471..b324c3ba 100644 --- a/app/src/main/res/layout/item_activity.xml +++ b/app/src/main/res/layout/item_activity.xml @@ -229,6 +229,28 @@ android:text="View replies" android:textSize="12sp" tools:ignore="HardcodedText" /> + + + + (%1$s out of %2$s liked this review) Create New Activity Create New Review + Create New Reply Create Preview Text cannot be empty + Reply