diff --git a/app/src/husky/res/values/strings.xml b/app/src/husky/res/values/strings.xml
index 9af5bd4f..0c32bffd 100644
--- a/app/src/husky/res/values/strings.xml
+++ b/app/src/husky/res/values/strings.xml
@@ -56,6 +56,7 @@
Enable bigger custom emojis
Enable experimental Pleroma-FE stickers(if available)
Animate custom emojis
+ Render subscriptions as normal posts
Image
Video
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/ChatMessagesAdapter.kt b/app/src/main/java/com/keylesspalace/tusky/adapter/ChatMessagesAdapter.kt
index d2a7f571..cb4f6506 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/ChatMessagesAdapter.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/ChatMessagesAdapter.kt
@@ -39,7 +39,7 @@ class ChatMessagesViewHolder(view: View) : RecyclerView.ViewHolder(view) {
private val mediaPreviewUnloaded = ColorDrawable(ThemeUtils.getColor(itemView.context, R.attr.colorBackgroundAccent))
- fun setupWithChatMessage(msg: ChatMessageViewData.Concrete, chatActionListener: ChatActionListener, statusDisplayOptions: StatusDisplayOptions, payload: Any?) {
+ fun setupWithChatMessage(msg: ChatMessageViewData.Concrete, chatActionListener: ChatActionListener, payload: Any?) {
if(payload == null) {
if(msg.content != null) {
val text = msg.content.emojify(msg.emojis, content)
@@ -110,15 +110,15 @@ class ChatMessagesViewHolder(view: View) : RecyclerView.ViewHolder(view) {
private fun setAttachmentClickListener(view: View, listener: ChatActionListener, attachment: Attachment, animateTransition: Boolean) {
- view.setOnClickListener { v: View? ->
+ view.setOnClickListener { v: View ->
val position = adapterPosition
if (position != RecyclerView.NO_POSITION) {
listener.onViewMedia(position, if (animateTransition) v else null)
}
}
- view.setOnLongClickListener { v: View? ->
- val description = getAttachmentDescription(view.context, attachment)
- Toast.makeText(view.context, description, Toast.LENGTH_LONG).show()
+ view.setOnLongClickListener { v: View ->
+ val description = getAttachmentDescription(v.context, attachment)
+ Toast.makeText(v.context, description, Toast.LENGTH_LONG).show()
true
}
}
@@ -162,7 +162,6 @@ class ChatMessagesViewHolder(view: View) : RecyclerView.ViewHolder(view) {
class ChatMessagesAdapter(private val dataSource : TimelineAdapter.AdapterDataSource,
private val chatActionListener: ChatActionListener,
- private val statusDisplayOptions: StatusDisplayOptions,
private val localUserId: String)
: RecyclerView.Adapter() {
@@ -207,7 +206,7 @@ class ChatMessagesAdapter(private val dataSource : TimelineAdapter.AdapterDataSo
if(holder is PlaceholderViewHolder) {
holder.setup(chatActionListener, (chat as ChatMessageViewData.Placeholder).isLoading)
} else if(holder is ChatMessagesViewHolder) {
- holder.setupWithChatMessage(chat as ChatMessageViewData.Concrete, chatActionListener, statusDisplayOptions,
+ holder.setupWithChatMessage(chat as ChatMessageViewData.Concrete, chatActionListener,
if (payloads != null && payloads.isNotEmpty()) payloads[0] else null)
}
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
index 999d07c1..0dc665e3 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/NotificationsAdapter.java
@@ -280,7 +280,8 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
statusDisplayOptions.showBotOverlay(),
statusDisplayOptions.useBlurhash(),
CardViewMode.NONE,
- statusDisplayOptions.confirmReblogs()
+ statusDisplayOptions.confirmReblogs(),
+ statusDisplayOptions.renderStatusAsMention()
);
}
@@ -301,6 +302,12 @@ public class NotificationsAdapter extends RecyclerView.Adapter {
return VIEW_TYPE_STATUS;
}
case STATUS:
+ if (statusDisplayOptions.renderStatusAsMention()) {
+ if (concrete.getStatusViewData() != null && concrete.getStatusViewData().isMuted())
+ return VIEW_TYPE_MUTED_STATUS;
+ return VIEW_TYPE_STATUS;
+ }
+ /* fallthrough */
case FAVOURITE:
case REBLOG:
case EMOJI_REACTION: {
diff --git a/app/src/main/java/com/keylesspalace/tusky/adapter/TimelineAdapter.java b/app/src/main/java/com/keylesspalace/tusky/adapter/TimelineAdapter.java
index b1167de9..dc5c254d 100644
--- a/app/src/main/java/com/keylesspalace/tusky/adapter/TimelineAdapter.java
+++ b/app/src/main/java/com/keylesspalace/tusky/adapter/TimelineAdapter.java
@@ -66,7 +66,8 @@ public final class TimelineAdapter extends RecyclerView.Adapter {
statusDisplayOptions.showBotOverlay(),
statusDisplayOptions.useBlurhash(),
statusDisplayOptions.cardViewMode(),
- statusDisplayOptions.confirmReblogs()
+ statusDisplayOptions.confirmReblogs(),
+ statusDisplayOptions.renderStatusAsMention()
);
}
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/chat/ChatActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/chat/ChatActivity.kt
index 29c07e9e..d756dc05 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/chat/ChatActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/chat/ChatActivity.kt
@@ -259,11 +259,7 @@ class ChatActivity: BottomSheetActivity(),
}
private fun setupChat() {
- val statusDisplayOptions = StatusDisplayOptions(false,false,
- true, false, false, CardViewMode.NONE,
- false)
-
- adapter = ChatMessagesAdapter(dataSource, this, statusDisplayOptions, accountManager.activeAccount!!.accountId)
+ adapter = ChatMessagesAdapter(dataSource, this, accountManager.activeAccount!!.accountId)
// TODO: a11y
recycler.setHasFixedSize(true)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt
index c75e5829..305f8c8f 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/conversation/ConversationsFragment.kt
@@ -36,6 +36,7 @@ import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.fragment.SFragment
import com.keylesspalace.tusky.interfaces.ReselectableFragment
import com.keylesspalace.tusky.interfaces.StatusActionListener
+import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.*
import kotlinx.android.synthetic.main.fragment_timeline.*
import javax.inject.Inject
@@ -67,7 +68,8 @@ class ConversationsFragment : SFragment(), StatusActionListener, Injectable, Res
showBotOverlay = preferences.getBoolean("showBotOverlay", true),
useBlurhash = preferences.getBoolean("useBlurhash", true),
cardViewMode = CardViewMode.NONE,
- confirmReblogs = preferences.getBoolean("confirmReblogs", true)
+ confirmReblogs = preferences.getBoolean("confirmReblogs", true),
+ renderStatusAsMention = preferences.getBoolean(PrefKeys.RENDER_STATUS_AS_MENTION, true)
)
adapter = ConversationAdapter(statusDisplayOptions, this, ::onTopLoaded, viewModel::retry)
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
index add6704d..8618711a 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesActivity.kt
@@ -133,7 +133,8 @@ class PreferencesActivity : BaseActivity(), SharedPreferences.OnSharedPreference
}
"statusTextSize", "absoluteTimeView", "showBotOverlay", "animateGifAvatars",
"useBlurhash", "showCardsInTimelines", "confirmReblogs",
- "enableSwipeForTabs", "bigEmojis", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR -> {
+ "enableSwipeForTabs", "bigEmojis", "mainNavPosition", PrefKeys.HIDE_TOP_TOOLBAR,
+ PrefKeys.RENDER_STATUS_AS_MENTION -> {
restartActivitiesOnExit = true
}
"language" -> {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
index f1249b47..e5574287 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/preference/PreferencesFragment.kt
@@ -199,6 +199,13 @@ class PreferencesFragment : PreferenceFragmentCompat(), Injectable {
setTitle(R.string.pref_title_animate_custom_emojis)
isSingleLineTitle = false
}
+
+ switchPreference {
+ setDefaultValue(true)
+ key = PrefKeys.RENDER_STATUS_AS_MENTION
+ setTitle(R.string.pref_title_render_subscriptions_as_statuses)
+ isSingleLineTitle = true
+ }
}
preferenceCategory(R.string.pref_title_privacy) {
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt
index e5308efc..677024e5 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/report/fragments/ReportStatusesFragment.kt
@@ -43,6 +43,7 @@ import com.keylesspalace.tusky.di.Injectable
import com.keylesspalace.tusky.di.ViewModelFactory
import com.keylesspalace.tusky.entity.Attachment
import com.keylesspalace.tusky.entity.Status
+import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.*
import com.keylesspalace.tusky.viewdata.AttachmentViewData
import kotlinx.android.synthetic.main.fragment_report_statuses.*
@@ -117,7 +118,8 @@ class ReportStatusesFragment : Fragment(), Injectable, AdapterHandler {
showBotOverlay = false,
useBlurhash = preferences.getBoolean("useBlurhash", true),
cardViewMode = CardViewMode.NONE,
- confirmReblogs = preferences.getBoolean("confirmReblogs", true)
+ confirmReblogs = preferences.getBoolean("confirmReblogs", true),
+ renderStatusAsMention = preferences.getBoolean(PrefKeys.RENDER_STATUS_AS_MENTION, true)
)
adapter = StatusesAdapter(statusDisplayOptions,
diff --git a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
index 540b8db8..f5a7fff3 100644
--- a/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
+++ b/app/src/main/java/com/keylesspalace/tusky/components/search/fragments/SearchStatusesFragment.kt
@@ -54,6 +54,7 @@ import com.keylesspalace.tusky.entity.Status
import com.keylesspalace.tusky.entity.Status.Mention
import com.keylesspalace.tusky.interfaces.AccountSelectionListener
import com.keylesspalace.tusky.interfaces.StatusActionListener
+import com.keylesspalace.tusky.settings.PrefKeys
import com.keylesspalace.tusky.util.CardViewMode
import com.keylesspalace.tusky.util.LinkHelper
import com.keylesspalace.tusky.util.NetworkState
@@ -87,7 +88,8 @@ class SearchStatusesFragment : SearchFragment