Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8336465c authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

feature: start to implement the LogoutReceiver

chore: add small refactoring about the notification
parent a1c399c4
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@ import at.bitfire.davdroid.R
import at.bitfire.davdroid.log.Logger
import at.bitfire.davdroid.settings.AccountSettings
import at.bitfire.davdroid.syncadapter.AccountUtils
import at.bitfire.davdroid.ui.NotificationUtils.NOTIFY_SWITCH_TO_OPENID
import at.bitfire.davdroid.ui.NotificationUtils.notifyIfPossible

/**
@@ -30,7 +31,7 @@ class BootCompletedReceiver: BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        Logger.log.info("Device has been rebooted; checking sync intervals etc.")

        val isOpenIdAvailable = isOpenIdAvailable()
//        val isOpenIdAvailable = isOpenIdAvailable()
        val eAccountType = context.getString(R.string.eelo_account_type)

        val accountManager = AccountManager.get(context)
@@ -46,10 +47,10 @@ class BootCompletedReceiver: BroadcastReceiver() {
                }
            }
    }

    private fun isOpenIdAvailable(): Boolean {
        return false
    }
    //TODO will I need it ?
//    private fun isOpenIdAvailable(): Boolean {
//        return false
//    }

    private fun isLoggedWithOpenId(account: Account, accountManager: AccountManager): Boolean {
        val hasAuthStateData = accountManager.getUserData(account, AccountSettings.KEY_AUTH_STATE) != null
@@ -59,7 +60,6 @@ class BootCompletedReceiver: BroadcastReceiver() {

    private fun notifySwitchToOpenId(account: Account, context: Context) {
        val notifTag = "Switch to openID"
        val notifId = 3310
        val notifTitle = context.getString(R.string.notification_account_title)
        val notifText = context.getString(R.string.notification_switch_to_openId_text)
        val notifIntent = generateLogoutIntent(account.name, context)
@@ -73,12 +73,12 @@ class BootCompletedReceiver: BroadcastReceiver() {
            .build()

        val notificationManager = NotificationManagerCompat.from(context)
        notificationManager.notifyIfPossible(notifTag, notifId, notification)
        notificationManager.notifyIfPossible(notifTag, NOTIFY_SWITCH_TO_OPENID, notification)
    }

    private fun generateLogoutIntent(accountName: String, context: Context): PendingIntent {
        val logoutIntent = Intent(context, LogoutReceiver::class.java).apply {
            putExtra("ACCOUNT_NAME", accountName)
            putExtra(AccountManager.KEY_ACCOUNT_NAME, accountName)
        }

        return  PendingIntent.getBroadcast(context,
+21 −1
Original line number Diff line number Diff line
package at.bitfire.davdroid.receiver

import android.accounts.Account
import android.accounts.AccountManager
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import at.bitfire.davdroid.R
import at.bitfire.davdroid.log.Logger

class LogoutReceiver(): BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        TODO("Not yet implemented")
        Logger.log.info("LogoutReceiver.onReceive()")
        if (context == null) return

        val accountName = intent?.extras?.getString(AccountManager.KEY_ACCOUNT_NAME, null) ?: return

        val accountManager = AccountManager.get(context)

        val eAccounts = accountManager.getAccountsByType(context.getString(R.string.eelo_account_type))

        eAccounts.forEach {
            if (it.name == accountName) {
            // todo: https://developer.android.com/reference/android/accounts/AccountManager#removeAccount(android.accounts.Account,%20android.app.Activity,%20android.accounts.AccountManagerCallback%3Candroid.os.Bundle%3E,%20android.os.Handler)
            accountManager.removeAccount(it, null,null, null)
            }
        }

        // todo https://developer.android.com/reference/android/accounts/AccountManager#startAddAccountSession(java.lang.String,%20java.lang.String,%20java.lang.String[],%20android.os.Bundle,%20android.app.Activity,%20android.accounts.AccountManagerCallback%3Candroid.os.Bundle%3E,%20android.os.Handler)
    }
}
 No newline at end of file
+1 −0
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ object NotificationUtils {
    const val NOTIFY_SYNC_EXPEDITED = 14
    const val NOTIFY_TASKS_PROVIDER_TOO_OLD = 20
    const val NOTIFY_PERMISSIONS = 21
    const val NOTIFY_SWITCH_TO_OPENID = 22

    const val NOTIFY_LICENSE = 100