Sync timelines
This commit is contained in:
parent
3b2cd6b533
commit
6e91768343
|
@ -1782,10 +1782,8 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
|
||||
|
||||
public static HashMap<String, DisplayStatusFragment> tagFragment = new HashMap<>();
|
||||
|
||||
@Override
|
||||
public void syncedTimelines(List<ManageTimelines> manageTimelines) {
|
||||
public void syncedTimelines(List<ManageTimelines> manageTimelines, boolean updateOnly) {
|
||||
new ManageTimelines().createTabs(BaseMainActivity.this, manageTimelines);
|
||||
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
|
||||
boolean optimize_loading = sharedpreferences.getBoolean(Helper.SET_OPTIMIZE_LOADING, false);
|
||||
|
@ -2629,15 +2627,4 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void syncTimelines(Context context){
|
||||
|
||||
//Sync lists
|
||||
ArrayList<fr.gouv.etalab.mastodon.client.Entities.List> lists = new ArrayList<>();
|
||||
if( MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA ){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@ import fr.gouv.etalab.mastodon.activities.MainActivity;
|
|||
import fr.gouv.etalab.mastodon.client.API;
|
||||
import fr.gouv.etalab.mastodon.client.APIResponse;
|
||||
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Instance;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.ManageTimelines;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.RemoteInstance;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.TagTimeline;
|
||||
|
@ -51,11 +52,18 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
private OnSyncTimelineInterface listener;
|
||||
private WeakReference<Context> contextReference;
|
||||
private List<ManageTimelines> manageTimelines;
|
||||
private boolean updateOnly;
|
||||
|
||||
public SyncTimelinesAsyncTask(Context context, boolean updateOnly, OnSyncTimelineInterface onSyncTimelineInterface){
|
||||
this.contextReference = new WeakReference<>(context);
|
||||
this.listener = onSyncTimelineInterface;
|
||||
this.updateOnly = updateOnly;
|
||||
}
|
||||
|
||||
public SyncTimelinesAsyncTask(Context context, OnSyncTimelineInterface onSyncTimelineInterface){
|
||||
this.contextReference = new WeakReference<>(context);
|
||||
this.listener = onSyncTimelineInterface;
|
||||
this.updateOnly = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -161,19 +169,6 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
List<TagTimeline> tagsInDb = new SearchDAO(contextReference.get(), db).getAll();
|
||||
List<RemoteInstance> instancesInDb = new InstancesDAO(contextReference.get(), db).getAllInstances();
|
||||
|
||||
List<TagTimeline> tagsInTabs = new ArrayList<>();
|
||||
List<RemoteInstance> instanceInTabs =new ArrayList<>();
|
||||
|
||||
for (ManageTimelines mtl: manageTimelines){
|
||||
if( mtl.getType() == ManageTimelines.Type.TAG){
|
||||
tagsInTabs.add(mtl.getTagTimeline());
|
||||
}else if(mtl.getType() == ManageTimelines.Type.INSTANCE){
|
||||
instanceInTabs.add(mtl.getRemoteInstance());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
for(TagTimeline tag: tagsInDb){
|
||||
boolean isInDb = false;
|
||||
ManageTimelines timelines_tmp = null;
|
||||
|
@ -196,9 +191,9 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
}else{
|
||||
//Update list
|
||||
timelines_tmp.setTagTimeline(tag);
|
||||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
}
|
||||
}
|
||||
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
if( manageTimelines.getTagTimeline() == null )
|
||||
continue;
|
||||
|
@ -213,6 +208,46 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
for(RemoteInstance instance: instancesInDb){
|
||||
boolean isInDb = false;
|
||||
ManageTimelines timelines_tmp = null;
|
||||
for(ManageTimelines manageTimeline: manageTimelines){
|
||||
if( manageTimeline.getRemoteInstance() == null )
|
||||
continue;
|
||||
if(manageTimeline.getRemoteInstance().getId().equals(instance.getId())){
|
||||
isInDb = true;
|
||||
timelines_tmp = manageTimeline;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( !isInDb){
|
||||
ManageTimelines manageTL = new ManageTimelines();
|
||||
manageTL.setRemoteInstance(instance);
|
||||
manageTL.setDisplayed(true);
|
||||
manageTL.setType(ManageTimelines.Type.INSTANCE);
|
||||
manageTL.setPosition(manageTimelines.size());
|
||||
new TimelinesDAO(contextReference.get(), db).insert(manageTL);
|
||||
}else{
|
||||
//Update list
|
||||
timelines_tmp.setRemoteInstance(instance);
|
||||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
}
|
||||
}
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
if( manageTimelines.getRemoteInstance() == null )
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
for(RemoteInstance instance: instancesInDb){
|
||||
if( instance.getId().equals(manageTimelines.getRemoteInstance().getId())){
|
||||
shouldBeRemoved = false;
|
||||
}
|
||||
}
|
||||
if( shouldBeRemoved){
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
|
||||
APIResponse apiResponse = new API(contextReference.get()).getLists();
|
||||
List<fr.gouv.etalab.mastodon.client.Entities.List> lists = apiResponse.getLists();
|
||||
if( lists != null && lists.size() > 0){
|
||||
|
@ -239,6 +274,7 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
}else{
|
||||
//Update list
|
||||
timelines_tmp.setListTimeline(list);
|
||||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
}
|
||||
}
|
||||
for(ManageTimelines manageTimelines: manageTimelines){
|
||||
|
@ -266,7 +302,7 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
|
||||
@Override
|
||||
protected void onPostExecute(Void result) {
|
||||
listener.syncedTimelines(manageTimelines);
|
||||
listener.syncedTimelines(manageTimelines, updateOnly);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -24,5 +24,5 @@ import fr.gouv.etalab.mastodon.client.Entities.ManageTimelines;
|
|||
* Interface when timelines are retrieved
|
||||
*/
|
||||
public interface OnSyncTimelineInterface {
|
||||
void syncedTimelines(List<ManageTimelines> manageTimelines);
|
||||
void syncedTimelines(List<ManageTimelines> manageTimelines, boolean updateOnly);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue