add option to open post with other account

closes #182
This commit is contained in:
sk
2022-12-23 16:17:54 -03:00
committed by LucasGGamerM
parent 8f6c57d5c9
commit fc2e5112c0
5 changed files with 28 additions and 4 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

@@ -135,6 +135,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));
optionsMenu=new PopupMenu(activity, more);
@@ -182,8 +183,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){
@@ -220,6 +224,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

@@ -56,6 +56,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;
@@ -95,6 +96,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;
@@ -812,4 +814,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();
}
}