From efdce8c557622178c0da242e72555a2e60ee11c2 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Wed, 26 Aug 2020 10:22:04 +0300 Subject: [PATCH] Account: logout and clear cache on account removal. --- .../etesync/syncadapter/ui/AccountActivity.kt | 34 ++++++++++++++----- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt b/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt index 9bf4d69e..3998271f 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt +++ b/app/src/main/java/com/etesync/syncadapter/ui/AccountActivity.kt @@ -29,6 +29,7 @@ import androidx.core.content.ContextCompat import at.bitfire.ical4android.TaskProvider.Companion.OPENTASK_PROVIDERS import at.bitfire.vcard4android.ContactsStorageException import com.etebase.client.CollectionManager +import com.etebase.client.exceptions.EtebaseException import com.etesync.syncadapter.* import com.etesync.journalmanager.Crypto import com.etesync.journalmanager.Exceptions @@ -509,17 +510,32 @@ class AccountActivity : BaseActivity(), Toolbar.OnMenuItemClickListener, PopupMe private fun deleteAccount() { val accountManager = AccountManager.get(this) val settings = AccountSettings(this@AccountActivity, account) - val authToken = settings.authToken - val principal = settings.uri?.toHttpUrlOrNull() doAsync { - try { - val httpClient = HttpClient.Builder(this@AccountActivity, null, authToken).build().okHttpClient - val journalAuthenticator = JournalAuthenticator(httpClient, principal!!) - journalAuthenticator.invalidateAuthToken(authToken) - } catch (e: Exceptions.HttpException) { - // Ignore failures for now - Logger.log.warning(e.toString()) + if (settings.isLegacy) { + val authToken = settings.authToken + val principal = settings.uri?.toHttpUrlOrNull() + + try { + val httpClient = HttpClient.Builder(this@AccountActivity, null, authToken).build().okHttpClient + val journalAuthenticator = JournalAuthenticator(httpClient, principal!!) + journalAuthenticator.invalidateAuthToken(authToken) + } catch (e: Exceptions.HttpException) { + // Ignore failures for now + Logger.log.warning(e.toString()) + } + } else { + val etebaseLocalCache = EtebaseLocalCache.getInstance(this@AccountActivity, account.name) + etebaseLocalCache.clearUserCache() + + try { + val httpClient = HttpClient.Builder(this@AccountActivity).build() + val etebase = EtebaseLocalCache.getEtebase(this@AccountActivity, httpClient.okHttpClient, settings) + etebase.logout() + } catch(e: EtebaseException) { + // Ignore failures for now + Logger.log.warning(e.toString()) + } } }