From bbe75e1df434964cba8168779865ed08cf40001d Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Mon, 29 Jun 2015 15:21:12 +0800 Subject: [PATCH] added set consumer key dialog --- .../constant/SharedPreferenceConstants.java | 1 + .../activity/support/ComposeActivity.java | 17 +---- .../activity/support/SignInActivity.java | 48 +++++++++++++- .../org/mariotaku/twidere/util/Utils.java | 6 ++ .../layout/dialog_set_consumer_key_secret.xml | 63 +++++++++++++++++++ twidere/src/main/res/values/strings.xml | 1 + 6 files changed, 119 insertions(+), 17 deletions(-) create mode 100644 twidere/src/main/res/layout/dialog_set_consumer_key_secret.xml diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java index 36f609c3a..36f22712a 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/constant/SharedPreferenceConstants.java @@ -249,6 +249,7 @@ public interface SharedPreferenceConstants { @Preference(type = STRING, hasDefault = true, defaultString = TwidereConstants.TWITTER_CONSUMER_SECRET) String KEY_CONSUMER_SECRET = "consumer_secret"; String KEY_SETTINGS_WIZARD_COMPLETED = "settings_wizard_completed"; + String KEY_CONSUMER_KEY_SECRET_SET = "consumer_key_secret_set"; @Preference(type = BOOLEAN, hasDefault = true, defaultBoolean = true) String KEY_CARD_ANIMATION = "card_animation"; @Preference(type = BOOLEAN, hasDefault = true, defaultBoolean = true) diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/support/ComposeActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/support/ComposeActivity.java index e501ced89..6a868c228 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/support/ComposeActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/support/ComposeActivity.java @@ -1038,22 +1038,6 @@ public class ComposeActivity extends ThemedFragmentActivity implements LocationL // mAccountActionProvider.setSelectedAccounts(mAccountsAdapter.getSelectedAccounts()); } - @TargetApi(Build.VERSION_CODES.KITKAT) - private boolean openDocument() { - final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - final String[] mimeTypes = {"image/png", "image/jpeg", "image/gif"}; - intent.setType("image/*"); - intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - try { - startActivityForResult(intent, REQUEST_OPEN_DOCUMENT); - } catch (final ActivityNotFoundException e) { - return false; - } - return true; - } - private boolean pickImage() { final Intent intent = ThemedImagePickerActivity.withThemed(this).pickImage().build(); startActivityForResult(intent, REQUEST_PICK_IMAGE); @@ -1375,6 +1359,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements LocationL mSelection = new LongSparseArray<>(); final SharedPreferencesWrapper preferences = SharedPreferencesWrapper.getInstance(activity, SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE, SharedPreferenceConstants.class); + assert preferences != null; mNameFirst = preferences.getBoolean(KEY_NAME_FIRST); } diff --git a/twidere/src/main/java/org/mariotaku/twidere/activity/support/SignInActivity.java b/twidere/src/main/java/org/mariotaku/twidere/activity/support/SignInActivity.java index 85b326d8d..fe797758a 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/activity/support/SignInActivity.java +++ b/twidere/src/main/java/org/mariotaku/twidere/activity/support/SignInActivity.java @@ -19,11 +19,11 @@ package org.mariotaku.twidere.activity.support; -import android.app.AlertDialog; import android.app.Dialog; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.res.ColorStateList; @@ -42,6 +42,7 @@ import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewCompat; import android.support.v7.app.ActionBar; +import android.support.v7.app.AlertDialog; import android.support.v7.widget.ActionMenuView; import android.support.v7.widget.Toolbar; import android.text.Editable; @@ -85,10 +86,12 @@ import org.mariotaku.twidere.util.OAuthPasswordAuthenticator.AuthenticationExcep import org.mariotaku.twidere.util.OAuthPasswordAuthenticator.AuthenticityTokenException; import org.mariotaku.twidere.util.OAuthPasswordAuthenticator.WrongUserPassException; import org.mariotaku.twidere.util.ParseUtils; +import org.mariotaku.twidere.util.SharedPreferencesWrapper; import org.mariotaku.twidere.util.ThemeUtils; import org.mariotaku.twidere.util.TwidereActionModeForChildListener; import org.mariotaku.twidere.util.TwidereColorUtils; import org.mariotaku.twidere.util.TwitterAPIFactory; +import org.mariotaku.twidere.util.Utils; import org.mariotaku.twidere.util.support.ViewSupport; import org.mariotaku.twidere.util.support.view.ViewOutlineProviderCompat; import org.mariotaku.twidere.view.TintedStatusNativeActionModeAwareLayout; @@ -346,6 +349,15 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList final ColorStateList color = ColorStateList.valueOf(resources.getColor(R.color.material_light_green)); ViewCompat.setBackgroundTintList(mSignInButton, color); setSignInButton(); + + final String consumerKey = mPreferences.getString(KEY_CONSUMER_KEY, null); + final String consumerSecret = mPreferences.getString(KEY_CONSUMER_SECRET, null); + if (savedInstanceState == null && !mPreferences.getBoolean(KEY_CONSUMER_KEY_SECRET_SET, false) + && !Utils.isCustomConsumerKeySecret(consumerKey, consumerSecret)) { + final SetConsumerKeySecretDialogFragment df = new SetConsumerKeySecretDialogFragment(); + df.setCancelable(false); + df.show(getSupportFragmentManager(), "set_consumer_key_secret"); + } } private void doLogin() { @@ -816,4 +828,38 @@ public class SignInActivity extends BaseAppCompatActivity implements OnClickList apiUrlFormat, false, noVersionSuffix); } } + + public static class SetConsumerKeySecretDialogFragment extends BaseSupportDialogFragment { + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setView(R.layout.dialog_set_consumer_key_secret); + builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + final EditText editConsumerKey = (EditText) ((Dialog) dialog).findViewById(R.id.consumer_key); + final EditText editConsumerSecret = (EditText) ((Dialog) dialog).findViewById(R.id.consumer_secret); + final SharedPreferences prefs = SharedPreferencesWrapper.getInstance(getActivity(), SHARED_PREFERENCES_NAME, MODE_PRIVATE); + final SharedPreferences.Editor editor = prefs.edit(); + editor.putString(KEY_CONSUMER_KEY, ParseUtils.parseString(editConsumerKey.getText())); + editor.putString(KEY_CONSUMER_SECRET, ParseUtils.parseString(editConsumerSecret.getText())); + editor.apply(); + } + }); + final AlertDialog dialog = builder.create(); + dialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + final EditText editConsumerKey = (EditText) ((Dialog) dialog).findViewById(R.id.consumer_key); + final EditText editConsumerSecret = (EditText) ((Dialog) dialog).findViewById(R.id.consumer_secret); + final SharedPreferences prefs = SharedPreferencesWrapper.getInstance(getActivity(), SHARED_PREFERENCES_NAME, MODE_PRIVATE); + editConsumerKey.setText(prefs.getString(KEY_CONSUMER_KEY, null)); + editConsumerSecret.setText(prefs.getString(KEY_CONSUMER_SECRET, null)); + } + }); + return dialog; + } + } } diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java b/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java index e804520f4..2065186e5 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/Utils.java @@ -3839,6 +3839,12 @@ public final class Utils implements Constants { textView.setText(text); } + public static boolean isCustomConsumerKeySecret(String consumerKey, String consumerSecret) { + if (TextUtils.isEmpty(consumerKey) || TextUtils.isEmpty(consumerSecret)) return false; + return (!TWITTER_CONSUMER_KEY.equals(consumerKey) && !TWITTER_CONSUMER_SECRET.equals(consumerKey)) + && (!TWITTER_CONSUMER_KEY_LEGACY.equals(consumerKey) && !TWITTER_CONSUMER_SECRET_LEGACY.equals(consumerSecret)); + } + static class UtilsL { @TargetApi(Build.VERSION_CODES.LOLLIPOP) diff --git a/twidere/src/main/res/layout/dialog_set_consumer_key_secret.xml b/twidere/src/main/res/layout/dialog_set_consumer_key_secret.xml new file mode 100644 index 000000000..c6dba64e0 --- /dev/null +++ b/twidere/src/main/res/layout/dialog_set_consumer_key_secret.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml index 23b82ed6a..5f429e7f9 100644 --- a/twidere/src/main/res/values/strings.xml +++ b/twidere/src/main/res/values/strings.xml @@ -769,4 +769,5 @@ This month Media preload On mobile network + Twidere is reaching token limit, you will have to create an app at https://apps.twitter.com/ and paste consumer key and secret below.\nIf you continue using default key, you may not be able to sign in. \ No newline at end of file