Catch exceptions

pull/147/head
M66B 6 years ago
parent 0aed1c3957
commit acf7ab2107

@ -306,97 +306,106 @@ public class ServiceSynchronize extends LifecycleService {
super.onStartCommand(intent, flags, startId); super.onStartCommand(intent, flags, startId);
if (action != null) { if (action != null)
final String[] parts = action.split(":"); try {
switch (parts[0]) { final String[] parts = action.split(":");
case "why": switch (parts[0]) {
Intent why = new Intent(Intent.ACTION_VIEW); case "why":
why.setData(Uri.parse("https://github.com/M66B/open-source-email/blob/master/FAQ.md#user-content-faq2")); Intent why = new Intent(Intent.ACTION_VIEW);
why.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); why.setData(Uri.parse("https://github.com/M66B/open-source-email/blob/master/FAQ.md#user-content-faq2"));
why.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PackageManager pm = getPackageManager();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); PackageManager pm = getPackageManager();
if (prefs.getBoolean("why", false) || why.resolveActivity(pm) == null) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Intent view = new Intent(this, ActivityView.class); if (prefs.getBoolean("why", false) || why.resolveActivity(pm) == null) {
view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Intent view = new Intent(this, ActivityView.class);
startActivity(view); view.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} else { startActivity(view);
prefs.edit().putBoolean("why", true).apply(); } else {
startActivity(why); prefs.edit().putBoolean("why", true).apply();
} startActivity(why);
break;
case "init":
// Network events will manage the service
serviceManager.service_init();
break;
case "reload":
serviceManager.service_reload(intent.getStringExtra("reason"));
break;
case "clear":
executor.submit(new Runnable() {
@Override
public void run() {
DB.getInstance(ServiceSynchronize.this).message().ignoreAll();
} }
}); break;
break;
case "seen": case "init":
case "archive": // Network events will manage the service
case "trash": serviceManager.service_init();
case "ignore": break;
executor.submit(new Runnable() {
@Override
public void run() {
long id = Long.parseLong(parts[1]);
DB db = DB.getInstance(ServiceSynchronize.this); case "reload":
try { serviceManager.service_reload(intent.getStringExtra("reason"));
db.beginTransaction(); break;
EntityMessage message = db.message().getMessage(id); case "clear":
switch (parts[0]) { executor.submit(new Runnable() {
case "seen": @Override
EntityOperation.queue(db, message, EntityOperation.SEEN, true); public void run() {
break; try {
DB.getInstance(ServiceSynchronize.this).message().ignoreAll();
case "archive": } catch (Throwable ex) {
EntityFolder archive = db.folder().getFolderByType(message.account, EntityFolder.ARCHIVE); Log.e(ex);
if (archive == null)
archive = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (archive != null)
EntityOperation.queue(db, message, EntityOperation.MOVE, archive.id);
break;
case "trash":
EntityFolder trash = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (trash != null)
EntityOperation.queue(db, message, EntityOperation.MOVE, trash.id);
break;
case "ignore":
db.message().setMessageUiIgnored(message.id, true);
break;
default:
Log.w("Unknown action: " + parts[0]);
} }
}
});
break;
case "seen":
case "archive":
case "trash":
case "ignore":
executor.submit(new Runnable() {
@Override
public void run() {
DB db = DB.getInstance(ServiceSynchronize.this);
try {
db.beginTransaction();
long id = Long.parseLong(parts[1]);
EntityMessage message = db.message().getMessage(id);
switch (parts[0]) {
case "seen":
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.MOVE, archive.id);
break;
case "trash":
EntityFolder trash = db.folder().getFolderByType(message.account, EntityFolder.TRASH);
if (trash != null)
EntityOperation.queue(db, message, EntityOperation.MOVE, trash.id);
break;
case "ignore":
db.message().setMessageUiIgnored(message.id, true);
break;
default:
Log.w("Unknown action: " + parts[0]);
}
db.setTransactionSuccessful(); db.setTransactionSuccessful();
} finally { } catch (Throwable ex) {
db.endTransaction(); Log.e(ex);
} finally {
db.endTransaction();
}
} }
} });
}); break;
break;
default: default:
Log.w("Unknown action: " + action); Log.w("Unknown action: " + action);
}
} catch (Throwable ex) {
Log.e(ex);
} }
}
return START_STICKY; return START_STICKY;
} }

Loading…
Cancel
Save