mirror of https://github.com/M66B/FairEmail.git
Simplified starting FTS indexing
This commit is contained in:
parent
7997ee74c5
commit
36e68347d0
|
@ -3042,6 +3042,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
EntityFolder drafts = db.folder().getFolderByType(message.account, EntityFolder.DRAFTS);
|
EntityFolder drafts = db.folder().getFolderByType(message.account, EntityFolder.DRAFTS);
|
||||||
message.id = null;
|
message.id = null;
|
||||||
message.folder = drafts.id;
|
message.folder = drafts.id;
|
||||||
|
message.fts = false;
|
||||||
message.ui_snoozed = null;
|
message.ui_snoozed = null;
|
||||||
message.error = null;
|
message.error = null;
|
||||||
message.id = db.message().insertMessage(message);
|
message.id = db.message().insertMessage(message);
|
||||||
|
|
|
@ -959,8 +959,6 @@ class Core {
|
||||||
int count = ifolder.getMessageCount();
|
int count = ifolder.getMessageCount();
|
||||||
db.folder().setFolderTotal(folder.id, count < 0 ? null : count);
|
db.folder().setFolderTotal(folder.id, count < 0 ? null : count);
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkerFts.init(context, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void onDelete(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPFolder ifolder) throws MessagingException {
|
private static void onDelete(Context context, JSONArray jargs, EntityFolder folder, EntityMessage message, IMAPFolder ifolder) throws MessagingException {
|
||||||
|
@ -1988,8 +1986,6 @@ class Core {
|
||||||
Log.i(folder.name + " end sync state=" + state);
|
Log.i(folder.name + " end sync state=" + state);
|
||||||
db.folder().setFolderSyncState(folder.id, null);
|
db.folder().setFolderSyncState(folder.id, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
WorkerFts.init(context, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static EntityMessage synchronizeMessage(
|
static EntityMessage synchronizeMessage(
|
||||||
|
|
|
@ -499,10 +499,14 @@ public interface DaoMessage {
|
||||||
@Query("UPDATE message SET revisions = :revisions WHERE id = :id")
|
@Query("UPDATE message SET revisions = :revisions WHERE id = :id")
|
||||||
int setMessageRevisions(long id, Integer revisions);
|
int setMessageRevisions(long id, Integer revisions);
|
||||||
|
|
||||||
@Query("UPDATE message SET content = :content WHERE id = :id")
|
@Query("UPDATE message" +
|
||||||
|
" SET content = :content, fts = 0" +
|
||||||
|
" WHERE id = :id")
|
||||||
int setMessageContent(long id, boolean content);
|
int setMessageContent(long id, boolean content);
|
||||||
|
|
||||||
@Query("UPDATE message SET content = :content, plain_only = :plain_only, preview = :preview, warning = :warning WHERE id = :id")
|
@Query("UPDATE message" +
|
||||||
|
" SET content = :content, fts = 0, plain_only = :plain_only, preview = :preview, warning = :warning" +
|
||||||
|
" WHERE id = :id")
|
||||||
int setMessageContent(long id, boolean content, Boolean plain_only, String preview, String warning);
|
int setMessageContent(long id, boolean content, Boolean plain_only, String preview, String warning);
|
||||||
|
|
||||||
@Query("UPDATE message SET size = :size, total = :total WHERE id = :id")
|
@Query("UPDATE message SET size = :size, total = :total WHERE id = :id")
|
||||||
|
|
|
@ -101,14 +101,13 @@ public class EntityOperation {
|
||||||
jargs.put(value);
|
jargs.put(value);
|
||||||
|
|
||||||
if (ADD.equals(name)) {
|
if (ADD.equals(name)) {
|
||||||
db.message().setMessageFts(message.id, false);
|
|
||||||
WorkerFts.init(context, false);
|
|
||||||
|
|
||||||
if (EntityMessage.PGP_SIGNENCRYPT.equals(message.encrypt) ||
|
if (EntityMessage.PGP_SIGNENCRYPT.equals(message.encrypt) ||
|
||||||
EntityMessage.SMIME_SIGNENCRYPT.equals(message.encrypt)) {
|
EntityMessage.SMIME_SIGNENCRYPT.equals(message.encrypt)) {
|
||||||
EntityFolder folder = db.folder().getFolder(message.folder);
|
EntityFolder folder = db.folder().getFolder(message.folder);
|
||||||
if (folder != null && EntityFolder.DRAFTS.equals(folder.type))
|
if (folder != null && EntityFolder.DRAFTS.equals(folder.type)) {
|
||||||
|
WorkerFts.init(context, false);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -252,8 +251,6 @@ public class EntityOperation {
|
||||||
}
|
}
|
||||||
|
|
||||||
EntityAttachment.copy(context, message.id, tmpid);
|
EntityAttachment.copy(context, message.id, tmpid);
|
||||||
|
|
||||||
WorkerFts.init(context, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cross account move
|
// Cross account move
|
||||||
|
|
|
@ -3649,6 +3649,7 @@ public class FragmentCompose extends FragmentBase {
|
||||||
draft.id = null;
|
draft.id = null;
|
||||||
draft.folder = db.folder().getOutbox().id;
|
draft.folder = db.folder().getOutbox().id;
|
||||||
draft.uid = null;
|
draft.uid = null;
|
||||||
|
draft.fts = false;
|
||||||
draft.ui_hide = false;
|
draft.ui_hide = false;
|
||||||
draft.id = db.message().insertMessage(draft);
|
draft.id = db.message().insertMessage(draft);
|
||||||
Helper.writeText(draft.getFile(context), body);
|
Helper.writeText(draft.getFile(context), body);
|
||||||
|
|
|
@ -170,6 +170,7 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||||
});
|
});
|
||||||
|
|
||||||
liveAccountNetworkState.observeForever(new Observer<List<TupleAccountNetworkState>>() {
|
liveAccountNetworkState.observeForever(new Observer<List<TupleAccountNetworkState>>() {
|
||||||
|
private boolean fts = false;
|
||||||
private List<TupleAccountNetworkState> accountStates = new ArrayList<>();
|
private List<TupleAccountNetworkState> accountStates = new ArrayList<>();
|
||||||
private ExecutorService queue = Helper.getBackgroundExecutor(1, "service");
|
private ExecutorService queue = Helper.getBackgroundExecutor(1, "service");
|
||||||
|
|
||||||
|
@ -258,6 +259,13 @@ public class ServiceSynchronize extends ServiceBase implements SharedPreferences
|
||||||
if (lastAccounts != accounts || lastOperations != operations) {
|
if (lastAccounts != accounts || lastOperations != operations) {
|
||||||
lastAccounts = accounts;
|
lastAccounts = accounts;
|
||||||
lastOperations = operations;
|
lastOperations = operations;
|
||||||
|
if (operations == 0) {
|
||||||
|
fts = true;
|
||||||
|
WorkerFts.init(ServiceSynchronize.this, false);
|
||||||
|
} else if (fts) {
|
||||||
|
fts = false;
|
||||||
|
WorkerFts.cancel(ServiceSynchronize.this);
|
||||||
|
}
|
||||||
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
|
||||||
nm.notify(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(lastAccounts, lastOperations).build());
|
nm.notify(Helper.NOTIFICATION_SYNCHRONIZE, getNotificationService(lastAccounts, lastOperations).build());
|
||||||
}
|
}
|
||||||
|
|
|
@ -419,6 +419,7 @@ public class ServiceUI extends IntentService {
|
||||||
// A new message ID is needed for a new (wearable) notification
|
// A new message ID is needed for a new (wearable) notification
|
||||||
db.message().deleteMessage(id);
|
db.message().deleteMessage(id);
|
||||||
message.id = null;
|
message.id = null;
|
||||||
|
message.fts = false;
|
||||||
message.id = db.message().insertMessage(message);
|
message.id = db.message().insertMessage(message);
|
||||||
if (message.content)
|
if (message.content)
|
||||||
EntityMessage.getFile(this, id)
|
EntityMessage.getFile(this, id)
|
||||||
|
|
|
@ -96,17 +96,20 @@ public class WorkerFts extends Worker {
|
||||||
.enqueueUniqueWork(getName(), ExistingWorkPolicy.REPLACE, workRequest);
|
.enqueueUniqueWork(getName(), ExistingWorkPolicy.REPLACE, workRequest);
|
||||||
|
|
||||||
Log.i("Queued " + getName());
|
Log.i("Queued " + getName());
|
||||||
} else if (immediately) {
|
} else if (immediately)
|
||||||
Log.i("Cancelling " + getName());
|
cancel(context);
|
||||||
WorkManager.getInstance(context).cancelUniqueWork(getName());
|
|
||||||
Log.i("Cancelled " + getName());
|
|
||||||
}
|
|
||||||
} catch (IllegalStateException ex) {
|
} catch (IllegalStateException ex) {
|
||||||
// https://issuetracker.google.com/issues/138465476
|
// https://issuetracker.google.com/issues/138465476
|
||||||
Log.w(ex);
|
Log.w(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cancel(Context context) {
|
||||||
|
Log.i("Cancelling " + getName());
|
||||||
|
WorkManager.getInstance(context).cancelUniqueWork(getName());
|
||||||
|
Log.i("Cancelled " + getName());
|
||||||
|
}
|
||||||
|
|
||||||
private static String getName() {
|
private static String getName() {
|
||||||
return WorkerFts.class.getSimpleName();
|
return WorkerFts.class.getSimpleName();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue