Add refresh list broadcast

pull/467/head
Alex Baker 9 years ago
parent e069b5a978
commit 73ae880cbd

@ -10,6 +10,7 @@ import com.todoroo.astrid.test.DatabaseTestCase;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.tasks.Broadcaster;
import org.tasks.injection.TestComponent; import org.tasks.injection.TestComponent;
import org.tasks.makers.RemoteGtaskListMaker; import org.tasks.makers.RemoteGtaskListMaker;
@ -22,18 +23,19 @@ import static junit.framework.Assert.assertNull;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.tasks.makers.GtaskListMaker.ID; import static org.tasks.makers.GtaskListMaker.ID;
import static org.tasks.makers.GtaskListMaker.SAVED;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import static org.tasks.makers.GtaskListMaker.LAST_SYNC; import static org.tasks.makers.GtaskListMaker.LAST_SYNC;
import static org.tasks.makers.GtaskListMaker.NAME; import static org.tasks.makers.GtaskListMaker.NAME;
import static org.tasks.makers.GtaskListMaker.REMOTE_ID; import static org.tasks.makers.GtaskListMaker.REMOTE_ID;
import static org.tasks.makers.GtaskListMaker.SAVED;
import static org.tasks.makers.GtaskListMaker.newGtaskList; import static org.tasks.makers.GtaskListMaker.newGtaskList;
import static org.tasks.makers.RemoteGtaskListMaker.newRemoteList; import static org.tasks.makers.RemoteGtaskListMaker.newRemoteList;
import static org.tasks.time.DateTimeUtils.currentTimeMillis;
@RunWith(AndroidJUnit4.class) @RunWith(AndroidJUnit4.class)
public class GtasksListServiceTest extends DatabaseTestCase { public class GtasksListServiceTest extends DatabaseTestCase {
@Inject Database database; @Inject Database database;
@Inject Broadcaster broadcaster;
private StoreObjectDao storeObjectDao; private StoreObjectDao storeObjectDao;
private GtasksListService gtasksListService; private GtasksListService gtasksListService;
@ -42,7 +44,7 @@ public class GtasksListServiceTest extends DatabaseTestCase {
public void setUp() { public void setUp() {
super.setUp(); super.setUp();
storeObjectDao = spy(new StoreObjectDao(database)); storeObjectDao = spy(new StoreObjectDao(database));
gtasksListService = new GtasksListService(storeObjectDao); gtasksListService = new GtasksListService(storeObjectDao, broadcaster);
} }
@Override @Override

@ -9,6 +9,8 @@ import com.google.api.services.tasks.model.TaskList;
import com.todoroo.astrid.dao.StoreObjectDao; import com.todoroo.astrid.dao.StoreObjectDao;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import org.tasks.Broadcaster;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -24,10 +26,12 @@ import static org.tasks.time.DateTimeUtils.printTimestamp;
public class GtasksListService { public class GtasksListService {
private final StoreObjectDao storeObjectDao; private final StoreObjectDao storeObjectDao;
private final Broadcaster broadcaster;
@Inject @Inject
public GtasksListService(StoreObjectDao storeObjectDao) { public GtasksListService(StoreObjectDao storeObjectDao, Broadcaster broadcaster) {
this.storeObjectDao = storeObjectDao; this.storeObjectDao = storeObjectDao;
this.broadcaster = broadcaster;
} }
public List<GtasksList> getLists() { public List<GtasksList> getLists() {
@ -83,6 +87,8 @@ public class GtasksListService {
for(Long listId : previousLists) { for(Long listId : previousLists) {
storeObjectDao.delete(listId); storeObjectDao.delete(listId);
} }
broadcaster.refreshLists();
} }
public List<GtasksList> getListsToUpdate(List<TaskList> remoteLists) { public List<GtasksList> getListsToUpdate(List<TaskList> remoteLists) {

@ -33,6 +33,7 @@ import com.todoroo.astrid.timers.TimerPlugin;
import com.todoroo.astrid.ui.EditTitleControlSet; import com.todoroo.astrid.ui.EditTitleControlSet;
import com.todoroo.astrid.utility.Flags; import com.todoroo.astrid.utility.Flags;
import org.tasks.Broadcaster;
import org.tasks.R; import org.tasks.R;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
@ -85,6 +86,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject Tracker tracker; @Inject Tracker tracker;
@Inject TimerPlugin timerPlugin; @Inject TimerPlugin timerPlugin;
@Inject Broadcaster broadcaster;
@BindView(R.id.toolbar) Toolbar toolbar; @BindView(R.id.toolbar) Toolbar toolbar;
@BindView(R.id.comments) LinearLayout comments; @BindView(R.id.comments) LinearLayout comments;
@ -209,14 +211,14 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
} }
taskDao.save(model); taskDao.save(model);
boolean tagsChanged = Flags.check(Flags.TAGS_CHANGED); if (Flags.check(Flags.TAGS_CHANGED)) {
broadcaster.refreshLists();
TaskListActivity tla = (TaskListActivity) getActivity();
if (tagsChanged) {
tla.repopulateNavigationDrawer();
} }
if (isNewTask) { if (isNewTask) {
tla.getTaskListFragment().onTaskCreated(model.getUuid()); ((TaskListActivity) getActivity())
.getTaskListFragment()
.onTaskCreated(model.getUuid());
} }
callback.taskEditFinished(); callback.taskEditFinished();
} else { } else {

@ -380,10 +380,6 @@ public class TaskListActivity extends InjectingAppCompatActivity implements
} }
} }
public void repopulateNavigationDrawer() {
navigationDrawer.repopulateList();
}
public TaskListFragment getTaskListFragment() { public TaskListFragment getTaskListFragment() {
return (TaskListFragment) getSupportFragmentManager() return (TaskListFragment) getSupportFragmentManager()
.findFragmentByTag(FRAG_TAG_TASK_LIST); .findFragmentByTag(FRAG_TAG_TASK_LIST);

@ -629,7 +629,6 @@ public class TaskListFragment extends InjectingListFragment implements
((TaskListActivity) getActivity()).onFilterItemClicked(null); ((TaskListActivity) getActivity()).onFilterItemClicked(null);
} }
((TaskListActivity) getActivity()).repopulateNavigationDrawer();
broadcaster.refresh(); broadcaster.refresh();
} }
} else { } else {

@ -63,6 +63,7 @@ public class AstridApiConstants {
* Action name for broadcast intent notifying Astrid task list to refresh * Action name for broadcast intent notifying Astrid task list to refresh
*/ */
public static final String BROADCAST_EVENT_REFRESH = BuildConfig.APPLICATION_ID + ".REFRESH"; public static final String BROADCAST_EVENT_REFRESH = BuildConfig.APPLICATION_ID + ".REFRESH";
public static final String BROADCAST_EVENT_REFRESH_LISTS = BuildConfig.APPLICATION_ID + ".REFRESH_LISTS";
/** /**
* Action name for broadcast intent notifying that task was completed * Action name for broadcast intent notifying that task was completed

@ -47,6 +47,10 @@ public class Broadcaster {
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH)); context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
} }
public void refreshLists() {
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH_LISTS));
}
public void taskUpdated(final Task task, final ContentValues values) { public void taskUpdated(final Task task, final ContentValues values) {
Intent intent = new Intent(AstridApiConstants.BROADCAST_EVENT_TASK_SAVED); Intent intent = new Intent(AstridApiConstants.BROADCAST_EVENT_TASK_SAVED);
intent.putExtra(AstridApiConstants.EXTRAS_TASK, task); intent.putExtra(AstridApiConstants.EXTRAS_TASK, task);

@ -89,7 +89,6 @@ public class TagListFragment extends TaskListFragment {
} }
} }
activity.repopulateNavigationDrawer();
broadcaster.refresh(); broadcaster.refresh();
} }
} else { } else {

@ -88,9 +88,6 @@ public class NavigationDrawerFragment extends InjectingFragment {
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == FilterAdapter.REQUEST_SETTINGS && resultCode == Activity.RESULT_OK && data != null) { if (requestCode == FilterAdapter.REQUEST_SETTINGS && resultCode == Activity.RESULT_OK && data != null) {
if (data.getBooleanExtra(AppearancePreferences.EXTRA_FILTERS_CHANGED, false)) {
repopulateList();
}
if (data.getBooleanExtra(AppearancePreferences.EXTRA_RESTART, false)) { if (data.getBooleanExtra(AppearancePreferences.EXTRA_RESTART, false)) {
TaskListActivity activity = (TaskListActivity) getActivity(); TaskListActivity activity = (TaskListActivity) getActivity();
activity.restart(); activity.restart();
@ -231,14 +228,10 @@ public class NavigationDrawerFragment extends InjectingFragment {
void onFilterItemClicked(FilterListItem item); void onFilterItemClicked(FilterListItem item);
} }
public void repopulateList() { private void repopulateList() {
adapter.populateList(); adapter.populateList();
} }
private void refreshFilterCount() {
adapter.refreshFilterCount();
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
@ -246,11 +239,12 @@ public class NavigationDrawerFragment extends InjectingFragment {
adapter.registerRecevier(); adapter.registerRecevier();
} }
// also load sync actions IntentFilter intentFilter = new IntentFilter();
getActivity().registerReceiver(refreshReceiver, intentFilter.addAction(AstridApiConstants.BROADCAST_EVENT_REFRESH);
new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH)); intentFilter.addAction(AstridApiConstants.BROADCAST_EVENT_REFRESH_LISTS);
getActivity().registerReceiver(refreshReceiver, intentFilter);
refreshFilterCount(); repopulateList();
} }
/** /**
@ -262,11 +256,15 @@ public class NavigationDrawerFragment extends InjectingFragment {
protected class RefreshReceiver extends BroadcastReceiver { protected class RefreshReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if(intent == null || !AstridApiConstants.BROADCAST_EVENT_REFRESH.equals(intent.getAction())) { if (intent == null) {
return; return;
} }
String action = intent.getAction();
refreshFilterCount(); if (AstridApiConstants.BROADCAST_EVENT_REFRESH.equals(action)) {
adapter.refreshFilterCount();
} else if (AstridApiConstants.BROADCAST_EVENT_REFRESH_LISTS.equals(action)) {
repopulateList();
}
} }
} }
} }

Loading…
Cancel
Save