summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorstom79 <tschneider.ac@gmail.com>2019-01-05 12:17:38 +0100
committerstom79 <tschneider.ac@gmail.com>2019-01-05 12:17:38 +0100
commiteefe1edc3b8cd924d0892a2d1aa53e3ce21ec558 (patch)
tree29316c3dbf0b5493d37eb3a372b3e5bc63e7a1af /app
parent7c298dcec0251af45df6fd028390816f5167d857 (diff)
Prepares db for storing information for refreshing the token #699
Diffstat (limited to 'app')
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java10
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateAccountInfoAsyncTask.java10
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java27
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java12
-rw-r--r--app/src/main/java/fr/gouv/etalab/mastodon/sqlite/Sqlite.java10
5 files changed, 64 insertions, 5 deletions
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
index 71d170f76..38976996b 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/LoginActivity.java
@@ -120,12 +120,15 @@ public class LoginActivity extends BaseActivity {
try {
resobj = new JSONObject(response);
String token = resobj.get("access_token").toString();
+ String refresh_token = null;
+ if( resobj.has("refresh_token"))
+ refresh_token = resobj.get("access_token").toString();
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token);
editor.apply();
//Update the account with the token;
- new UpdateAccountInfoAsyncTask(LoginActivity.this, token, instance, peertube_instance.isChecked()?UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE:UpdateAccountInfoAsyncTask.SOCIAL.MASTODON).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ new UpdateAccountInfoAsyncTask(LoginActivity.this, token, client_id, client_secret, refresh_token, instance, peertube_instance.isChecked()?UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE:UpdateAccountInfoAsyncTask.SOCIAL.MASTODON).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} catch (JSONException ignored) {}
} catch (Exception ignored) {}
}}).start();
@@ -510,12 +513,15 @@ public class LoginActivity extends BaseActivity {
try {
resobj = new JSONObject(response);
String token = resobj.get("access_token").toString();
+ String refresh_token = null;
+ if( resobj.has("refresh_token"))
+ refresh_token = resobj.get("access_token").toString();
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, token);
editor.apply();
//Update the account with the token;
- new UpdateAccountInfoAsyncTask(LoginActivity.this, token, instance, peertube_instance.isChecked()?UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE:UpdateAccountInfoAsyncTask.SOCIAL.MASTODON).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ new UpdateAccountInfoAsyncTask(LoginActivity.this, token, client_id, client_secret, refresh_token, instance, peertube_instance.isChecked()?UpdateAccountInfoAsyncTask.SOCIAL.PEERTUBE:UpdateAccountInfoAsyncTask.SOCIAL.MASTODON).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} catch (JSONException ignored) {ignored.printStackTrace();}
}
});
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateAccountInfoAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateAccountInfoAsyncTask.java
index 0a1bf2bbc..bc229298e 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateAccountInfoAsyncTask.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/UpdateAccountInfoAsyncTask.java
@@ -40,7 +40,7 @@ import fr.gouv.etalab.mastodon.sqlite.Sqlite;
public class UpdateAccountInfoAsyncTask extends AsyncTask<Void, Void, Void> {
- private String token;
+ private String token, client_id, client_secret, refresh_token;
private String instance;
private WeakReference<Context> contextReference;
private SOCIAL social;
@@ -49,11 +49,14 @@ public class UpdateAccountInfoAsyncTask extends AsyncTask<Void, Void, Void> {
MASTODON,
PEERTUBE
}
- public UpdateAccountInfoAsyncTask(Context context, String token, String instance, SOCIAL social){
+ public UpdateAccountInfoAsyncTask(Context context, String token, String client_id, String client_secret, String refresh_token, String instance, SOCIAL social){
this.contextReference = new WeakReference<>(context);
this.token = token;
this.instance = instance;
this.social = social;
+ this.client_id = client_id;
+ this.client_secret = client_secret;
+ this.refresh_token = refresh_token;
}
@Override
@@ -79,6 +82,9 @@ public class UpdateAccountInfoAsyncTask extends AsyncTask<Void, Void, Void> {
token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null);
}
account.setToken(token);
+ account.setClient_id(client_id);
+ account.setClient_secret(client_secret);
+ account.setRefresh_token(refresh_token);
account.setInstance(instance);
SQLiteDatabase db = Sqlite.getInstance(this.contextReference.get(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
boolean userExists = new AccountDAO(this.contextReference.get(), db).userExist(account);
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java
index d34c368ba..21ce9150f 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java
@@ -106,6 +106,9 @@ public class Account implements Parcelable {
private String host;
private boolean isBot;
private String social;
+ private String client_id;
+ private String client_secret;
+ private String refresh_token;
protected Account(Parcel in) {
id = in.readString();
@@ -288,6 +291,30 @@ public class Account implements Parcelable {
this.uuid = uuid;
}
+ public String getClient_id() {
+ return client_id;
+ }
+
+ public void setClient_id(String client_id) {
+ this.client_id = client_id;
+ }
+
+ public String getClient_secret() {
+ return client_secret;
+ }
+
+ public void setClient_secret(String client_secret) {
+ this.client_secret = client_secret;
+ }
+
+ public String getRefresh_token() {
+ return refresh_token;
+ }
+
+ public void setRefresh_token(String refresh_token) {
+ this.refresh_token = refresh_token;
+ }
+
public enum followAction{
FOLLOW,
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java
index 35e91878e..10e70ede6 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/AccountDAO.java
@@ -70,6 +70,9 @@ public class AccountDAO {
values.put(Sqlite.COL_INSTANCE, account.getInstance());
values.put(Sqlite.COL_EMOJIS, Helper.emojisToStringStorage(account.getEmojis()));
values.put(Sqlite.COL_SOCIAL, account.getSocial());
+ values.put(Sqlite.COL_CLIENT_ID, account.getClient_id());
+ values.put(Sqlite.COL_CLIENT_SECRET, account.getClient_secret());
+ values.put(Sqlite.COL_REFRESH_TOKEN, account.getRefresh_token());
if( account.getToken() != null)
values.put(Sqlite.COL_OAUTHTOKEN, account.getToken());
@@ -108,6 +111,9 @@ public class AccountDAO {
values.put(Sqlite.COL_CREATED_AT, Helper.dateToString(account.getCreated_at()));
values.put(Sqlite.COL_INSTANCE, account.getInstance());
values.put(Sqlite.COL_EMOJIS, Helper.emojisToStringStorage(account.getEmojis()));
+ values.put(Sqlite.COL_CLIENT_ID, account.getClient_id());
+ values.put(Sqlite.COL_CLIENT_SECRET, account.getClient_secret());
+ values.put(Sqlite.COL_REFRESH_TOKEN, account.getRefresh_token());
if( account.getToken() != null)
values.put(Sqlite.COL_OAUTHTOKEN, account.getToken());
@@ -246,6 +252,9 @@ public class AccountDAO {
account.setEmojis(Helper.restoreEmojisFromString(c.getString(c.getColumnIndex(Sqlite.COL_EMOJIS))));
account.setToken(c.getString(c.getColumnIndex(Sqlite.COL_OAUTHTOKEN)));
account.setSocial(c.getString(c.getColumnIndex(Sqlite.COL_SOCIAL))!=null?c.getString(c.getColumnIndex(Sqlite.COL_SOCIAL)):"MASTODON");
+ account.setClient_id(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_ID)));
+ account.setClient_secret(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_SECRET)));
+ account.setRefresh_token(c.getString(c.getColumnIndex(Sqlite.COL_REFRESH_TOKEN)));
//Close the cursor
c.close();
@@ -285,6 +294,9 @@ public class AccountDAO {
account.setInstance(c.getString(c.getColumnIndex(Sqlite.COL_INSTANCE)));
account.setToken(c.getString(c.getColumnIndex(Sqlite.COL_OAUTHTOKEN)));
account.setSocial(c.getString(c.getColumnIndex(Sqlite.COL_SOCIAL))!=null?c.getString(c.getColumnIndex(Sqlite.COL_SOCIAL)):"MASTODON");
+ account.setClient_id(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_ID)));
+ account.setClient_secret(c.getString(c.getColumnIndex(Sqlite.COL_CLIENT_SECRET)));
+ account.setRefresh_token(c.getString(c.getColumnIndex(Sqlite.COL_REFRESH_TOKEN)));
accounts.add(account);
}
//Close the cursor
diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/Sqlite.java b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/Sqlite.java
index a87bba9c4..e5dcbb8e2 100644
--- a/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/Sqlite.java
+++ b/app/src/main/java/fr/gouv/etalab/mastodon/sqlite/Sqlite.java
@@ -26,7 +26,7 @@ import android.database.sqlite.SQLiteOpenHelper;
public class Sqlite extends SQLiteOpenHelper {
- public static final int DB_VERSION = 23;
+ public static final int DB_VERSION = 24;
public static final String DB_NAME = "mastodon_etalab_db";
public static SQLiteDatabase db;
private static Sqlite sInstance;
@@ -166,6 +166,9 @@ public class Sqlite extends SQLiteOpenHelper {
static final String COL_PINNED = "PINNED";
static final String COL_DATE_BACKUP = "DATE_BACKUP";
static final String COL_CARD = "CARD";
+ static final String COL_CLIENT_ID = "CLIENT_ID";
+ static final String COL_CLIENT_SECRET = "CLIENT_SECRET";
+ static final String COL_REFRESH_TOKEN = "REFRESH_TOKEN";
private final String CREATE_TABLE_STATUSES_CACHE = "CREATE TABLE " + TABLE_STATUSES_CACHE + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
@@ -177,6 +180,7 @@ public class Sqlite extends SQLiteOpenHelper {
+ COL_REBLOGGED + " INTEGER, " + COL_FAVOURITED + " INTEGER, " + COL_MUTED + " INTEGER, " + COL_SENSITIVE + " INTEGER, "
+ COL_SPOILER_TEXT + " TEXT, " + COL_VISIBILITY + " TEXT NOT NULL, " + COL_MEDIA_ATTACHMENTS + " TEXT," + COL_CARD + " TEXT,"
+ COL_MENTIONS + " TEXT, " + COL_TAGS + " TEXT, " + COL_APPLICATION + " TEXT,"
+ + COL_CLIENT_ID + " TEXT, " + COL_CLIENT_SECRET + " TEXT, " + COL_REFRESH_TOKEN + " TEXT,"
+ COL_LANGUAGE + " TEXT," + COL_PINNED + " INTEGER)";
private final String CREATE_UNIQUE_CACHE_INDEX = "CREATE UNIQUE INDEX instance_statusid on "
@@ -309,6 +313,10 @@ public class Sqlite extends SQLiteOpenHelper {
}
case 22:
db.execSQL("ALTER TABLE " + TABLE_USER_ACCOUNT + " ADD COLUMN " + COL_SOCIAL + " TEXT");
+ case 23:
+ db.execSQL("ALTER TABLE " + TABLE_USER_ACCOUNT + " ADD COLUMN " + COL_CLIENT_ID + " TEXT");
+ db.execSQL("ALTER TABLE " + TABLE_USER_ACCOUNT + " ADD COLUMN " + COL_CLIENT_SECRET + " TEXT");
+ db.execSQL("ALTER TABLE " + TABLE_USER_ACCOUNT + " ADD COLUMN " + COL_REFRESH_TOKEN + " TEXT");
default:
break;
}