Add custom API key support

Signed-off-by: androidacy-user <opensource@androidacy.com>
pull/192/head
androidacy-user 2 years ago
parent f76ad4154f
commit aad605cbd0

@ -12,6 +12,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.inputmethod.EditorInfo;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.Toast;
@ -337,6 +338,7 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity {
public static class RepoFragment extends PreferenceFragmentCompat {
private static final int CUSTOM_REPO_ENTRIES = 5;
@SuppressLint("RestrictedApi")
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
getPreferenceManager().setSharedPreferencesName("mmm");
@ -353,14 +355,16 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity {
.getString("pref_androidacy_api_token", "");
// Create the pref_androidacy_repo_api_key text input with validation
EditTextPreference prefAndroidacyRepoApiKey = findPreference("pref_androidacy_repo_api_key");
prefAndroidacyRepoApiKey.setKey("pref_androidacy_repo_api_key");
prefAndroidacyRepoApiKey.setOnBindEditTextListener(editText -> {
editText.setSingleLine();
// Make the single line wrap
editText.setHorizontallyScrolling(false);
// Set the height to the height of 2 lines
editText.setHeight(editText.getLineHeight() * 2);
editText.setHeight(editText.getLineHeight() * 3);
// Make ok button say "Save"
editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
});
prefAndroidacyRepoApiKey.setPositiveButtonText(R.string.save_api_key);
prefAndroidacyRepoApiKey.setOnPreferenceChangeListener((preference, newValue) -> {
// Curious if this actually works - so crash the app on purpose
// throw new RuntimeException("This is a test crash");
@ -387,6 +391,14 @@ public class SettingsActivity extends FoxActivity implements LanguageActivity {
if (apiKey.length() < 64) {
new Handler(Looper.getMainLooper()).post(() -> {
progressDialog.dismiss();
// Save the original key
MainApplication.getSharedPreferences().edit()
.putString("pref_androidacy_api_token", originalApiKey).apply();
// Re-show the dialog with an error
prefAndroidacyRepoApiKey.performClick();
// Show error
prefAndroidacyRepoApiKey.setDialogMessage(getString(R.string.api_key_invalid));
// Set the error color
Toast.makeText(getContext(), R.string.api_key_invalid, Toast.LENGTH_SHORT).show();
});
return;

@ -158,10 +158,11 @@
<string name="api_key_summary">Use a custom API key for Androidacy. Useful for premium subscribers, to remove ads and more.</string>
<string name="api_key_not_set">Androidacy API key is empty</string>
<string name="api_key_set">Current Androidacy API key</string>
<string name="api_key_invalid">Could not validate API key. Please try again.</string>
<string name="api_key_invalid">Could not validate API key. Please check it and try again.</string>
<string name="api_key_valid">API key is valid.</string>
<string name="checking_api_key">Validating API key...</string>
<string name="validating_api_key">Validating API key...</string>
<string name="please_wait">Please wait</string>
<string name="api_key_removed">Successfully reset API key</string>
<string name="save_api_key">Validate</string>
</resources>

@ -51,6 +51,7 @@
app:dialogIcon="@drawable/ic_baseline_vpn_key_24"
app:dependency="pref_androidacy_repo_enabled"
android:inputType="text"
android:selectAllOnFocus="true"
android:imeOptions="actionDone" />
<SwitchPreferenceCompat
app:defaultValue="false"

Loading…
Cancel
Save