Browse Source

Use intent type to target right process receiver

main
M66B 6 years ago
parent
commit
beee8574fd
2 changed files with 16 additions and 6 deletions
  1. +10
    -4
      app/src/main/java/eu/faircode/email/EntityOperation.java
  2. +6
    -2
      app/src/main/java/eu/faircode/email/ServiceSynchronize.java

+ 10
- 4
app/src/main/java/eu/faircode/email/EntityOperation.java View File

@ -94,11 +94,17 @@ public class EntityOperation {
operation.args = jsonArray.toString(); operation.args = jsonArray.toString();
operation.id = dao.insertOperation(operation); operation.id = dao.insertOperation(operation);
Intent intent = new Intent();
if (SEND.equals(name))
intent.setAction(ServiceSynchronize.ACTION_PROCESS_OUTBOX);
else {
intent.setType("account/" + message.account);
intent.setAction(ServiceSynchronize.ACTION_PROCESS_FOLDER);
}
intent.putExtra("folder", message.folder);
synchronized (queue) { synchronized (queue) {
queue.add(new Intent(SEND.equals(name)
? ServiceSynchronize.ACTION_PROCESS_OUTBOX
: ServiceSynchronize.ACTION_PROCESS_FOLDER)
.putExtra("folder", message.folder));
queue.add(intent);
} }
Log.i(Helper.TAG, "Queued op=" + operation.id + "/" + name + Log.i(Helper.TAG, "Queued op=" + operation.id + "/" + name +


+ 6
- 2
app/src/main/java/eu/faircode/email/ServiceSynchronize.java View File

@ -392,12 +392,16 @@ public class ServiceSynchronize extends LifecycleService {
thread.start(); thread.start();
} }
IntentFilter f = new IntentFilter(ACTION_PROCESS_FOLDER);
f.addDataType("account/" + account.id);
LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(ServiceSynchronize.this); LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(ServiceSynchronize.this);
lbm.registerReceiver(processReceiver, new IntentFilter(ACTION_PROCESS_FOLDER));
lbm.registerReceiver(processReceiver, f);
Log.i(Helper.TAG, "listen process folder"); Log.i(Helper.TAG, "listen process folder");
for (final EntityFolder folder : db.folder().getFolders(account.id)) for (final EntityFolder folder : db.folder().getFolders(account.id))
if (!EntityFolder.TYPE_OUTBOX.equals(folder.type)) if (!EntityFolder.TYPE_OUTBOX.equals(folder.type))
lbm.sendBroadcast(new Intent(ACTION_PROCESS_FOLDER).putExtra("folder", folder.id));
lbm.sendBroadcast(new Intent(ACTION_PROCESS_FOLDER)
.setType("account/" + account.id)
.putExtra("folder", folder.id));
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(Helper.TAG, account.name + " " + ex + "\n" + Log.getStackTraceString(ex)); Log.e(Helper.TAG, account.name + " " + ex + "\n" + Log.getStackTraceString(ex));


Loading…
Cancel
Save