diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java index 6408a968d..74c3185ed 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HashtagTimelineFragment.java @@ -16,6 +16,7 @@ import org.joinmastodon.android.api.requests.tags.SetHashtagFollowed; import org.joinmastodon.android.api.requests.timelines.GetHashtagTimeline; import org.joinmastodon.android.model.Hashtag; import org.joinmastodon.android.model.Status; +import org.joinmastodon.android.ui.utils.UiUtils; import java.util.List; @@ -117,6 +118,7 @@ public class HashtagTimelineFragment extends StatusListFragment{ super.onViewCreated(view, savedInstanceState); fab=view.findViewById(R.id.fab); fab.setOnClickListener(this::onFabClick); + fab.setOnLongClickListener(v -> UiUtils.pickAccountForCompose(getActivity(), accountID, '#'+hashtag+' ')); } private void onFabClick(View v){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java index 8c1e6e08b..12bbe9ec2 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/HomeTimelineFragment.java @@ -106,6 +106,8 @@ public class HomeTimelineFragment extends StatusListFragment{ super.onViewCreated(view, savedInstanceState); fab=view.findViewById(R.id.fab); fab.setOnClickListener(this::onFabClick); + fab.setOnLongClickListener(v->UiUtils.pickAccountForCompose(getActivity(), accountID, null)); + updateToolbarLogo(); list.addOnScrollListener(new RecyclerView.OnScrollListener(){ @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java index b81d98afb..9c88366ed 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ListTimelineFragment.java @@ -12,6 +12,7 @@ import android.widget.ImageButton; import org.joinmastodon.android.R; import org.joinmastodon.android.api.requests.timelines.GetListTimeline; import org.joinmastodon.android.model.Status; +import org.joinmastodon.android.ui.utils.UiUtils; import java.util.List; @@ -69,6 +70,7 @@ public class ListTimelineFragment extends StatusListFragment { super.onViewCreated(view, savedInstanceState); fab=view.findViewById(R.id.fab); fab.setOnClickListener(this::onFabClick); + fab.setOnLongClickListener(v -> UiUtils.pickAccountForCompose(getActivity(), accountID, null)); } private void onFabClick(View v){ diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java index 87e15269a..92631fd27 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -138,6 +138,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList private WindowInsets childInsets; private PhotoViewer currentPhotoViewer; private boolean editModeLoading; + private String prefilledText; public ProfileFragment(){ super(R.layout.loader_fragment_overlay_toolbar); @@ -162,6 +163,8 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList if(!getArguments().getBoolean("noAutoLoad", false)) loadData(); } + + prefilledText = AccountSessionManager.getInstance().isSelf(accountID, account) ? null : '@'+account.acct+' '; } @Override @@ -275,6 +278,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList cover.setOnClickListener(this::onCoverClick); refreshLayout.setOnRefreshListener(this); fab.setOnClickListener(this::onFabClick); + fab.setOnLongClickListener(v->UiUtils.pickAccountForCompose(getActivity(), accountID, prefilledText)); if(loaded){ bindHeaderView(); @@ -939,9 +943,7 @@ public class ProfileFragment extends LoaderFragment implements OnBackPressedList private void onFabClick(View v){ Bundle args=new Bundle(); args.putString("account", accountID); - if(!AccountSessionManager.getInstance().isSelf(accountID, account)){ - args.putString("prefilledText", '@'+account.acct+' '); - } + if(prefilledText != null) args.putString("prefilledText", prefilledText); Nav.go(getActivity(), ComposeFragment.class, args); } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index 91625f0b7..43b4f09e7 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -65,6 +65,7 @@ import org.joinmastodon.android.events.NotificationDeletedEvent; import org.joinmastodon.android.events.RemoveAccountPostsEvent; import org.joinmastodon.android.events.StatusDeletedEvent; import org.joinmastodon.android.events.StatusUnpinnedEvent; +import org.joinmastodon.android.fragments.ComposeFragment; import org.joinmastodon.android.fragments.HashtagTimelineFragment; import org.joinmastodon.android.fragments.ListTimelineFragment; import org.joinmastodon.android.fragments.ProfileFragment; @@ -916,4 +917,18 @@ public class UiUtils{ public static boolean isMIUI(){ return !TextUtils.isEmpty(getSystemProperty("ro.miui.ui.version.code")); } + + public static boolean pickAccountForCompose(Activity activity, String accountID, String prefilledText){ + if (AccountSessionManager.getInstance().getLoggedInAccounts().size() > 1) { + UiUtils.pickAccount(activity, accountID, 0, 0, session -> { + Bundle args=new Bundle(); + args.putString("account", session.getID()); + if (prefilledText != null) args.putString("prefilledText", prefilledText); + Nav.go(activity, ComposeFragment.class, args); + }, null); + return true; + } else { + return false; + } + } }