diff --git a/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java b/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java index 419629cf2..d8345426d 100644 --- a/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java +++ b/src/googleplay/java/org/tasks/receivers/TeslaUnreadReceiver.java @@ -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); + } + } }