This commit is contained in:
tom79 2019-05-31 17:25:17 +02:00
parent c37f1584d1
commit 4c848f8ac8
3 changed files with 17 additions and 20 deletions

View File

@ -819,7 +819,8 @@ public class API {
String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s", statusId)), 60, null, prefKeyOauthTokenT); String response = httpsConnection.get(getAbsoluteUrl(String.format("/statuses/%s", statusId)), 60, null, prefKeyOauthTokenT);
Status status = parseStatuses(context, new JSONObject(response)); Status status = parseStatuses(context, new JSONObject(response));
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
new TimelineCacheDAO(context, db).update(status.getId(), response); Account account = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT);
new TimelineCacheDAO(context, db).update(status.getId(), response, account.getId(), account.getInstance());
statuses.add(status); statuses.add(status);
} catch (HttpsConnection.HttpsConnectionException e) { } catch (HttpsConnection.HttpsConnectionException e) {
setError(e.getStatusCode(), e); setError(e.getStatusCode(), e);
@ -1078,7 +1079,7 @@ public class API {
String response = httpsConnection.get(getAbsoluteUrl("/timelines/home"), 60, params, prefKeyOauthTokenT); String response = httpsConnection.get(getAbsoluteUrl("/timelines/home"), 60, params, prefKeyOauthTokenT);
apiResponse.setSince_id(httpsConnection.getSince_id()); apiResponse.setSince_id(httpsConnection.getSince_id());
apiResponse.setMax_id(httpsConnection.getMax_id()); apiResponse.setMax_id(httpsConnection.getMax_id());
statuses = parseStatuses(context, new JSONArray(response), true); statuses = parseStatusesForCache(context, new JSONArray(response));
} catch (HttpsConnection.HttpsConnectionException e) { } catch (HttpsConnection.HttpsConnectionException e) {
setError(e.getStatusCode(), e); setError(e.getStatusCode(), e);
} catch (NoSuchAlgorithmException e) { } catch (NoSuchAlgorithmException e) {
@ -2203,7 +2204,8 @@ public class API {
intentBC.putExtras(b); intentBC.putExtras(b);
LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC);
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
new TimelineCacheDAO(context, db).update(targetedId, resp); Account account = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT);
new TimelineCacheDAO(context, db).update(targetedId, resp, account.getId(), account.getInstance());
} }
} catch (HttpsConnection.HttpsConnectionException e) { } catch (HttpsConnection.HttpsConnectionException e) {
setError(e.getStatusCode(), e); setError(e.getStatusCode(), e);
@ -2366,8 +2368,9 @@ public class API {
intentBC.putExtras(b); intentBC.putExtras(b);
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
Status alreadyCached = new TimelineCacheDAO(context, db).getSingle(status.getId()); Status alreadyCached = new TimelineCacheDAO(context, db).getSingle(status.getId());
Account account = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT);
if (alreadyCached != null) { if (alreadyCached != null) {
new TimelineCacheDAO(context, db).update(status.getId(), response); new TimelineCacheDAO(context, db).update(status.getId(), response, account.getId(), account.getInstance());
} }
LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC);
return parsePoll(context, new JSONObject(response)); return parsePoll(context, new JSONObject(response));
@ -3856,7 +3859,7 @@ public class API {
* @param jsonArray JSONArray * @param jsonArray JSONArray
* @return List<Status> * @return List<Status>
*/ */
private static List<Status> parseStatuses(Context context, JSONArray jsonArray, boolean cached){ private List<Status> parseStatusesForCache(Context context, JSONArray jsonArray){
List<Status> statuses = new ArrayList<>(); List<Status> statuses = new ArrayList<>();
try { try {
@ -3865,12 +3868,11 @@ public class API {
JSONObject resobj = jsonArray.getJSONObject(i); JSONObject resobj = jsonArray.getJSONObject(i);
Status status = parseStatuses(context, resobj); Status status = parseStatuses(context, resobj);
if( cached) { SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); Status alreadyCached = new TimelineCacheDAO(context, db).getSingle(status.getId());
Status alreadyCached = new TimelineCacheDAO(context, db).getSingle(status.getId()); if (alreadyCached == null) {
if (alreadyCached == null) { Account account = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT);
new TimelineCacheDAO(context, db).insert(status.getId(), resobj.toString()); new TimelineCacheDAO(context, db).insert(status.getId(), resobj.toString(), account.getId(), account.getInstance());
}
} }
i++; i++;
statuses.add(status); statuses.add(status);

View File

@ -1395,7 +1395,8 @@ public class GNUAPI {
intentBC.putExtras(b); intentBC.putExtras(b);
LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC); LocalBroadcastManager.getInstance(context).sendBroadcast(intentBC);
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
new TimelineCacheDAO(context, db).update(targetedId, resp); Account account = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT);
new TimelineCacheDAO(context, db).update(targetedId, resp, account.getId(), account.getToken());
}else if( statusAction == API.StatusAction.UNSTATUS){ }else if( statusAction == API.StatusAction.UNSTATUS){
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
new TimelineCacheDAO(context, db).remove(targetedId); new TimelineCacheDAO(context, db).remove(targetedId);

View File

@ -53,10 +53,7 @@ public class TimelineCacheDAO {
* Insert a status in database * Insert a status in database
* @return boolean * @return boolean
*/ */
public long insert(String statusId, String jsonString) { public long insert(String statusId, String jsonString, String userId, String instance) {
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
String instance = Helper.getLiveInstance(context);
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(Sqlite.COL_INSTANCE, instance); values.put(Sqlite.COL_INSTANCE, instance);
values.put(Sqlite.COL_STATUS_ID, statusId); values.put(Sqlite.COL_STATUS_ID, statusId);
@ -78,10 +75,7 @@ public class TimelineCacheDAO {
/** /**
* Update a status in database * Update a status in database
*/ */
public void update(String statusId, String jsonString) { public void update(String statusId, String jsonString, String userId, String instance) {
SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
String instance = Helper.getLiveInstance(context);
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(Sqlite.COL_DATE, Helper.dateToString(new Date())); values.put(Sqlite.COL_DATE, Helper.dateToString(new Date()));
values.put(Sqlite.COL_CACHE, jsonString); values.put(Sqlite.COL_CACHE, jsonString);