aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Ning <chineseperson5@gmail.com>2021-01-21 06:37:23 +0000
committerAlex Ning <chineseperson5@gmail.com>2021-01-21 06:37:23 +0000
commit4ae21a18f027bc7cb6dac19738b01a138df747d5 (patch)
treed70f32ef9e4911e93018f486c5a143f1e5982ce9
parente19dd8c31f2128b77ee08c8475919829b89d5e4f (diff)
downloadinfinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.tar
infinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.tar.gz
infinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.tar.bz2
infinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.tar.lz
infinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.tar.xz
infinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.tar.zst
infinity-for-reddit-4ae21a18f027bc7cb6dac19738b01a138df747d5.zip
Handle no new refresh token.
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java10
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java8
-rw-r--r--app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java3
3 files changed, 16 insertions, 5 deletions
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java b/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java
index 3c912221..529f5ad2 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/AccessTokenAuthenticator.java
@@ -10,8 +10,8 @@ import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import ml.docilealligator.infinityforreddit.apis.RedditAPI;
import ml.docilealligator.infinityforreddit.account.Account;
+import ml.docilealligator.infinityforreddit.apis.RedditAPI;
import ml.docilealligator.infinityforreddit.utils.APIUtils;
import okhttp3.Authenticator;
import okhttp3.Headers;
@@ -71,8 +71,12 @@ class AccessTokenAuthenticator implements Authenticator {
if (response.isSuccessful() && response.body() != null) {
JSONObject jsonObject = new JSONObject(response.body());
String newAccessToken = jsonObject.getString(APIUtils.ACCESS_TOKEN_KEY);
- String newRefreshToken = jsonObject.getString(APIUtils.REFRESH_TOKEN_KEY);
- mRedditDataRoomDatabase.accountDao().updateAccessTokenAndRefreshToken(account.getUsername(), newAccessToken, newRefreshToken);
+ String newRefreshToken = jsonObject.has(APIUtils.REFRESH_TOKEN_KEY) ? jsonObject.getString(APIUtils.REFRESH_TOKEN_KEY) : null;
+ if (newRefreshToken == null) {
+ mRedditDataRoomDatabase.accountDao().updateAccessToken(account.getUsername(), newAccessToken);
+ } else {
+ mRedditDataRoomDatabase.accountDao().updateAccessTokenAndRefreshToken(account.getUsername(), newAccessToken, newRefreshToken);
+ }
return newAccessToken;
}
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java
index 561f393b..773c96c1 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/PullNotificationWorker.java
@@ -249,8 +249,12 @@ public class PullNotificationWorker extends Worker {
if (response.isSuccessful() && response.body() != null) {
JSONObject jsonObject = new JSONObject(response.body());
String newAccessToken = jsonObject.getString(APIUtils.ACCESS_TOKEN_KEY);
- String newRefreshToken = jsonObject.getString(APIUtils.REFRESH_TOKEN_KEY);
- mRedditDataRoomDatabase.accountDao().updateAccessTokenAndRefreshToken(account.getUsername(), newAccessToken, newRefreshToken);
+ String newRefreshToken = jsonObject.has(APIUtils.REFRESH_TOKEN_KEY) ? jsonObject.getString(APIUtils.REFRESH_TOKEN_KEY) : null;
+ if (newRefreshToken == null) {
+ mRedditDataRoomDatabase.accountDao().updateAccessToken(account.getUsername(), newAccessToken);
+ } else {
+ mRedditDataRoomDatabase.accountDao().updateAccessTokenAndRefreshToken(account.getUsername(), newAccessToken, newRefreshToken);
+ }
return newAccessToken;
}
return "";
diff --git a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java
index 0f214f85..0bcb8d4e 100644
--- a/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java
+++ b/app/src/main/java/ml/docilealligator/infinityforreddit/account/AccountDao.java
@@ -52,4 +52,7 @@ public interface AccountDao {
@Query("UPDATE accounts SET access_token = :accessToken, refresh_token = :refreshToken WHERE username = :username")
void updateAccessTokenAndRefreshToken(String username, String accessToken, String refreshToken);
+
+ @Query("UPDATE accounts SET access_token = :accessToken WHERE username = :username")
+ void updateAccessToken(String username, String accessToken);
}