Listen to lists
This commit is contained in:
parent
a6846e8f55
commit
f48dd4fc1b
|
@ -170,7 +170,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
public static UpdateAccountInfoAsyncTask.SOCIAL social;
|
||||
private final int PICK_IMPORT = 5556;
|
||||
public static List<ManageTimelines> timelines;
|
||||
private BroadcastReceiver hidde_menu;
|
||||
private BroadcastReceiver hidde_menu, update_topbar;
|
||||
|
||||
public static HashMap<Integer, Fragment> mPageReferenceMap;
|
||||
private static boolean notificationChecked = false;
|
||||
|
@ -694,6 +694,9 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
if( hidde_menu != null)
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(hidde_menu);
|
||||
|
||||
if( update_topbar != null)
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(update_topbar);
|
||||
hidde_menu = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
|
@ -736,7 +739,17 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
}
|
||||
};
|
||||
update_topbar = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
int position = 0;
|
||||
if( tabLayout != null)
|
||||
position = tabLayout.getSelectedTabPosition();
|
||||
new SyncTimelinesAsyncTask(BaseMainActivity.this, position, BaseMainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
};
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(hidde_menu, new IntentFilter(Helper.RECEIVE_HIDE_ITEM));
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(update_topbar, new IntentFilter(Helper.RECEIVE_UPDATE_TOPBAR));
|
||||
|
||||
toolbar_search.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
@Override
|
||||
|
@ -1649,6 +1662,8 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
sendBroadcast(new Intent("StopLiveNotificationService"));
|
||||
if( hidde_menu != null)
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(hidde_menu);
|
||||
if( update_topbar != null)
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(update_topbar);
|
||||
if( mPageReferenceMap != null)
|
||||
mPageReferenceMap = null;
|
||||
PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean("isMainActivityRunning", false).apply();
|
||||
|
|
|
@ -22,6 +22,7 @@ import android.os.AsyncTask;
|
|||
import android.os.Bundle;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
|
@ -307,7 +308,8 @@ public class ListActivity extends BaseActivity implements OnListActionInterface
|
|||
swipeRefreshLayout.setRefreshing(false);
|
||||
firstLoad = false;
|
||||
}else if(actionType == ManageListsAsyncTask.action.UPDATE_LIST) {
|
||||
|
||||
Intent intentUP = new Intent(Helper.RECEIVE_UPDATE_TOPBAR);
|
||||
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(intentUP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import app.fedilab.android.helper.Helper;
|
|||
import app.fedilab.android.sqlite.InstancesDAO;
|
||||
import app.fedilab.android.sqlite.SearchDAO;
|
||||
import app.fedilab.android.sqlite.Sqlite;
|
||||
import app.fedilab.android.sqlite.TimelineCacheDAO;
|
||||
import app.fedilab.android.sqlite.TimelinesDAO;
|
||||
import app.fedilab.android.activities.MainActivity;
|
||||
import app.fedilab.android.interfaces.OnSyncTimelineInterface;
|
||||
|
@ -250,57 +251,68 @@ public class SyncTimelinesAsyncTask extends AsyncTask<Void, Void, Void> {
|
|||
try {
|
||||
apiResponse = new API(contextReference.get()).getLists();
|
||||
lists = apiResponse.getLists();
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
if (lists != null && lists.size() > 0) {
|
||||
//Loop through results
|
||||
for (app.fedilab.android.client.Entities.List list : lists) {
|
||||
boolean isInDb = false;
|
||||
ManageTimelines timelines_tmp = null;
|
||||
for (ManageTimelines manageTimeline : manageTimelines) {
|
||||
if (manageTimeline.getListTimeline() == null)
|
||||
continue;
|
||||
if (manageTimeline.getListTimeline().getId().equals(list.getId())) {
|
||||
isInDb = true;
|
||||
timelines_tmp = manageTimeline;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isInDb) {
|
||||
ManageTimelines manageTL = new ManageTimelines();
|
||||
manageTL.setListTimeline(list);
|
||||
manageTL.setDisplayed(true);
|
||||
manageTL.setType(ManageTimelines.Type.LIST);
|
||||
manageTL.setPosition(manageTimelines.size());
|
||||
new TimelinesDAO(contextReference.get(), db).insert(manageTL);
|
||||
} else {
|
||||
//Update list
|
||||
timelines_tmp.setListTimeline(list);
|
||||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
List<ManageTimelines> duplicated_id = new ArrayList<>();
|
||||
List<String> present_id = new ArrayList<>();
|
||||
for (ManageTimelines manageTimeline : manageTimelines) {
|
||||
if (manageTimeline.getListTimeline() == null)
|
||||
continue;
|
||||
if( !present_id.contains(manageTimeline.getListTimeline().getId())) {
|
||||
present_id.add(manageTimeline.getListTimeline().getId());
|
||||
}else{
|
||||
duplicated_id.add(manageTimeline);
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimeline);
|
||||
}
|
||||
}
|
||||
for (ManageTimelines manageTimelines : manageTimelines) {
|
||||
if (manageTimelines.getListTimeline() == null)
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
manageTimelines.removeAll(duplicated_id);
|
||||
if (lists != null && lists.size() > 0) {
|
||||
//Loop through results
|
||||
for (app.fedilab.android.client.Entities.List list : lists) {
|
||||
if (list.getId().equals(manageTimelines.getListTimeline().getId())) {
|
||||
shouldBeRemoved = false;
|
||||
boolean isInDb = false;
|
||||
ManageTimelines timelines_tmp = null;
|
||||
for (ManageTimelines manageTimeline : manageTimelines) {
|
||||
if (manageTimeline.getListTimeline() == null)
|
||||
continue;
|
||||
if (manageTimeline.getListTimeline().getId().equals(list.getId())) {
|
||||
isInDb = true;
|
||||
timelines_tmp = manageTimeline;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!isInDb) {
|
||||
ManageTimelines manageTL = new ManageTimelines();
|
||||
manageTL.setListTimeline(list);
|
||||
manageTL.setDisplayed(true);
|
||||
manageTL.setType(ManageTimelines.Type.LIST);
|
||||
manageTL.setPosition(manageTimelines.size());
|
||||
new TimelinesDAO(contextReference.get(), db).insert(manageTL);
|
||||
} else {
|
||||
//Update list
|
||||
timelines_tmp.setListTimeline(list);
|
||||
new TimelinesDAO(contextReference.get(), db).update(timelines_tmp);
|
||||
}
|
||||
}
|
||||
if (shouldBeRemoved) {
|
||||
for (ManageTimelines manageTimelines : manageTimelines) {
|
||||
if (manageTimelines.getListTimeline() == null)
|
||||
continue;
|
||||
boolean shouldBeRemoved = true;
|
||||
for (app.fedilab.android.client.Entities.List list : lists) {
|
||||
if (list.getId().equals(manageTimelines.getListTimeline().getId())) {
|
||||
shouldBeRemoved = false;
|
||||
}
|
||||
}
|
||||
if (shouldBeRemoved) {
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (ManageTimelines manageTimelines : manageTimelines) {
|
||||
if (manageTimelines.getListTimeline() == null)
|
||||
continue;
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (ManageTimelines manageTimelines : manageTimelines) {
|
||||
if (manageTimelines.getListTimeline() == null)
|
||||
continue;
|
||||
new TimelinesDAO(contextReference.get(), db).remove(manageTimelines);
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
|
||||
}
|
||||
for (Iterator<ManageTimelines> it = manageTimelines.iterator(); it.hasNext();) {
|
||||
if (!it.next().isDisplayed()) {
|
||||
|
|
|
@ -26,6 +26,8 @@ import androidx.annotation.NonNull;
|
|||
import com.google.android.material.floatingactionbutton.FloatingActionButton;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import android.text.InputFilter;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
|
@ -197,12 +199,16 @@ public class DisplayListsFragment extends Fragment implements OnListActionInterf
|
|||
this.lists.add(0, apiResponse.getLists().get(0));
|
||||
listAdapter.notifyDataSetChanged();
|
||||
textviewNoAction.setVisibility(View.GONE);
|
||||
Intent intentUP = new Intent(Helper.RECEIVE_UPDATE_TOPBAR);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intentUP);
|
||||
}else{
|
||||
Toasty.error(context, apiResponse.getError().getError(),Toast.LENGTH_LONG).show();
|
||||
}
|
||||
}else if( actionType == ManageListsAsyncTask.action.DELETE_LIST){
|
||||
if( this.lists.size() == 0)
|
||||
textviewNoAction.setVisibility(View.VISIBLE);
|
||||
Intent intentUP = new Intent(Helper.RECEIVE_UPDATE_TOPBAR);
|
||||
LocalBroadcastManager.getInstance(context).sendBroadcast(intentUP);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -479,6 +479,7 @@ public class Helper {
|
|||
public static final String RECEIVE_FEDERATED_DATA = "receive_federated_data";
|
||||
public static final String RECEIVE_LOCAL_DATA = "receive_local_data";
|
||||
public static final String RECEIVE_HIDE_ITEM = "receive_hide_item";
|
||||
public static final String RECEIVE_UPDATE_TOPBAR = "receive_update_topbar";
|
||||
//User agent
|
||||
//public static final String USER_AGENT = "Fedilab/"+ BuildConfig.VERSION_NAME + " Android/"+ Build.VERSION.RELEASE;
|
||||
public static final String USER_AGENT = System.getProperty("http.agent");
|
||||
|
|
Loading…
Reference in New Issue