diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java index e85cad37b..5e6b1ccbd 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ThreadFragment.java @@ -289,7 +289,7 @@ public class ThreadFragment extends StatusListFragment implements ProvidesAssist // descendant neighbor Optional .ofNullable(count > index + 1 ? statuses.get(index + 1) : null) - .filter(s -> s.inReplyToId.equals(current.id)) + .filter(s -> s.inReplyToId!=null && s.inReplyToId.equals(current.id)) // inReplyToId is null for quote posts on Iceshrimp .orElse(null), // ancestoring neighbor Optional.ofNullable(index > 0 ? ancestry.get(index - 1) : null) diff --git a/mastodon/src/main/java/org/joinmastodon/android/model/Instance.java b/mastodon/src/main/java/org/joinmastodon/android/model/Instance.java index aacf41b9a..51538d6b4 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/model/Instance.java +++ b/mastodon/src/main/java/org/joinmastodon/android/model/Instance.java @@ -152,6 +152,10 @@ public class Instance extends BaseModel{ return version.contains("compatible; Pixelfed"); } + public boolean isIceshrimp() { + return version.contains("compatible; Iceshrimp"); + } + public boolean hasFeature(Feature feature) { Optional> pleromaFeatures = Optional.ofNullable(pleroma) .map(p -> p.metadata) diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java index 6e343be51..ae67ed330 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/FooterStatusDisplayItem.java @@ -285,17 +285,16 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{ UiUtils.opacityIn(v); Bundle args=new Bundle(); args.putString("account", item.accountID); - AccountSession accountSession=AccountSessionManager.getInstance().getAccount(item.accountID); - Instance instance=AccountSessionManager.getInstance().getInstanceInfo(accountSession.domain); - if(instance.pleroma == null){ + Instance instance=AccountSessionManager.get(item.accountID).getInstance().get(); + if(instance.isAkkoma() || instance.isIceshrimp()){ + args.putParcelable("quote", Parcels.wrap(item.status)); + }else{ StringBuilder prefilledText = new StringBuilder().append("\n\n"); String ownID = AccountSessionManager.getInstance().getAccount(item.accountID).self.id; if (!item.status.account.id.equals(ownID)) prefilledText.append('@').append(item.status.account.acct).append(' '); prefilledText.append(item.status.url); args.putString("prefilledText", prefilledText.toString()); args.putInt("selectionStart", 0); - }else{ - args.putParcelable("quote", Parcels.wrap(item.status)); } Nav.go(item.parentFragment.getActivity(), ComposeFragment.class, args); }); diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index 4e6193ceb..9ea9d9b75 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -247,7 +247,9 @@ public abstract class StatusDisplayItem{ if(statusForContent.quote!=null) { int quoteInlineIndex=statusForContent.content.lastIndexOf("

RE:"); - if (quoteInlineIndex!=-1) + if(quoteInlineIndex==-1) + quoteInlineIndex=statusForContent.content.lastIndexOf("

RE:"); + if(quoteInlineIndex!=-1) statusForContent.content=statusForContent.content.substring(0, quoteInlineIndex); }