Let MailboxManager#unPair() return a boolean for whether it could wipe the mailbox

This commit is contained in:
Torsten Grote
2022-04-27 08:38:43 -03:00
parent d080af4b7a
commit 3138213f39
2 changed files with 10 additions and 4 deletions

View File

@@ -45,7 +45,11 @@ public interface MailboxManager {
/**
* Unpairs the owner's mailbox and tries to wipe it.
* As this makes a network call, it should be run on the {@link IoExecutor}.
*
* @return true if we could wipe the mailbox, false if we couldn't.
* It is advised to inform the user to wipe the mailbox themselves,
* if we failed to wipe it.
*/
@IoExecutor
void unPair() throws DbException;
boolean unPair() throws DbException;
}

View File

@@ -132,17 +132,19 @@ class MailboxManagerImpl implements MailboxManager {
}
@Override
public void unPair() throws DbException {
public boolean unPair() throws DbException {
MailboxProperties properties = db.transactionWithNullableResult(true,
mailboxSettingsManager::getOwnMailboxProperties);
boolean wasWiped;
try {
api.wipeMailbox(properties);
wasWiped = true;
} catch (IOException | MailboxApi.ApiException e) {
// We wipe on a best-effort basis.
// If we can't do it, we still unpair.
logException(LOG, WARNING, e);
wasWiped = false;
}
db.transaction(false,
mailboxSettingsManager::removeOwnMailboxProperties);
return wasWiped;
}
}