add option to open post with other account

closes #182
This commit is contained in:
sk
2022-12-23 20:17:54 +01:00
parent 732e780fd9
commit 0dae798c9a
5 changed files with 26 additions and 5 deletions

View File

@@ -32,7 +32,7 @@ public class M3AlertDialogBuilder extends AlertDialog.Builder{
View title=alert.findViewById(titleID);
if(title!=null){
int pad=V.dp(24);
title.setPadding(pad, pad, pad, pad);
title.setPadding(pad, pad, pad, V.dp(18));
}
}
int titleDividerID=getContext().getResources().getIdentifier("titleDividerNoCustom", "id", "android");

View File

@@ -19,8 +19,6 @@ import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.RecyclerView;
import org.joinmastodon.android.GlobalUserPreferences;
import org.joinmastodon.android.R;
import org.joinmastodon.android.api.requests.accounts.GetAccountRelationships;
@@ -139,6 +137,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
avatar.setOutlineProvider(roundCornersOutline);
avatar.setClipToOutline(true);
more.setOnClickListener(this::onMoreClick);
more.setOnLongClickListener((v) -> { openWithAccount(); return true; });
visibility.setOnClickListener(v->item.parentFragment.onVisibilityIconClick(this));
deleteNotification.setOnClickListener(v->UiUtils.confirmDeleteNotification(activity, item.parentFragment.getAccountID(), item.notification, ()->{
if (item.parentFragment instanceof NotificationsListFragment fragment) {
@@ -191,8 +190,11 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
}
}else if(id==R.id.delete){
UiUtils.confirmDeletePost(item.parentFragment.getActivity(), item.parentFragment.getAccountID(), item.status, s->{});
}else if(id==R.id.pin || id==R.id.unpin){
UiUtils.confirmPinPost(item.parentFragment.getActivity(), item.parentFragment.getAccountID(), item.status, !item.status.pinned, s->{});
}else if(id==R.id.pin || id==R.id.unpin) {
UiUtils.confirmPinPost(item.parentFragment.getActivity(), item.parentFragment.getAccountID(), item.status, !item.status.pinned, s -> {
});
}else if(id==R.id.open_with_account) {
openWithAccount();
}else if(id==R.id.mute){
UiUtils.confirmToggleMuteUser(item.parentFragment.getActivity(), item.parentFragment.getAccountID(), account, relationship!=null && relationship.muting, r->{});
}else if(id==R.id.block){
@@ -231,6 +233,13 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
});
}
private void openWithAccount() {
UiUtils.pickAccount(item.parentFragment.getActivity(), (session, dialog) -> {
UiUtils.openURL(item.parentFragment.getActivity(), session.getID(), item.status.url);
return true;
}, R.string.sk_open_in_account);
}
@Override
public void onBind(HeaderStatusDisplayItem item){
name.setText(item.parsedName);

View File

@@ -57,6 +57,7 @@ import org.joinmastodon.android.api.requests.search.GetSearchResults;
import org.joinmastodon.android.api.requests.statuses.DeleteStatus;
import org.joinmastodon.android.api.requests.statuses.GetStatusByID;
import org.joinmastodon.android.api.requests.statuses.SetStatusPinned;
import org.joinmastodon.android.api.session.AccountSession;
import org.joinmastodon.android.api.session.AccountSessionManager;
import org.joinmastodon.android.events.StatusCountersUpdatedEvent;
import org.joinmastodon.android.events.FollowRequestHandledEvent;
@@ -97,6 +98,7 @@ import java.util.function.Consumer;
import java.util.stream.Collectors;
import androidx.annotation.AttrRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import androidx.browser.customtabs.CustomTabsIntent;
@@ -832,4 +834,12 @@ public class UiUtils{
public static boolean isMIUI(){
return !TextUtils.isEmpty(getSystemProperty("ro.miui.ui.version.code"));
}
public static void pickAccount(Context context, BiPredicate<AccountSession, DialogInterface> pick, @StringRes int title) {
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
new M3AlertDialogBuilder(context)
.setItems(sessions.stream().map(as->"@"+as.self.username+"@"+as.domain).toArray(String[]::new), (d, which)->pick.test(sessions.get(which), d))
.setTitle(title == 0 ? R.string.choose_account : title)
.show();
}
}