From 17d5d55a43de95797404652657278d610831b1db Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sun, 20 Mar 2022 07:26:13 -0400 Subject: [PATCH 1/9] auto link web set for task notes --- Habitica/res/layout/task_main_content.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Habitica/res/layout/task_main_content.xml b/Habitica/res/layout/task_main_content.xml index 95c8a1c53..617746161 100644 --- a/Habitica/res/layout/task_main_content.xml +++ b/Habitica/res/layout/task_main_content.xml @@ -25,6 +25,7 @@ Date: Sun, 20 Mar 2022 07:37:07 -0400 Subject: [PATCH 2/9] Added autolink web to chat item --- Habitica/res/layout/chat_item.xml | 1 + Habitica/res/layout/task_main_content.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Habitica/res/layout/chat_item.xml b/Habitica/res/layout/chat_item.xml index 92540ded8..f1b7165ba 100644 --- a/Habitica/res/layout/chat_item.xml +++ b/Habitica/res/layout/chat_item.xml @@ -92,6 +92,7 @@ android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:lineSpacingMultiplier="1.0" + android:autoLink="web" tools:text="This is the chat message" android:textColor="@color/text_primary" /> From c1b5896fd075872f977901e171899b8e6ebd3559 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sun, 20 Mar 2022 07:42:27 -0400 Subject: [PATCH 3/9] autolink web set for guild summary and description --- Habitica/res/layout/fragment_guild_detail.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Habitica/res/layout/fragment_guild_detail.xml b/Habitica/res/layout/fragment_guild_detail.xml index 76805661f..afae38d64 100644 --- a/Habitica/res/layout/fragment_guild_detail.xml +++ b/Habitica/res/layout/fragment_guild_detail.xml @@ -181,6 +181,7 @@ @@ -194,6 +195,7 @@ android:id="@+id/guild_description" android:layout_width="match_parent" android:layout_height="wrap_content" + android:autoLink="web" tools:text="@string/inn_description" android:layout_marginTop="@dimen/spacing_large" /> From 58576a66aaace1e1df97361b877daf95924dd336 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sun, 20 Mar 2022 07:50:04 -0400 Subject: [PATCH 4/9] autolink web set for challenge description --- Habitica/res/layout/challenge_item.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Habitica/res/layout/challenge_item.xml b/Habitica/res/layout/challenge_item.xml index 681b68884..b34ce2f19 100644 --- a/Habitica/res/layout/challenge_item.xml +++ b/Habitica/res/layout/challenge_item.xml @@ -61,6 +61,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/text_ternary" + android:autoLink="web" android:textSize="12sp" tools:text="Description" android:layout_marginTop="@dimen/spacing_small" From 898b50aee0097b26174f06d21d6d83767a1021a1 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sun, 20 Mar 2022 07:55:34 -0400 Subject: [PATCH 5/9] Challenge description & item autolink web set --- Habitica/res/layout/fragment_challenge_detail.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Habitica/res/layout/fragment_challenge_detail.xml b/Habitica/res/layout/fragment_challenge_detail.xml index 15c01dd04..ed6ccff7c 100644 --- a/Habitica/res/layout/fragment_challenge_detail.xml +++ b/Habitica/res/layout/fragment_challenge_detail.xml @@ -179,6 +179,7 @@ android:layout_height="wrap_content" android:layout_marginTop="11dp" android:lineSpacingExtra="4sp" + android:autoLink="web" tools:text="There’s always more to learn! Maybe it’s a specialized topic you’re interested in, or maybe it’s the experiences of a notable contributor. Read about it and you may win 15 gems!" /> From dfac7fe7e58961e6002f801b7e994a33095c0beb Mon Sep 17 00:00:00 2001 From: Hafiz Date: Sun, 20 Mar 2022 07:59:41 -0400 Subject: [PATCH 6/9] autolink web set for user profile blurb --- Habitica/res/layout/activity_full_profile.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/Habitica/res/layout/activity_full_profile.xml b/Habitica/res/layout/activity_full_profile.xml index 24ba8d7fc..3b5af296e 100644 --- a/Habitica/res/layout/activity_full_profile.xml +++ b/Habitica/res/layout/activity_full_profile.xml @@ -81,6 +81,7 @@ From 47288dba32a6e3af327a528a35029e4fb3ce8054 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Wed, 23 Mar 2022 07:22:59 -0400 Subject: [PATCH 7/9] Markwon Linkify dependency added, plugin added to setup --- Habitica/build.gradle | 2 ++ Habitica/res/layout/fragment_guild_detail.xml | 2 -- .../habitrpg/android/habitica/ui/helpers/MarkdownParser.kt | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 9b19c603b..d7f5e59ce 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -62,6 +62,8 @@ dependencies { implementation "io.noties.markwon:ext-strikethrough:4.6.2" implementation "io.noties.markwon:image:4.6.2" implementation "io.noties.markwon:recycler:4.6.2" + implementation "io.noties.markwon:linkify:4.6.2" + // IAP Handling / Verification implementation "com.android.billingclient:billing-ktx:4.0.0" diff --git a/Habitica/res/layout/fragment_guild_detail.xml b/Habitica/res/layout/fragment_guild_detail.xml index afae38d64..76805661f 100644 --- a/Habitica/res/layout/fragment_guild_detail.xml +++ b/Habitica/res/layout/fragment_guild_detail.xml @@ -181,7 +181,6 @@ @@ -195,7 +194,6 @@ android:id="@+id/guild_description" android:layout_width="match_parent" android:layout_height="wrap_content" - android:autoLink="web" tools:text="@string/inn_description" android:layout_marginTop="@dimen/spacing_large" /> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt index b1e93955d..bfe508d9b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt @@ -7,6 +7,7 @@ import android.net.Uri import android.text.SpannableString import android.text.Spanned import android.text.method.LinkMovementMethod +import android.text.util.Linkify import android.widget.TextView import com.habitrpg.android.habitica.BuildConfig import com.habitrpg.android.habitica.extensions.handleUrlClicks @@ -21,6 +22,7 @@ import io.noties.markwon.image.ImageSizeResolverDef import io.noties.markwon.image.ImagesPlugin import io.noties.markwon.image.file.FileSchemeHandler import io.noties.markwon.image.network.OkHttpNetworkSchemeHandler +import io.noties.markwon.linkify.LinkifyPlugin import io.noties.markwon.movement.MovementMethodPlugin import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers import io.reactivex.rxjava3.core.Single @@ -42,6 +44,8 @@ object MarkdownParser { ) .usePlugin(this.createImageSizeResolverScaleDpiPlugin(context)) .usePlugin(MovementMethodPlugin.create(LinkMovementMethod.getInstance())) + // will autolink all supported types + .usePlugin(LinkifyPlugin.create()) .build() } From a18ee4e7ff2a0245b6e2422d14b12b74ed28ca20 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Wed, 23 Mar 2022 07:28:32 -0400 Subject: [PATCH 8/9] autolink set to just URLs --- .../com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt index bfe508d9b..491e90b87 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/MarkdownParser.kt @@ -44,8 +44,7 @@ object MarkdownParser { ) .usePlugin(this.createImageSizeResolverScaleDpiPlugin(context)) .usePlugin(MovementMethodPlugin.create(LinkMovementMethod.getInstance())) - // will autolink all supported types - .usePlugin(LinkifyPlugin.create()) + .usePlugin(LinkifyPlugin.create(Linkify.WEB_URLS)) .build() } From 589320b33a4a42d54de6638fa2b408f83a9b48c1 Mon Sep 17 00:00:00 2001 From: Hafiz Date: Mon, 28 Mar 2022 06:05:52 -0400 Subject: [PATCH 9/9] Removed auto link web, set texts supporting URL movement method --- Habitica/res/layout/activity_full_profile.xml | 1 - Habitica/res/layout/challenge_item.xml | 1 - Habitica/res/layout/chat_item.xml | 1 - Habitica/res/layout/fragment_challenge_detail.xml | 1 - Habitica/res/layout/task_main_content.xml | 1 - .../android/habitica/ui/activities/FullProfileActivity.kt | 2 ++ .../habitica/ui/adapter/social/ChallengesListViewAdapter.kt | 2 ++ .../ui/fragments/social/guilds/GuildDetailFragment.kt | 1 + .../habitica/ui/viewHolders/ChatRecyclerViewHolder.kt | 1 + .../habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt | 6 +++--- 10 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Habitica/res/layout/activity_full_profile.xml b/Habitica/res/layout/activity_full_profile.xml index 3b5af296e..24ba8d7fc 100644 --- a/Habitica/res/layout/activity_full_profile.xml +++ b/Habitica/res/layout/activity_full_profile.xml @@ -81,7 +81,6 @@ diff --git a/Habitica/res/layout/challenge_item.xml b/Habitica/res/layout/challenge_item.xml index b34ce2f19..681b68884 100644 --- a/Habitica/res/layout/challenge_item.xml +++ b/Habitica/res/layout/challenge_item.xml @@ -61,7 +61,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textColor="@color/text_ternary" - android:autoLink="web" android:textSize="12sp" tools:text="Description" android:layout_marginTop="@dimen/spacing_small" diff --git a/Habitica/res/layout/chat_item.xml b/Habitica/res/layout/chat_item.xml index f1b7165ba..92540ded8 100644 --- a/Habitica/res/layout/chat_item.xml +++ b/Habitica/res/layout/chat_item.xml @@ -92,7 +92,6 @@ android:layout_marginTop="8dp" android:layout_marginBottom="8dp" android:lineSpacingMultiplier="1.0" - android:autoLink="web" tools:text="This is the chat message" android:textColor="@color/text_primary" /> diff --git a/Habitica/res/layout/task_main_content.xml b/Habitica/res/layout/task_main_content.xml index 4894cd9ec..95c8a1c53 100644 --- a/Habitica/res/layout/task_main_content.xml +++ b/Habitica/res/layout/task_main_content.xml @@ -31,7 +31,6 @@ android:maxLines="3" android:ellipsize="end" android:textSize="13sp" - android:autoLink="web" tools:text="Notes" android:layout_marginTop="1dp" android:layout_marginBottom="7dp"/> diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt index 6bed0ac96..316608f86 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/FullProfileActivity.kt @@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.ui.activities import android.content.Context import android.graphics.Typeface import android.os.Bundle +import android.text.method.LinkMovementMethod import android.view.* import android.widget.* import androidx.core.content.ContextCompat @@ -213,6 +214,7 @@ class FullProfileActivity : BaseActivity() { val blurbText = profile.blurb if (blurbText != null && blurbText.isNotEmpty()) { binding.blurbTextView.setMarkdown(blurbText) + binding.blurbTextView.movementMethod = LinkMovementMethod.getInstance() } user.authentication?.timestamps?.createdAt?.let { binding.joinedView.text = dateFormatter.format(it) } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt index 9f99ed247..6b19ff829 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/ChallengesListViewAdapter.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.ui.adapter.social +import android.text.method.LinkMovementMethod import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView @@ -91,6 +92,7 @@ class ChallengesListViewAdapter(private val viewUserChallengesOnly: Boolean, pri binding.challengeName.text = EmojiParser.parseEmojis(challenge.name?.trim { it <= ' ' }) binding.challengeShorttext.text = challenge.summary + binding.challengeShorttext.movementMethod = LinkMovementMethod.getInstance() binding.officialChallengeView.visibility = if (challenge.official) View.VISIBLE else View.GONE diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt index 5659932e6..d3d52d89d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/guilds/GuildDetailFragment.kt @@ -69,6 +69,7 @@ class GuildDetailFragment : BaseFragment() { viewModel?.getIsMemberData()?.observe(viewLifecycleOwner, { updateMembership(it) }) binding?.guildDescription?.movementMethod = LinkMovementMethod.getInstance() + binding?.guildSummary?.movementMethod = LinkMovementMethod.getInstance() binding?.guildBankIcon?.setImageBitmap(HabiticaIconsHelper.imageOfGem()) binding?.leaveButton?.setOnClickListener { leaveGuild() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt index a8a815a19..001b5e195 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt @@ -177,6 +177,7 @@ class ChatRecyclerMessageViewHolder(itemView: View, private var userId: String, itemView.setPadding(16.dpToPx(context), itemView.paddingTop, itemView.paddingRight, itemView.paddingBottom) } + binding.messageText.setParsedMarkdown(chatMessage?.parsedText) if (msg.parsedText == null) { binding.messageText.text = chatMessage?.text diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt index faa4c432e..5ccfa61bf 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt @@ -2,6 +2,7 @@ package com.habitrpg.android.habitica.ui.viewHolders.tasks import android.content.Context import android.text.TextUtils +import android.text.method.LinkMovementMethod import android.view.MotionEvent import android.view.View import android.view.ViewGroup @@ -88,9 +89,8 @@ abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc: notesTextView?.setOnClickListener { onTouch(it, null) } errorIconView?.setOnClickListener { errorButtonClicked?.run() } - // Re enable when we find a way to only react when a link is tapped. - // notesTextView.movementMethod = LinkMovementMethod.getInstance() - // titleTextView.movementMethod = LinkMovementMethod.getInstance() + notesTextView?.movementMethod = LinkMovementMethod.getInstance() + titleTextView.movementMethod = LinkMovementMethod.getInstance() expandNotesButton?.setOnClickListener { expandTask() } iconViewChallenge?.setOnClickListener {