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