From ad613c5056242682aed1be5c10b388044ed8e3a4 Mon Sep 17 00:00:00 2001 From: Mikael Date: Sat, 10 Dec 2022 11:30:04 +0100 Subject: [PATCH] open in browser with current session instance --- .../android/fragments/ProfileFragment.java | 2 +- .../account_list/BaseAccountListFragment.java | 2 +- .../ui/displayitems/HeaderStatusDisplayItem.java | 2 +- .../org/joinmastodon/android/ui/utils/UiUtils.java | 12 ++++++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) 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 53ee3d297e..0bb1634823 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/ProfileFragment.java @@ -570,7 +570,7 @@ public boolean onOptionsItemSelected(MenuItem item){ args.putParcelable("reportAccount", Parcels.wrap(account)); Nav.go(getActivity(), ReportReasonChoiceFragment.class, args); }else if(id==R.id.open_in_browser){ - UiUtils.launchWebBrowser(getActivity(), account.url); + UiUtils.launchWebBrowser(getActivity(), UiUtils.getSessionAccountURL(accountID, account)); }else if(id==R.id.block_domain){ UiUtils.confirmToggleBlockDomain(getActivity(), accountID, account.getDomain(), relationship.domainBlocking, ()->{ relationship.domainBlocking=!relationship.domainBlocking; diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java index d9ab73f2f2..e4a81699d8 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/account_list/BaseAccountListFragment.java @@ -346,7 +346,7 @@ private boolean onContextMenuItemSelected(MenuItem item){ args.putParcelable("reportAccount", Parcels.wrap(account)); Nav.go(getActivity(), ReportReasonChoiceFragment.class, args); }else if(id==R.id.open_in_browser){ - UiUtils.launchWebBrowser(getActivity(), account.url); + UiUtils.launchWebBrowser(getActivity(), UiUtils.getSessionAccountURL(accountID, account)); }else if(id==R.id.block_domain){ UiUtils.confirmToggleBlockDomain(getActivity(), accountID, account.getDomain(), relationship.domainBlocking, ()->{ relationship.domainBlocking=!relationship.domainBlocking; diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java index 522c736b62..bcc4e255c0 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/HeaderStatusDisplayItem.java @@ -175,7 +175,7 @@ public void onError(ErrorResponse error){ args.putParcelable("reportAccount", Parcels.wrap(item.status.account)); Nav.go(item.parentFragment.getActivity(), ReportReasonChoiceFragment.class, args); }else if(id==R.id.open_in_browser){ - UiUtils.launchWebBrowser(activity, item.status.url); + UiUtils.launchWebBrowser(activity, UiUtils.getSessionStatusURL(item.parentFragment.getAccountID(), item.status)); }else if(id==R.id.follow){ if(relationship==null) return true; 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 41d97e8ea2..da63941192 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 @@ -558,6 +558,18 @@ public static boolean isDarkTheme(){ return GlobalUserPreferences.theme==GlobalUserPreferences.ThemePreference.DARK; } + public static String getSessionAccountURL(String accountID, Account account){ + if(accountID==null) + return account.url; + return "https://"+AccountSessionManager.getInstance().getAccount(accountID).domain+"/@"+account.acct; + } + + public static String getSessionStatusURL(String accountID, Status status){ + if(accountID==null) + return status.url; + return "https://"+AccountSessionManager.getInstance().getAccount(accountID).domain+"/@"+status.account.acct+"/"+status.id; + } + public static void openURL(Context context, String accountID, String url){ Uri uri=Uri.parse(url); if(accountID!=null && "https".equals(uri.getScheme()) && AccountSessionManager.getInstance().getAccount(accountID).domain.equalsIgnoreCase(uri.getAuthority())){