mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-05 04:19:21 +01:00
Added folder setting to disable automatically downloading of message texts and attachments
This commit is contained in:
@@ -987,17 +987,19 @@ public class ServiceSynchronize extends LifecycleService {
|
||||
db.endTransaction();
|
||||
}
|
||||
|
||||
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this);
|
||||
boolean metered = (isMetered == null || isMetered);
|
||||
if (folder.download) {
|
||||
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this);
|
||||
boolean metered = (isMetered == null || isMetered);
|
||||
|
||||
try {
|
||||
db.beginTransaction();
|
||||
downloadMessage(
|
||||
ServiceSynchronize.this, metered,
|
||||
folder, ifolder, (IMAPMessage) imessage, message.id);
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
try {
|
||||
db.beginTransaction();
|
||||
downloadMessage(
|
||||
ServiceSynchronize.this, metered,
|
||||
folder, ifolder, (IMAPMessage) imessage, message.id);
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
} catch (MessageRemovedException ex) {
|
||||
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
|
||||
@@ -1071,17 +1073,19 @@ public class ServiceSynchronize extends LifecycleService {
|
||||
db.endTransaction();
|
||||
}
|
||||
|
||||
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this);
|
||||
boolean metered = (isMetered == null || isMetered);
|
||||
if (folder.download) {
|
||||
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this);
|
||||
boolean metered = (isMetered == null || isMetered);
|
||||
|
||||
try {
|
||||
db.beginTransaction();
|
||||
downloadMessage(
|
||||
ServiceSynchronize.this, metered,
|
||||
folder, ifolder, (IMAPMessage) e.getMessage(), message.id);
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
try {
|
||||
db.beginTransaction();
|
||||
downloadMessage(
|
||||
ServiceSynchronize.this, metered,
|
||||
folder, ifolder, (IMAPMessage) e.getMessage(), message.id);
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
}
|
||||
}
|
||||
} catch (MessageRemovedException ex) {
|
||||
Log.w(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
|
||||
@@ -2104,46 +2108,48 @@ public class ServiceSynchronize extends LifecycleService {
|
||||
|
||||
db.folder().setFolderSyncState(folder.id, "downloading");
|
||||
|
||||
//fp.add(IMAPFolder.FetchProfileItem.MESSAGE);
|
||||
if (folder.download) {
|
||||
//fp.add(IMAPFolder.FetchProfileItem.MESSAGE);
|
||||
|
||||
// Download messages/attachments
|
||||
Log.i(Helper.TAG, folder.name + " download=" + imessages.length);
|
||||
for (int i = imessages.length - 1; i >= 0 && state.running(); i -= DOWNLOAD_BATCH_SIZE) {
|
||||
int from = Math.max(0, i - DOWNLOAD_BATCH_SIZE + 1);
|
||||
// Download messages/attachments
|
||||
Log.i(Helper.TAG, folder.name + " download=" + imessages.length);
|
||||
for (int i = imessages.length - 1; i >= 0 && state.running(); i -= DOWNLOAD_BATCH_SIZE) {
|
||||
int from = Math.max(0, i - DOWNLOAD_BATCH_SIZE + 1);
|
||||
|
||||
Message[] isub = Arrays.copyOfRange(imessages, from, i + 1);
|
||||
// Fetch on demand
|
||||
Message[] isub = Arrays.copyOfRange(imessages, from, i + 1);
|
||||
// Fetch on demand
|
||||
|
||||
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this);
|
||||
boolean metered = (isMetered == null || isMetered);
|
||||
Boolean isMetered = Helper.isMetered(ServiceSynchronize.this);
|
||||
boolean metered = (isMetered == null || isMetered);
|
||||
|
||||
for (int j = isub.length - 1; j >= 0 && state.running(); j--)
|
||||
try {
|
||||
db.beginTransaction();
|
||||
if (ids[from + j] != null) {
|
||||
downloadMessage(
|
||||
this, metered,
|
||||
folder, ifolder, (IMAPMessage) isub[j], ids[from + j]);
|
||||
Thread.sleep(20);
|
||||
for (int j = isub.length - 1; j >= 0 && state.running(); j--)
|
||||
try {
|
||||
db.beginTransaction();
|
||||
if (ids[from + j] != null) {
|
||||
downloadMessage(
|
||||
this, metered,
|
||||
folder, ifolder, (IMAPMessage) isub[j], ids[from + j]);
|
||||
Thread.sleep(20);
|
||||
}
|
||||
db.setTransactionSuccessful();
|
||||
} catch (FolderClosedException ex) {
|
||||
throw ex;
|
||||
} catch (FolderClosedIOException ex) {
|
||||
throw ex;
|
||||
} catch (Throwable ex) {
|
||||
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
// Free memory
|
||||
((IMAPMessage) isub[j]).invalidateHeaders();
|
||||
}
|
||||
db.setTransactionSuccessful();
|
||||
} catch (FolderClosedException ex) {
|
||||
throw ex;
|
||||
} catch (FolderClosedIOException ex) {
|
||||
throw ex;
|
||||
} catch (Throwable ex) {
|
||||
Log.e(Helper.TAG, folder.name + " " + ex + "\n" + Log.getStackTraceString(ex));
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
// Free memory
|
||||
((IMAPMessage) isub[j]).invalidateHeaders();
|
||||
}
|
||||
|
||||
if (state.running())
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
if (state.running())
|
||||
try {
|
||||
Thread.sleep(100);
|
||||
} catch (InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (state.running)
|
||||
|
||||
Reference in New Issue
Block a user