Refresh TeslaUnread when enabling/disabling

pull/384/head
Alex Baker 10 years ago
parent 37e70c7485
commit 5ab3cbaf4f

@ -13,6 +13,7 @@ import com.todoroo.astrid.api.PermaSql;
import com.todoroo.astrid.dao.TaskDao;
import com.todoroo.astrid.data.Task;
import org.tasks.Broadcaster;
import org.tasks.BuildConfig;
import org.tasks.analytics.Tracker;
import org.tasks.injection.BroadcastComponent;
@ -35,37 +36,27 @@ public class TeslaUnreadReceiver extends InjectingBroadcastReceiver {
private final DefaultFilterProvider defaultFilterProvider;
private final TaskDao taskDao;
private final Tracker tracker;
private final Broadcaster broadcaster;
private boolean enabled;
@Inject
public TeslaUnreadReceiver(@ForApplication Context context, DefaultFilterProvider defaultFilterProvider,
TaskDao taskDao, Tracker tracker) {
TaskDao taskDao, Tracker tracker, Broadcaster broadcaster) {
this.context = context;
this.defaultFilterProvider = defaultFilterProvider;
this.taskDao = taskDao;
this.tracker = tracker;
this.broadcaster = broadcaster;
}
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
try {
Filter defaultFilter = defaultFilterProvider.getDefaultFilter();
String query = PermaSql.replacePlaceholders(defaultFilter.getSqlQuery());
int count = taskDao.count(Query.select(Task.ID).withQueryTemplate(query));
ContentValues contentValues = new ContentValues();
contentValues.put("tag", TESLA_TAG);
contentValues.put("count", count);
context.getContentResolver().insert(Uri.parse(TESLA_URI), contentValues);
} catch (IllegalArgumentException ex) {
/* Fine, TeslaUnread is not installed. */
} catch (Exception e) {
Timber.e(e, e.getMessage());
tracker.reportException(e);
}
Filter defaultFilter = defaultFilterProvider.getDefaultFilter();
String query = PermaSql.replacePlaceholders(defaultFilter.getSqlQuery());
publishCount(taskDao.count(Query.select(Task.ID).withQueryTemplate(query)));
}
@Override
@ -77,12 +68,28 @@ public class TeslaUnreadReceiver extends InjectingBroadcastReceiver {
try {
if (newValue) {
context.registerReceiver(this, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH));
broadcaster.refresh();
} else if (enabled) {
context.unregisterReceiver(this);
publishCount(0);
}
enabled = newValue;
} catch (Exception e) {
Timber.e(e, e.getMessage());
}
}
private void publishCount(int count) {
try {
ContentValues contentValues = new ContentValues();
contentValues.put("tag", TESLA_TAG);
contentValues.put("count", count);
context.getContentResolver().insert(Uri.parse(TESLA_URI), contentValues);
} catch (IllegalArgumentException ex) {
/* Fine, TeslaUnread is not installed. */
} catch (Exception e) {
Timber.e(e, e.getMessage());
tracker.reportException(e);
}
}
}

Loading…
Cancel
Save