feat(share): add option open URL
This commit is contained in:
@@ -28,14 +28,23 @@ public class ExternalShareActivity extends FragmentStackActivity{
|
|||||||
UiUtils.setUserPreferredTheme(this);
|
UiUtils.setUserPreferredTheme(this);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
if(savedInstanceState==null){
|
if(savedInstanceState==null){
|
||||||
|
|
||||||
|
String text = getIntent().getStringExtra(Intent.EXTRA_TEXT);
|
||||||
|
boolean isMastodonURL = UiUtils.looksLikeMastodonUrl(text);
|
||||||
|
|
||||||
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
|
List<AccountSession> sessions=AccountSessionManager.getInstance().getLoggedInAccounts();
|
||||||
if(sessions.isEmpty()){
|
if(sessions.isEmpty()){
|
||||||
Toast.makeText(this, R.string.err_not_logged_in, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.err_not_logged_in, Toast.LENGTH_SHORT).show();
|
||||||
finish();
|
finish();
|
||||||
}else if(sessions.size()==1){
|
}else if(sessions.size()==1 && !isMastodonURL){
|
||||||
openComposeFragment(sessions.get(0).getID());
|
openComposeFragment(sessions.get(0).getID());
|
||||||
}else{
|
}else{
|
||||||
new AccountSwitcherSheet(this, false, false, accountSession -> openComposeFragment(accountSession.getID())).show();
|
new AccountSwitcherSheet(this, false, false, isMastodonURL, accountSession -> {
|
||||||
|
if(accountSession!=null)
|
||||||
|
openComposeFragment(accountSession.getID());
|
||||||
|
else
|
||||||
|
UiUtils.openURL(this, AccountSessionManager.getInstance().getLastActiveAccountID(), text);
|
||||||
|
}).show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ public class HomeFragment extends AppKitFragment implements OnBackPressedListene
|
|||||||
for(AccountSession session:AccountSessionManager.getInstance().getLoggedInAccounts()){
|
for(AccountSession session:AccountSessionManager.getInstance().getLoggedInAccounts()){
|
||||||
options.add(session.self.displayName+"\n("+session.self.username+"@"+session.domain+")");
|
options.add(session.self.displayName+"\n("+session.self.username+"@"+session.domain+")");
|
||||||
}
|
}
|
||||||
new AccountSwitcherSheet(getActivity(), true, true, accountSession -> {
|
new AccountSwitcherSheet(getActivity(), true, true, false, accountSession -> {
|
||||||
getActivity().finish();
|
getActivity().finish();
|
||||||
getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
|
getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
|
||||||
}).show();
|
}).show();
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public class AccountActivationFragment extends ToolbarFragment{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onToolbarNavigationClick(){
|
public void onToolbarNavigationClick(){
|
||||||
new AccountSwitcherSheet(getActivity(), true, true, accountSession -> {
|
new AccountSwitcherSheet(getActivity(), true, true, false, accountSession -> {
|
||||||
getActivity().finish();
|
getActivity().finish();
|
||||||
getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
|
getActivity().startActivity(new Intent(getActivity(), MainActivity.class));
|
||||||
}).show();
|
}).show();
|
||||||
|
|||||||
@@ -2,13 +2,11 @@ package org.joinmastodon.android.ui;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.res.ColorStateList;
|
import android.content.res.ColorStateList;
|
||||||
import android.graphics.drawable.Animatable;
|
import android.graphics.drawable.Animatable;
|
||||||
import android.graphics.drawable.ColorDrawable;
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.view.Gravity;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.WindowInsets;
|
import android.view.WindowInsets;
|
||||||
@@ -18,22 +16,21 @@ import android.widget.ImageView;
|
|||||||
import android.widget.PopupMenu;
|
import android.widget.PopupMenu;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
|
||||||
import org.joinmastodon.android.GlobalUserPreferences;
|
import org.joinmastodon.android.GlobalUserPreferences;
|
||||||
import org.joinmastodon.android.MainActivity;
|
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.api.requests.oauth.RevokeOauthToken;
|
import org.joinmastodon.android.api.requests.oauth.RevokeOauthToken;
|
||||||
import org.joinmastodon.android.api.session.AccountSession;
|
import org.joinmastodon.android.api.session.AccountSession;
|
||||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||||
import org.joinmastodon.android.fragments.onboarding.CustomWelcomeFragment;
|
import org.joinmastodon.android.fragments.onboarding.CustomWelcomeFragment;
|
||||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||||
import org.w3c.dom.Text;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
import me.grishka.appkit.Nav;
|
import me.grishka.appkit.Nav;
|
||||||
import me.grishka.appkit.api.Callback;
|
import me.grishka.appkit.api.Callback;
|
||||||
import me.grishka.appkit.api.ErrorResponse;
|
import me.grishka.appkit.api.ErrorResponse;
|
||||||
@@ -58,7 +55,7 @@ public class AccountSwitcherSheet extends BottomSheet{
|
|||||||
private final boolean logOutEnabled;
|
private final boolean logOutEnabled;
|
||||||
private final Consumer<AccountSession> onClick;
|
private final Consumer<AccountSession> onClick;
|
||||||
|
|
||||||
public AccountSwitcherSheet(@NonNull Activity activity, boolean logOutEnabled, boolean addAccountEnabled, Consumer<AccountSession> onClick){
|
public AccountSwitcherSheet(@NonNull Activity activity, boolean logOutEnabled, boolean addAccountEnabled, boolean showOpenURL, Consumer<AccountSession> onClick){
|
||||||
super(activity);
|
super(activity);
|
||||||
this.activity=activity;
|
this.activity=activity;
|
||||||
this.logOutEnabled=logOutEnabled;
|
this.logOutEnabled=logOutEnabled;
|
||||||
@@ -92,6 +89,22 @@ public class AccountSwitcherSheet extends BottomSheet{
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(showOpenURL) {
|
||||||
|
AccountViewHolder holder = new AccountViewHolder();
|
||||||
|
holder.more.setVisibility(View.GONE);
|
||||||
|
holder.currentIcon.setVisibility(View.GONE);
|
||||||
|
holder.display_name.setVisibility(View.VISIBLE);
|
||||||
|
holder.display_add_account.setVisibility(View.VISIBLE);
|
||||||
|
holder.display_add_account.setText(R.string.sk_share_open_url);
|
||||||
|
holder.avatar.setScaleType(ImageView.ScaleType.CENTER);
|
||||||
|
holder.avatar.setImageResource(R.drawable.ic_fluent_open_24_regular);
|
||||||
|
holder.avatar.setImageTintList(ColorStateList.valueOf(UiUtils.getThemeColor(activity, android.R.attr.textColorPrimary)));
|
||||||
|
adapter.addAdapter(new ClickableSingleViewRecyclerAdapter(holder.itemView, () -> {
|
||||||
|
onClick.accept(null);
|
||||||
|
dismiss();
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
list.setAdapter(adapter);
|
list.setAdapter(adapter);
|
||||||
DividerItemDecoration divider=new DividerItemDecoration(activity, R.attr.colorPollVoted, .5f, 72, 16, DividerItemDecoration.NOT_FIRST);
|
DividerItemDecoration divider=new DividerItemDecoration(activity, R.attr.colorPollVoted, .5f, 72, 16, DividerItemDecoration.NOT_FIRST);
|
||||||
divider.setDrawBelowLastItem(true);
|
divider.setDrawBelowLastItem(true);
|
||||||
|
|||||||
@@ -288,4 +288,5 @@
|
|||||||
<string name="sk_settings_content_types_explanation">Allows setting a content type like Markdown when creating a post. Keep in mind that not all instances support this.</string>
|
<string name="sk_settings_content_types_explanation">Allows setting a content type like Markdown when creating a post. Keep in mind that not all instances support this.</string>
|
||||||
<string name="sk_settings_default_content_type">Default content type</string>
|
<string name="sk_settings_default_content_type">Default content type</string>
|
||||||
<string name="sk_settings_default_content_type_explanation">This lets you have a content type be pre-selected when creating new posts, overriding the value set in “Posting preferences”.</string>
|
<string name="sk_settings_default_content_type_explanation">This lets you have a content type be pre-selected when creating new posts, overriding the value set in “Posting preferences”.</string>
|
||||||
|
<string name="sk_share_open_url">Open in App</string>
|
||||||
</resources>
|
</resources>
|
||||||
Reference in New Issue
Block a user