Add method for unpairing to MailboxManager

This commit is contained in:
Torsten Grote
2022-04-20 11:49:05 -03:00
parent 4b7ee62190
commit fa3db0f888
4 changed files with 34 additions and 0 deletions

View File

@@ -131,4 +131,18 @@ class MailboxManagerImpl implements MailboxManager {
});
}
@Override
public void unPair() throws DbException {
MailboxProperties properties = db.transactionWithNullableResult(true,
mailboxSettingsManager::getOwnMailboxProperties);
try {
api.wipeMailbox(properties);
} 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);
}
db.transaction(false,
mailboxSettingsManager::removeOwnMailboxProperties);
}
}

View File

@@ -75,6 +75,17 @@ class MailboxSettingsManagerImpl implements MailboxSettingsManager {
}
}
@Override
public void removeOwnMailboxProperties(Transaction txn) throws DbException {
Settings s = new Settings();
s.put(SETTINGS_KEY_ONION, "");
s.put(SETTINGS_KEY_TOKEN, "");
settingsManager.mergeSettings(txn, s, SETTINGS_NAMESPACE);
for (MailboxHook hook : hooks) {
hook.mailboxUnpaired(txn);
}
}
@Override
public MailboxStatus getOwnMailboxStatus(Transaction txn)
throws DbException {