Remove DatabaseDao listeners

pull/437/head
Alex Baker 8 years ago
parent 01d5e421f5
commit 8bf14181b5

@ -36,18 +36,22 @@ public class GoogleTaskPushReceiver extends InjectingBroadcastReceiver {
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if(!gtasksPreferenceService.isLoggedIn()) {
return;
}
Task model = intent.getParcelableExtra(AstridApiConstants.EXTRAS_TASK);
if(model.checkAndClearTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) {
ContentValues setValues = intent.getParcelableExtra(AstridApiConstants.EXTRAS_VALUES);
if (model == null) {
return;
}
if (gtasksPreferenceService.isOngoing() && !model.checkTransitory(TaskService.TRANS_REPEAT_COMPLETE)) { //Don't try and sync changes that occur during a normal sync
if(model.checkTransitory(SyncFlags.GTASKS_SUPPRESS_SYNC)) {
return;
}
final ContentValues setValues = model.getSetValues();
if(!gtasksPreferenceService.isLoggedIn()) {
if (gtasksPreferenceService.isOngoing() && !model.checkTransitory(TaskService.TRANS_REPEAT_COMPLETE)) { //Don't try and sync changes that occur during a normal sync
return;
}
if (checkValuesForProperties(setValues, TASK_PROPERTIES) || model.checkAndClearTransitory(SyncFlags.FORCE_SYNC)) {
if (checkValuesForProperties(setValues, TASK_PROPERTIES) || model.checkTransitory(SyncFlags.FORCE_SYNC)) {
Task toPush = taskDao.fetch(model.getId(), TASK_PROPERTIES);
gtasksSyncService.enqueue(new TaskPushOp(toPush));
}

@ -50,25 +50,6 @@ public class DatabaseDao<TYPE extends AbstractModel> {
return table;
}
// --- listeners
public interface ModelUpdateListener<MTYPE> {
void onModelUpdated(MTYPE model);
}
private final ArrayList<ModelUpdateListener<TYPE>> listeners = new ArrayList<>();
public void addListener(ModelUpdateListener<TYPE> listener) {
listeners.add(listener);
}
protected void onModelUpdated(TYPE model) {
TYPE modelCopy = (TYPE) model.clone();
for(ModelUpdateListener<TYPE> listener : listeners) {
listener.onModelUpdated(modelCopy);
}
}
// --- dao methods
public List<TYPE> toList(Query query) {
@ -223,7 +204,6 @@ public class DatabaseDao<TYPE extends AbstractModel> {
synchronized(database) {
result.set(op.makeChange());
if (result.get()) {
onModelUpdated(item);
item.markSaved();
if (BuildConfig.DEBUG) {
Timber.d("%s %s", op, item.toString());

@ -210,7 +210,7 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
}
boolean databaseChanged = taskService.save(model);
if (!databaseChanged && model.checkTransitory(SyncFlags.FORCE_SYNC)) {
broadcaster.taskUpdated(model);
broadcaster.taskUpdated(model, null);
}
boolean tagsChanged = Flags.check(Flags.TAGS_CHANGED);

@ -46,6 +46,7 @@ public class AstridApiConstants {
public static final String EXTRAS_TASK_ID = "task_id";
public static final String EXTRAS_TASK = "task";
public static final String EXTRAS_VALUES = "values";
/**
* Extras name for old task due date
*/

@ -10,7 +10,6 @@ import android.database.sqlite.SQLiteConstraintException;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Callback;
import com.todoroo.andlib.data.DatabaseDao;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
@ -54,25 +53,19 @@ public class TaskDao {
private final ReminderService reminderService;
private final NotificationManager notificationManager;
private final Preferences preferences;
private GeofenceService geofenceService;
private final GeofenceService geofenceService;
@Inject
public TaskDao(Database database, MetadataDao metadataDao, final Broadcaster broadcaster,
ReminderService reminderService, NotificationManager notificationManager,
Preferences preferences, GeofenceService geofenceService) {
this.geofenceService = geofenceService;
dao = new RemoteModelDao<>(database, Task.class);
dao.addListener(new DatabaseDao.ModelUpdateListener<Task>() {
@Override
public void onModelUpdated(Task model) {
broadcaster.taskUpdated(model);
}
});
this.preferences = preferences;
this.metadataDao = metadataDao;
this.broadcaster = broadcaster;
this.reminderService = reminderService;
this.notificationManager = notificationManager;
dao = new RemoteModelDao<>(database, Task.class);
}
public TodorooCursor<Task> query(Query query) {
@ -186,7 +179,7 @@ public class TaskDao {
// delete all metadata
metadataDao.deleteWhere(MetadataCriteria.byTask(id));
broadcastTaskChanged();
broadcaster.refresh();
return true;
}
@ -407,13 +400,7 @@ public class TaskDao {
broadcaster.taskCompleted(task.getId());
}
broadcastTaskChanged();
}
/**
* Send broadcast when task list changes. Widgets should update.
*/
private void broadcastTaskChanged() {
broadcaster.taskUpdated(task, values);
broadcaster.refresh();
}

@ -1,5 +1,6 @@
package org.tasks;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
@ -48,9 +49,10 @@ public class Broadcaster {
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_REFRESH));
}
public void taskUpdated(final Task task) {
public void taskUpdated(final Task task, final ContentValues values) {
context.sendBroadcast(new Intent(AstridApiConstants.BROADCAST_EVENT_TASK_SAVED) {{
putExtra(AstridApiConstants.EXTRAS_TASK, task);
putExtra(AstridApiConstants.EXTRAS_VALUES, values);
}});
}

Loading…
Cancel
Save