Refactoring

pull/146/head
M66B 7 years ago
parent a1e25e3348
commit b783224f71

@ -128,7 +128,7 @@ import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
public class ServiceSynchronize extends LifecycleService { public class ServiceSynchronize extends LifecycleService {
private TupleAccountStats lastStats = null; private TupleAccountStats lastStats = null;
private ServiceManager serviceManager = new ServiceManager(); private ServiceManager serviceManager = new ServiceManager();
private static ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory); private ExecutorService executor = Executors.newSingleThreadExecutor(Helper.backgroundThreadFactory);
private static final int NOTIFICATION_SYNCHRONIZE = 1; private static final int NOTIFICATION_SYNCHRONIZE = 1;
@ -274,88 +274,102 @@ public class ServiceSynchronize extends LifecycleService {
super.onStartCommand(intent, flags, startId); super.onStartCommand(intent, flags, startId);
if (action != null) { if (action != null) {
if ("why".equals(action)) { final String[] parts = action.split(":");
Intent why = new Intent(Intent.ACTION_VIEW); switch (parts[0]) {
why.setData(Uri.parse("https://github.com/M66B/open-source-email/blob/master/FAQ.md#user-content-faq2")); case "why":
why.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Intent why = new Intent(Intent.ACTION_VIEW);
why.setData(Uri.parse("https://github.com/M66B/open-source-email/blob/master/FAQ.md#user-content-faq2"));
PackageManager pm = getPackageManager(); why.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("why", false) || why.resolveActivity(pm) == null) { PackageManager pm = getPackageManager();
Intent main = new Intent(this, ActivityView.class); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
main.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (prefs.getBoolean("why", false) || why.resolveActivity(pm) == null) {
startActivity(main); Intent main = new Intent(this, ActivityView.class);
} else { main.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
prefs.edit().putBoolean("why", true).apply(); startActivity(main);
startActivity(why); } else {
} prefs.edit().putBoolean("why", true).apply();
startActivity(why);
}
break;
} else if ("init".equals(action)) { case "init":
// Network events will manage the service // Network events will manage the service
serviceManager.service_init(); serviceManager.service_init();
break;
} else if ("reload".equals(action)) { case "reload":
serviceManager.queue_reload(true, intent.getStringExtra("reason")); serviceManager.queue_reload(true, intent.getStringExtra("reason"));
break;
} else if ("clear".equals(action)) { case "clear":
new SimpleTask<Void>() { executor.submit(new Runnable() {
@Override @Override
protected Void onLoad(Context context, Bundle args) { public void run() {
DB.getInstance(context).message().ignoreAll(); DB.getInstance(ServiceSynchronize.this).message().ignoreAll();
return null; }
} });
}.load(this, new Bundle()); break;
case "seen":
case "archive":
case "trash":
case "ignore":
executor.submit(new Runnable() {
@Override
public void run() {
long id = Long.parseLong(parts[1]);
} else if (action.startsWith("seen:") || DB db = DB.getInstance(ServiceSynchronize.this);
action.startsWith("archive:") || try {
action.startsWith("trash:") || db.beginTransaction();
action.startsWith("ignored:")) {
Bundle args = new Bundle(); EntityMessage message = db.message().getMessage(id);
args.putLong("id", Long.parseLong(action.split(":")[1])); switch (parts[0]) {
args.putString("action", action.split(":")[0]); case "seen":
db.message().setMessageUiSeen(message.id, true);
db.message().setMessageUiIgnored(message.id, true);
EntityOperation.queue(db, message, EntityOperation.SEEN, true);
break;
case "archive":
EntityFolder archive = db.folder().getFolderByType(message.account, EntityFolder.ARCHIVE);
if (archive == null)
archive = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (archive != null) {
EntityOperation.queue(db, message, EntityOperation.SEEN, true);
EntityOperation.queue(db, message, EntityOperation.MOVE, archive.id);
db.message().setMessageUiHide(message.id, true);
}
break;
case "trash":
EntityFolder trash = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (trash != null) {
EntityOperation.queue(db, message, EntityOperation.SEEN, true);
EntityOperation.queue(db, message, EntityOperation.MOVE, trash.id);
db.message().setMessageUiHide(message.id, true);
}
break;
new SimpleTask<Void>() { case "ignore":
@Override db.message().setMessageUiIgnored(message.id, true);
protected Void onLoad(Context context, Bundle args) { break;
long id = args.getLong("id");
String action = args.getString("action");
DB db = DB.getInstance(context); default:
try { Log.w(Helper.TAG, "Unknown action: " + parts[0]);
db.beginTransaction();
EntityMessage message = db.message().getMessage(id);
if ("seen".equals(action)) {
db.message().setMessageUiSeen(message.id, true);
db.message().setMessageUiIgnored(message.id, true);
EntityOperation.queue(db, message, EntityOperation.SEEN, true);
} else if ("archive".equals(action)) {
EntityFolder archive = db.folder().getFolderByType(message.account, EntityFolder.ARCHIVE);
if (archive == null)
archive = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (archive != null) {
EntityOperation.queue(db, message, EntityOperation.SEEN, true);
EntityOperation.queue(db, message, EntityOperation.MOVE, archive.id);
db.message().setMessageUiHide(message.id, true);
}
} else if ("trash".equals(action)) {
EntityFolder trash = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (trash != null) {
EntityOperation.queue(db, message, EntityOperation.SEEN, true);
EntityOperation.queue(db, message, EntityOperation.MOVE, trash.id);
db.message().setMessageUiHide(message.id, true);
} }
} else if ("ignored".equals(action))
db.message().setMessageUiIgnored(message.id, true);
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } finally {
db.endTransaction(); db.endTransaction();
}
} }
});
break;
return null; default:
} Log.w(Helper.TAG, "Unknown action: " + action);
}.load(this, args);
} }
} }
@ -520,7 +534,7 @@ public class ServiceSynchronize extends LifecycleService {
this, ActivityView.REQUEST_THREAD, thread, PendingIntent.FLAG_UPDATE_CURRENT); this, ActivityView.REQUEST_THREAD, thread, PendingIntent.FLAG_UPDATE_CURRENT);
Intent ignored = new Intent(this, ServiceSynchronize.class); Intent ignored = new Intent(this, ServiceSynchronize.class);
ignored.setAction("ignored:" + message.id); ignored.setAction("ignore:" + message.id);
PendingIntent piDelete = PendingIntent.getService(this, PI_IGNORED, ignored, PendingIntent.FLAG_UPDATE_CURRENT); PendingIntent piDelete = PendingIntent.getService(this, PI_IGNORED, ignored, PendingIntent.FLAG_UPDATE_CURRENT);
Intent seen = new Intent(this, ServiceSynchronize.class); Intent seen = new Intent(this, ServiceSynchronize.class);

Loading…
Cancel
Save