From 9bad5024ff2fe13d9fe366ed40a2ea8662620c18 Mon Sep 17 00:00:00 2001 From: Alex Ning Date: Wed, 21 Aug 2019 16:21:17 +0800 Subject: [PATCH] Fixed getting same notifications for different accounts (for real this time). Add a settings acivity but with no use now. Minor bugs fixed. Minor UI tweaks. --- .idea/assetWizardSettings.xml | 4 +- .idea/caches/build_file_checksums.ser | Bin 533 -> 533 bytes .idea/caches/gradle_models.ser | Bin 267941 -> 270734 bytes app/build.gradle | 5 +- app/src/main/AndroidManifest.xml | 7 +- .../java/Settings/MainPreferenceFragment.java | 18 +++ .../NotificationPreferenceFragment.java | 20 ++++ .../infinityforreddit/AppModule.java | 3 +- .../infinityforreddit/MainActivity.java | 2 + .../infinityforreddit/PostFragment.java | 1 - .../infinityforreddit/PostImageActivity.java | 4 +- .../infinityforreddit/PostVideoActivity.java | 5 +- .../PullNotificationWorker.java | 83 +++++++++----- .../infinityforreddit/SettingsActivity.java | 103 ++++++++++++++++++ .../ic_error_outline_black_24dp.xml | 9 ++ .../ic_outline_access_time_24px.xml | 9 ++ .../ic_outline_color_lens_24px.xml | 21 ++++ .../ic_outline_notifications_24px.xml | 9 ++ .../drawable/ic_outline_access_time_24px.xml | 9 ++ .../drawable/ic_outline_color_lens_24px.xml | 21 ++++ .../ic_outline_notifications_24px.xml | 9 ++ app/src/main/res/layout/fragment_post.xml | 1 - app/src/main/res/layout/settings_activity.xml | 26 +++++ app/src/main/res/values/arrays.xml | 33 ++++++ app/src/main/res/values/strings.xml | 13 ++- app/src/main/res/values/styles.xml | 4 + app/src/main/res/xml/main_preferences.xml | 25 +++++ .../main/res/xml/notification_preferences.xml | 20 ++++ 28 files changed, 424 insertions(+), 40 deletions(-) create mode 100644 app/src/main/java/Settings/MainPreferenceFragment.java create mode 100644 app/src/main/java/Settings/NotificationPreferenceFragment.java create mode 100644 app/src/main/java/ml/docilealligator/infinityforreddit/SettingsActivity.java create mode 100644 app/src/main/res/drawable-night/ic_error_outline_black_24dp.xml create mode 100644 app/src/main/res/drawable-night/ic_outline_access_time_24px.xml create mode 100644 app/src/main/res/drawable-night/ic_outline_color_lens_24px.xml create mode 100644 app/src/main/res/drawable-night/ic_outline_notifications_24px.xml create mode 100644 app/src/main/res/drawable/ic_outline_access_time_24px.xml create mode 100644 app/src/main/res/drawable/ic_outline_color_lens_24px.xml create mode 100644 app/src/main/res/drawable/ic_outline_notifications_24px.xml create mode 100644 app/src/main/res/layout/settings_activity.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/xml/main_preferences.xml create mode 100644 app/src/main/res/xml/notification_preferences.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index dd08719b..43d6177f 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -35,9 +35,9 @@ - + - + diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 4b09346aaf002918beef32a7ea78c0dc728410de..63209b6ab6a5abfa06a97d3874768784c5afdb20 100644 GIT binary patch delta 33 pcmbQrGL>b*43w}%SkwR>z@xB diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser index e2b6be3f85659ef1304f97b0fe93fbc11b0bafe1..b1d135761483e483b83d35274a4b2b733211c3ac 100644 GIT binary patch delta 23995 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%0ARaWGPV?2>ADO54QdHT=bZUHXiGa>n$MYAB;^ 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 diff --git a/app/build.gradle b/app/build.gradle index 67c0ed85..0f78862a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -58,8 +58,8 @@ dependencies { annotationProcessor "androidx.lifecycle:lifecycle-compiler:$rootProject.archLifecycleVersion" implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implementation 'io.reactivex.rxjava2:rxjava:2.2.0' - implementation 'com.squareup.retrofit2:retrofit:2.5.0' - implementation 'com.squareup.retrofit2:converter-scalars:2.4.0' + implementation 'com.squareup.retrofit2:retrofit:2.6.1' + implementation 'com.squareup.retrofit2:converter-scalars:2.6.1' implementation 'jp.wasabeef:glide-transformations:4.0.0' implementation 'com.google.dagger:dagger:2.17' annotationProcessor 'com.google.dagger:dagger-compiler:2.17' @@ -80,4 +80,5 @@ dependencies { implementation 'com.evernote:android-state:1.4.1' annotationProcessor 'com.evernote:android-state-processor:1.4.1' implementation "androidx.work:work-runtime:2.2.0" + implementation "androidx.preference:preference:1.1.0-rc01" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 674b1642..5b41bd5d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,9 +20,14 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:usesCleartextTraffic="true"> + { drawer.closeDrawers(); + Intent intent = new Intent(MainActivity.this, SettingsActivity.class); + startActivity(intent); }); } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java index f18e3c5a..138747d3 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostFragment.java @@ -60,7 +60,6 @@ public class PostFragment extends Fragment implements FragmentCommunicator { private static final String IS_IN_LAZY_MODE_STATE = "IILMS"; - @BindView(R.id.coordinator_layout_post_fragment) CoordinatorLayout mCoordinatorLayout; @BindView(R.id.recycler_view_post_fragment) RecyclerView mPostRecyclerView; @BindView(R.id.progress_bar_post_fragment) CircleProgressBar mProgressBar; @BindView(R.id.fetch_post_info_linear_layout_post_fragment) LinearLayout mFetchPostInfoLinearLayout; diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java index 7343f259..98287035 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostImageActivity.java @@ -496,8 +496,8 @@ public class PostImageActivity extends AppCompatActivity implements FlairBottomS startActivity(intent); finish(); } else { - mMemu.getItem(R.id.action_send_post_image_activity).setEnabled(true); - mMemu.getItem(R.id.action_send_post_image_activity).getIcon().setAlpha(255); + mMemu.findItem(R.id.action_send_post_image_activity).setEnabled(true); + mMemu.findItem(R.id.action_send_post_image_activity).getIcon().setAlpha(255); if (submitImagePostEvent.errorMessage == null || submitImagePostEvent.errorMessage.equals("")) { Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show(); } else { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java index f9204444..1e9e5a02 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PostVideoActivity.java @@ -489,6 +489,9 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS public void onSubmitVideoPostEvent(SubmitVideoPostEvent submitVideoPostEvent) { isPosting = false; mPostingSnackbar.dismiss(); + mMemu.findItem(R.id.action_send_post_video_activity).setEnabled(true); + mMemu.findItem(R.id.action_send_post_video_activity).getIcon().setAlpha(255); + if(submitVideoPostEvent.postSuccess) { Intent intent = new Intent(this, ViewUserDetailActivity.class); intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, @@ -498,8 +501,6 @@ public class PostVideoActivity extends AppCompatActivity implements FlairBottomS } else if(submitVideoPostEvent.errorProcessingVideo) { Snackbar.make(coordinatorLayout, R.string.error_processing_video, Snackbar.LENGTH_SHORT).show(); } else { - mMemu.getItem(R.id.action_send_post_video_activity).setEnabled(true); - mMemu.getItem(R.id.action_send_post_video_activity).getIcon().setAlpha(255); if (submitVideoPostEvent.errorMessage == null || submitVideoPostEvent.errorMessage.equals("")) { Snackbar.make(coordinatorLayout, R.string.post_failed, Snackbar.LENGTH_SHORT).show(); } else { diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java index 0a90e9a4..e53f43e5 100644 --- a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java @@ -25,6 +25,7 @@ import javax.inject.Inject; import javax.inject.Named; import Account.Account; +import retrofit2.Call; import retrofit2.Response; import retrofit2.Retrofit; @@ -37,6 +38,10 @@ public class PullNotificationWorker extends Worker { @Named("oauth_without_authenticator") Retrofit mOauthWithoutAuthenticatorRetrofit; + @Inject + @Named("no_oauth") + Retrofit mRetrofit; + @Inject RedditDataRoomDatabase redditDataRoomDatabase; @@ -56,9 +61,10 @@ public class PullNotificationWorker extends Worker { List accounts = redditDataRoomDatabase.accountDao().getAllAccounts(); for(int accountIndex = 0; accountIndex < accounts.size(); accountIndex++) { Account account = accounts.get(accountIndex); + String accountName = account.getUsername(); - Response response = fetchMessages(account); + Response response = fetchMessages(account, 1); if(response != null && response.isSuccessful()) { Log.i("workmanager", "has response"); @@ -162,56 +168,81 @@ public class PullNotificationWorker extends Worker { Log.i("workmanager", "message size " + messages.size()); } else { - Log.i("workmanager", "retry1"); - return Result.retry(); + Log.i("workmanager", "no message"); + return Result.success(); } } else { if(response != null) { - Log.i("workmanager", "retry2 " + response.code()); + Log.i("workmanager", "retry1 " + response.code()); } return Result.retry(); } } - } catch (IOException | JSONException e) { + } catch (IOException e) { e.printStackTrace(); - Log.i("workmanager", "retry3"); + Log.i("workmanager", "retry2"); return Result.retry(); + } catch (JSONException e) { + e.printStackTrace(); + Log.i("workmanager", "json failure"); + return Result.failure(); } Log.i("workmanager", "success"); return Result.success(); } - private Response fetchMessages(Account account) throws IOException, JSONException { - Response response = mOauthWithoutAuthenticatorRetrofit.create(RedditAPI.class) + private Response fetchMessages(Account account, int retryCount) throws IOException, JSONException { + if(retryCount < 0) { + return null; + } + + Call call = mOauthWithoutAuthenticatorRetrofit.create(RedditAPI.class) .getMessages(RedditUtils.getOAuthHeader(account.getAccessToken()), - FetchMessages.WHERE_UNREAD, null).execute(); + FetchMessages.WHERE_INBOX, null); + Response response = call.execute(); if(response.isSuccessful()) { return response; } else { if(response.code() == 401) { - String refreshToken = account.getRefreshToken(); - - Map params = new HashMap<>(); - params.put(RedditUtils.GRANT_TYPE_KEY, RedditUtils.GRANT_TYPE_REFRESH_TOKEN); - params.put(RedditUtils.REFRESH_TOKEN_KEY, refreshToken); - - Response accessTokenResponse = mOauthWithoutAuthenticatorRetrofit.create(RedditAPI.class) - .getAccessToken(RedditUtils.getHttpBasicAuthHeader(), params).execute(); - if(accessTokenResponse.isSuccessful() && accessTokenResponse.body() != null) { - JSONObject jsonObject = new JSONObject((String) accessTokenResponse.body()); - String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY); - account.setAccessToken(newAccessToken); - redditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken); - - return fetchMessages(account); - } else { - return null; + String accessToken = refreshAccessToken(account); + if(!accessToken.equals("")) { + return fetchMessages(account, retryCount - 1); } + + return null; } else { return null; } } } + + private String refreshAccessToken(Account account) { + String refreshToken = account.getRefreshToken(); + + RedditAPI api = mRetrofit.create(RedditAPI.class); + + Map params = new HashMap<>(); + params.put(RedditUtils.GRANT_TYPE_KEY, RedditUtils.GRANT_TYPE_REFRESH_TOKEN); + params.put(RedditUtils.REFRESH_TOKEN_KEY, refreshToken); + + Call accessTokenCall = api.getAccessToken(RedditUtils.getHttpBasicAuthHeader(), params); + try { + Response response = accessTokenCall.execute(); + if(response.isSuccessful() && response.body() != null) { + JSONObject jsonObject = new JSONObject(response.body().toString()); + String newAccessToken = jsonObject.getString(RedditUtils.ACCESS_TOKEN_KEY); + redditDataRoomDatabase.accountDao().changeAccessToken(account.getUsername(), newAccessToken); + + Log.i("access token", newAccessToken); + return newAccessToken; + } + return ""; + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + + return ""; + } } diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/SettingsActivity.java b/app/src/main/java/ml/docilealligator/infinityforreddit/SettingsActivity.java new file mode 100644 index 00000000..1ae29994 --- /dev/null +++ b/app/src/main/java/ml/docilealligator/infinityforreddit/SettingsActivity.java @@ -0,0 +1,103 @@ +package ml.docilealligator.infinityforreddit; + +import android.content.res.Configuration; +import android.os.Build; +import android.os.Bundle; +import android.view.MenuItem; +import android.view.View; +import android.view.Window; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.preference.Preference; +import androidx.preference.PreferenceFragmentCompat; + +import Settings.MainPreferenceFragment; +import butterknife.BindView; +import butterknife.ButterKnife; + +public class SettingsActivity extends AppCompatActivity implements + PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { + + private static final String TITLE_STATE = "TS"; + + @BindView(R.id.toolbar_settings_activity) Toolbar toolbar; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.settings_activity); + + ButterKnife.bind(this); + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Window window = getWindow(); + if((getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) != Configuration.UI_MODE_NIGHT_YES) { + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR); + } + window.setNavigationBarColor(ContextCompat.getColor(this, R.color.navBarColor)); + } + + setSupportActionBar(toolbar); + + if (savedInstanceState == null) { + getSupportFragmentManager() + .beginTransaction() + .replace(R.id.frame_layout_settings_activity, new MainPreferenceFragment()) + .commit(); + } else { + setTitle(savedInstanceState.getCharSequence(TITLE_STATE)); + } + getSupportFragmentManager().addOnBackStackChangedListener(() -> { + if (getSupportFragmentManager().getBackStackEntryCount() == 0) { + setTitle(R.string.settings_activity_label); + } + }); + + + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if(item.getItemId() == android.R.id.home) { + onBackPressed(); + return true; + } + return false; + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + outState.putCharSequence(TITLE_STATE, getTitle()); + } + + @Override + public boolean onSupportNavigateUp() { + if (getSupportFragmentManager().popBackStackImmediate()) { + return true; + } + return super.onSupportNavigateUp(); + } + + @Override + public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) { + // Instantiate the new Fragment + final Bundle args = pref.getExtras(); + final Fragment fragment = getSupportFragmentManager().getFragmentFactory().instantiate( + getClassLoader(), + pref.getFragment()); + fragment.setArguments(args); + fragment.setTargetFragment(caller, 0); + + getSupportFragmentManager().beginTransaction() + .replace(R.id.frame_layout_settings_activity, fragment) + .addToBackStack(null) + .commit(); + setTitle(pref.getTitle()); + return true; + } +} diff --git a/app/src/main/res/drawable-night/ic_error_outline_black_24dp.xml b/app/src/main/res/drawable-night/ic_error_outline_black_24dp.xml new file mode 100644 index 00000000..e7d3eb31 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_error_outline_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_outline_access_time_24px.xml b/app/src/main/res/drawable-night/ic_outline_access_time_24px.xml new file mode 100644 index 00000000..a846b915 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_outline_access_time_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_outline_color_lens_24px.xml b/app/src/main/res/drawable-night/ic_outline_color_lens_24px.xml new file mode 100644 index 00000000..d1bc2624 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_outline_color_lens_24px.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable-night/ic_outline_notifications_24px.xml b/app/src/main/res/drawable-night/ic_outline_notifications_24px.xml new file mode 100644 index 00000000..43d52df4 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_outline_notifications_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_access_time_24px.xml b/app/src/main/res/drawable/ic_outline_access_time_24px.xml new file mode 100644 index 00000000..dcb0d6ec --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_access_time_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_outline_color_lens_24px.xml b/app/src/main/res/drawable/ic_outline_color_lens_24px.xml new file mode 100644 index 00000000..d1bc2624 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_color_lens_24px.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_outline_notifications_24px.xml b/app/src/main/res/drawable/ic_outline_notifications_24px.xml new file mode 100644 index 00000000..0c2c90a7 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_notifications_24px.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/fragment_post.xml b/app/src/main/res/layout/fragment_post.xml index dcacaf49..9083b01d 100644 --- a/app/src/main/res/layout/fragment_post.xml +++ b/app/src/main/res/layout/fragment_post.xml @@ -3,7 +3,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:id="@+id/coordinator_layout_post_fragment" tools:application="ml.docilealligator.infinityforreddit.PostFragment"> + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 00000000..99955ed6 --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,33 @@ + + + 1 hour + 2 hours + 3 hours + 4 hours + 6 hours + 12 hours + 1 day + + + + 1 + 2 + 3 + 4 + 6 + 12 + 24 + + + + Light Theme + Dark Theme + Device Default + + + + 0 + 1 + 2 + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5a245f76..dba73658 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,7 +13,8 @@ Subreddits Edit Post Edit Comment - Inbox + Inbox + Settings Open navigation drawer Close navigation drawer @@ -239,4 +240,14 @@ Post Account Switched. So all other pages are gone. + + Account + Notification + Enable Notifications + Check Notifications Interval + Theme + Light Theme + Dark Theme + Device default + Enable NSFW diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0b20ce0e..2b97cc0d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -60,4 +60,8 @@ @color/primaryTextColor + + diff --git a/app/src/main/res/xml/main_preferences.xml b/app/src/main/res/xml/main_preferences.xml new file mode 100644 index 00000000..5d624d7f --- /dev/null +++ b/app/src/main/res/xml/main_preferences.xml @@ -0,0 +1,25 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/notification_preferences.xml b/app/src/main/res/xml/notification_preferences.xml new file mode 100644 index 00000000..1bb81106 --- /dev/null +++ b/app/src/main/res/xml/notification_preferences.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file