mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 15:11:03 +00:00
Check running while synchronizing folders/messages
This commit is contained in:
parent
76f49ee748
commit
bee199ccf8
1 changed files with 12 additions and 5 deletions
|
@ -425,7 +425,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
|
||||
// Update folder list
|
||||
try {
|
||||
synchronizeFolders(account, istore);
|
||||
synchronizeFolders(account, istore, state);
|
||||
} catch (MessagingException ex) {
|
||||
// Don't show to user
|
||||
throw new IllegalStateException("synchronize folders", ex);
|
||||
|
@ -505,7 +505,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
});
|
||||
|
||||
// Fetch e-mail
|
||||
synchronizeMessages(account, folder, ifolder);
|
||||
synchronizeMessages(account, folder, ifolder, state);
|
||||
|
||||
// Flags (like "seen") at the remote could be changed while synchronizing
|
||||
|
||||
|
@ -1050,7 +1050,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
}
|
||||
}
|
||||
|
||||
private void synchronizeFolders(EntityAccount account, IMAPStore istore) throws MessagingException {
|
||||
private void synchronizeFolders(EntityAccount account, IMAPStore istore, ServiceState state) throws MessagingException {
|
||||
try {
|
||||
Log.v(Helper.TAG, "Start sync folders");
|
||||
|
||||
|
@ -1065,6 +1065,9 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
Log.i(Helper.TAG, "Remote folder count=" + ifolders.length);
|
||||
|
||||
for (Folder ifolder : ifolders) {
|
||||
if (!state.running)
|
||||
return;
|
||||
|
||||
String[] attrs = ((IMAPFolder) ifolder).getAttributes();
|
||||
boolean selectable = true;
|
||||
for (String attr : attrs) {
|
||||
|
@ -1104,7 +1107,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
}
|
||||
}
|
||||
|
||||
private void synchronizeMessages(EntityAccount account, EntityFolder folder, IMAPFolder ifolder) throws MessagingException, IOException {
|
||||
private void synchronizeMessages(EntityAccount account, EntityFolder folder, IMAPFolder ifolder, ServiceState state) throws MessagingException, IOException {
|
||||
try {
|
||||
Log.v(Helper.TAG, folder.name + " start sync after=" + folder.after);
|
||||
|
||||
|
@ -1143,7 +1146,10 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
long fetch = SystemClock.elapsedRealtime();
|
||||
Log.i(Helper.TAG, folder.name + " remote fetched=" + (SystemClock.elapsedRealtime() - fetch) + " ms");
|
||||
|
||||
for (Message imessage : imessages)
|
||||
for (Message imessage : imessages) {
|
||||
if (!state.running)
|
||||
return;
|
||||
|
||||
try {
|
||||
uids.remove(ifolder.getUID(imessage));
|
||||
} catch (MessageRemovedException ex) {
|
||||
|
@ -1154,6 +1160,7 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
|
||||
db.folder().setFolderError(folder.id, Helper.formatThrowable(ex));
|
||||
}
|
||||
}
|
||||
|
||||
// Delete local messages not at remote
|
||||
Log.i(Helper.TAG, folder.name + " delete=" + uids.size());
|
||||
|
|
Loading…
Reference in a new issue