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.dao.TaskDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import org.tasks.Broadcaster;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
import org.tasks.analytics.Tracker; import org.tasks.analytics.Tracker;
import org.tasks.injection.BroadcastComponent; import org.tasks.injection.BroadcastComponent;
@ -35,37 +36,27 @@ public class TeslaUnreadReceiver extends InjectingBroadcastReceiver {
private final DefaultFilterProvider defaultFilterProvider; private final DefaultFilterProvider defaultFilterProvider;
private final TaskDao taskDao; private final TaskDao taskDao;
private final Tracker tracker; private final Tracker tracker;
private final Broadcaster broadcaster;
private boolean enabled; private boolean enabled;
@Inject @Inject
public TeslaUnreadReceiver(@ForApplication Context context, DefaultFilterProvider defaultFilterProvider, public TeslaUnreadReceiver(@ForApplication Context context, DefaultFilterProvider defaultFilterProvider,
TaskDao taskDao, Tracker tracker) { TaskDao taskDao, Tracker tracker, Broadcaster broadcaster) {
this.context = context; this.context = context;
this.defaultFilterProvider = defaultFilterProvider; this.defaultFilterProvider = defaultFilterProvider;
this.taskDao = taskDao; this.taskDao = taskDao;
this.tracker = tracker; this.tracker = tracker;
this.broadcaster = broadcaster;
} }
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent); super.onReceive(context, intent);
try { Filter defaultFilter = defaultFilterProvider.getDefaultFilter();
Filter defaultFilter = defaultFilterProvider.getDefaultFilter(); String query = PermaSql.replacePlaceholders(defaultFilter.getSqlQuery());
String query = PermaSql.replacePlaceholders(defaultFilter.getSqlQuery()); publishCount(taskDao.count(Query.select(Task.ID).withQueryTemplate(query)));
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);
}
} }
@Override @Override
@ -77,12 +68,28 @@ public class TeslaUnreadReceiver extends InjectingBroadcastReceiver {
try { try {
if (newValue) { if (newValue) {
context.registerReceiver(this, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH)); context.registerReceiver(this, new IntentFilter(AstridApiConstants.BROADCAST_EVENT_REFRESH));
broadcaster.refresh();
} else if (enabled) { } else if (enabled) {
context.unregisterReceiver(this); context.unregisterReceiver(this);
publishCount(0);
} }
enabled = newValue; enabled = newValue;
} catch (Exception e) { } catch (Exception e) {
Timber.e(e, e.getMessage()); 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