Fix remove/add list

This commit is contained in:
tom79 2019-08-23 16:53:42 +02:00
parent 31225c092d
commit 2187b3a990
3 changed files with 33 additions and 18 deletions

View File

@ -245,12 +245,13 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
} }
} }
} }
APIResponse apiResponse = null; APIResponse apiResponse;
if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) {
List<app.fedilab.android.client.Entities.List> lists = null; List<app.fedilab.android.client.Entities.List> listsAPI = null;
try { try {
apiResponse = new API(contextReference.get()).getLists(); apiResponse = new API(contextReference.get()).getLists();
lists = apiResponse.getLists(); listsAPI = apiResponse.getLists();
//Check potential duplicated lists in db
List<ManageTimelines> duplicated_id = new ArrayList<>(); List<ManageTimelines> duplicated_id = new ArrayList<>();
List<String> present_id = new ArrayList<>(); List<String> present_id = new ArrayList<>();
for (ManageTimelines manageTimeline : manageTimelines) { for (ManageTimelines manageTimeline : manageTimelines) {
@ -264,9 +265,9 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
} }
} }
manageTimelines.removeAll(duplicated_id); manageTimelines.removeAll(duplicated_id);
if (lists != null && lists.size() > 0) { if (listsAPI != null && listsAPI.size() > 0) {
//Loop through results //Loop through results
for (app.fedilab.android.client.Entities.List list : lists) { for (app.fedilab.android.client.Entities.List list : listsAPI) {
boolean isInDb = false; boolean isInDb = false;
ManageTimelines timelines_tmp = null; ManageTimelines timelines_tmp = null;
for (ManageTimelines manageTimeline : manageTimelines) { for (ManageTimelines manageTimeline : manageTimelines) {
@ -278,6 +279,7 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
break; break;
} }
} }
//The current list is not registred in the database
if (!isInDb) { if (!isInDb) {
ManageTimelines manageTL = new ManageTimelines(); ManageTimelines manageTL = new ManageTimelines();
manageTL.setListTimeline(list); manageTL.setListTimeline(list);
@ -285,30 +287,43 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
manageTL.setType(ManageTimelines.Type.LIST); manageTL.setType(ManageTimelines.Type.LIST);
manageTL.setPosition(manageTimelines.size()); manageTL.setPosition(manageTimelines.size());
new TimelinesDAO(contextReference.get(), db).insert(manageTL); new TimelinesDAO(contextReference.get(), db).insert(manageTL);
manageTimelines.add(manageTL);
} else { } else {
//Update list //Update list
timelines_tmp.setListTimeline(list); timelines_tmp.setListTimeline(list);
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp); new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
} }
} }
for (ManageTimelines manageTimelines : manageTimelines) { ArrayList<ManageTimelines> manageTimelinesToRemove = new ArrayList<>();
if (manageTimelines.getListTimeline() == null) for (ManageTimelines dbtTimelines : manageTimelines) {
if (dbtTimelines.getListTimeline() == null)
continue; continue;
boolean shouldBeRemoved = true; boolean shouldBeRemoved = true;
for (app.fedilab.android.client.Entities.List list : lists) { for (app.fedilab.android.client.Entities.List list : listsAPI) {
if (list.getId().equals(manageTimelines.getListTimeline().getId())) { if (list.getId().equals(dbtTimelines.getListTimeline().getId())) {
shouldBeRemoved = false; shouldBeRemoved = false;
} }
} }
if (shouldBeRemoved) { if (shouldBeRemoved) {
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines); new TimelinesDAO(contextReference.get(), db).remove(dbtTimelines);
manageTimelinesToRemove.add(dbtTimelines);
} }
} }
} else { if( manageTimelinesToRemove.size() > 0 ){
for (ManageTimelines manageTimelines : manageTimelines) { manageTimelines.removeAll(manageTimelinesToRemove);
if (manageTimelines.getListTimeline() == null) }
continue; } else { //No lists, all are removed if exist in db
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines); ArrayList<ManageTimelines> manageTimelinesToRemove = new ArrayList<>();
if( apiResponse.getError() == null) { //Only done if there is no errors when fetching lists
for (ManageTimelines manageTimelines : manageTimelines) {
if (manageTimelines.getListTimeline() == null)
continue;
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
manageTimelinesToRemove.add(manageTimelines);
}
if( manageTimelinesToRemove.size() > 0 ){
manageTimelines.removeAll(manageTimelinesToRemove);
}
} }
} }
} catch (Exception ignored) { } catch (Exception ignored) {

View File

@ -6,7 +6,7 @@ buildscript {
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:3.4.2' classpath 'com.android.tools.build:gradle:3.5.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files

View File

@ -1,6 +1,6 @@
#Thu Apr 18 13:00:25 CEST 2019 #Fri Aug 23 15:40:43 CEST 2019
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip