diff --git a/app/src/main/java/app/fedilab/android/asynctasks/SyncTimelinesAsyncTask.java b/app/src/main/java/app/fedilab/android/asynctasks/SyncTimelinesAsyncTask.java index 316af5db1..814713cb6 100644 --- a/app/src/main/java/app/fedilab/android/asynctasks/SyncTimelinesAsyncTask.java +++ b/app/src/main/java/app/fedilab/android/asynctasks/SyncTimelinesAsyncTask.java @@ -245,12 +245,13 @@ public class SyncTimelinesAsyncTask extends AsyncTask { } } } - APIResponse apiResponse = null; + APIResponse apiResponse; if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { - List lists = null; + List listsAPI = null; try { apiResponse = new API(contextReference.get()).getLists(); - lists = apiResponse.getLists(); + listsAPI = apiResponse.getLists(); + //Check potential duplicated lists in db List duplicated_id = new ArrayList<>(); List present_id = new ArrayList<>(); for (ManageTimelines manageTimeline : manageTimelines) { @@ -264,9 +265,9 @@ public class SyncTimelinesAsyncTask extends AsyncTask { } } manageTimelines.removeAll(duplicated_id); - if (lists != null && lists.size() > 0) { + if (listsAPI != null && listsAPI.size() > 0) { //Loop through results - for (app.fedilab.android.client.Entities.List list : lists) { + for (app.fedilab.android.client.Entities.List list : listsAPI) { boolean isInDb = false; ManageTimelines timelines_tmp = null; for (ManageTimelines manageTimeline : manageTimelines) { @@ -278,6 +279,7 @@ public class SyncTimelinesAsyncTask extends AsyncTask { break; } } + //The current list is not registred in the database if (!isInDb) { ManageTimelines manageTL = new ManageTimelines(); manageTL.setListTimeline(list); @@ -285,30 +287,43 @@ public class SyncTimelinesAsyncTask extends AsyncTask { manageTL.setType(ManageTimelines.Type.LIST); manageTL.setPosition(manageTimelines.size()); new TimelinesDAO(contextReference.get(), db).insert(manageTL); + manageTimelines.add(manageTL); } else { //Update list timelines_tmp.setListTimeline(list); new TimelinesDAO(contextReference.get(), db).update(timelines_tmp); } } - for (ManageTimelines manageTimelines : manageTimelines) { - if (manageTimelines.getListTimeline() == null) + ArrayList manageTimelinesToRemove = new ArrayList<>(); + for (ManageTimelines dbtTimelines : manageTimelines) { + if (dbtTimelines.getListTimeline() == null) continue; boolean shouldBeRemoved = true; - for (app.fedilab.android.client.Entities.List list : lists) { - if (list.getId().equals(manageTimelines.getListTimeline().getId())) { + for (app.fedilab.android.client.Entities.List list : listsAPI) { + if (list.getId().equals(dbtTimelines.getListTimeline().getId())) { shouldBeRemoved = false; } } if (shouldBeRemoved) { - new TimelinesDAO(contextReference.get(), db).remove(manageTimelines); + new TimelinesDAO(contextReference.get(), db).remove(dbtTimelines); + manageTimelinesToRemove.add(dbtTimelines); } } - } else { - for (ManageTimelines manageTimelines : manageTimelines) { - if (manageTimelines.getListTimeline() == null) - continue; - new TimelinesDAO(contextReference.get(), db).remove(manageTimelines); + if( manageTimelinesToRemove.size() > 0 ){ + manageTimelines.removeAll(manageTimelinesToRemove); + } + } else { //No lists, all are removed if exist in db + ArrayList 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) { diff --git a/build.gradle b/build.gradle index c5c31db06..5600a9338 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { google() } 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 // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 99b4c2351..b2b7e6643 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Apr 18 13:00:25 CEST 2019 +#Fri Aug 23 15:40:43 CEST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME 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