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

Commit b88d14ac authored by Mohammed Althaf T's avatar Mohammed Althaf T 😊
Browse files

Merge branch '3511-main-ose-murena_login' into 'main-ose'

Initial Account Manager Transition - Part 6

See merge request !174
parents 33774fc8 e3300ddb
Loading
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -23,13 +23,6 @@ class PushNotificationManager @Inject constructor(
    private val notificationRegistry: NotificationRegistry
) {

    /**
     * Generates the notification ID for a push notification.
     */
    private fun notificationId(account: Account, dataType: SyncDataType): Int {
        return account.name.hashCode() + account.type.hashCode() + dataType.hashCode()
    }

    /**
     * Sends a notification to inform the user that a push notification has been received, the
     * sync has been scheduled, but it still has not run.
@@ -67,4 +60,12 @@ class PushNotificationManager @Inject constructor(
            .cancel(notificationId(account, dataType))
    }

    companion object {
        /**
         * Generates the notification ID for a push notification.
         */
        fun notificationId(account: Account, dataType: SyncDataType): Int {
            return account.name.hashCode() + account.type.hashCode() + dataType.hashCode()
        }
    }
}
+6 −12
Original line number Diff line number Diff line
@@ -6,8 +6,8 @@ package at.bitfire.davdroid.ui.account

import android.accounts.Account
import android.app.Activity
import android.content.Intent
import android.security.KeyChain
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.annotation.StringRes
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
@@ -69,6 +69,7 @@ import at.bitfire.davdroid.ui.composable.SettingsHeader
import at.bitfire.davdroid.ui.composable.SwitchSetting
import at.bitfire.davdroid.util.PermissionUtils
import at.bitfire.vcard4android.GroupMethod
import foundation.e.accountmanager.ui.setup.ReOAuthActivity
import kotlinx.coroutines.launch

@Composable
@@ -77,20 +78,13 @@ fun AccountSettingsScreen(
    account: Account,
    onNavWifiPermissionsScreen: () -> Unit
) {
    val context = LocalContext.current
    val model = hiltViewModel { factory: AccountSettingsModel.Factory ->
        factory.create(account)
    }
    val uiState by model.uiState.collectAsState()
    val canAccessWifiSsid by PermissionUtils.rememberCanAccessWifiSsid()

    // contract to open the browser for re-authentication
    val authRequestContract = rememberLauncherForActivityResult(model.authorizationContract()) { authResponse ->
        if (authResponse != null)
            model.authenticate(authResponse)
        else
            model.authCodeFailed()
    }

    AppTheme {
        AccountSettingsScreen(
            accountName = account.name,
@@ -123,9 +117,9 @@ fun AccountSettingsScreen(
            credentials = uiState.credentials,
            onUpdateCredentials = model::updateCredentials,
            onAuthenticateOAuth = {
                val request = model.newAuthorizationRequest()
                if (request != null)
                    authRequestContract.launch(request)
                val intent = Intent(context, ReOAuthActivity::class.java)
                intent.putExtra(AccountSettingsActivity.EXTRA_ACCOUNT, account)
                context.startActivity(intent)
            },
            isCredentialsUpdateAllowed = uiState.allowCredentialsChange,

+18 −0
Original line number Diff line number Diff line
@@ -19,13 +19,18 @@ package foundation.e.accountmanager.ui.setup

import android.accounts.Account
import android.os.Bundle
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.compose.setContent
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.platform.LocalContext
import androidx.core.app.NotificationManagerCompat
import androidx.hilt.navigation.compose.hiltViewModel
import at.bitfire.davdroid.R
import at.bitfire.davdroid.push.PushNotificationManager
import at.bitfire.davdroid.sync.SyncDataType
import at.bitfire.davdroid.ui.AppTheme
import at.bitfire.davdroid.ui.account.AccountSettingsActivity
import at.bitfire.davdroid.ui.account.AccountSettingsModel
@@ -77,6 +82,19 @@ fun OAuthHandlerScreen(

            // Sync after authenticated
            AccountHelper.scheduleSyncWithDelay(context)

            // Cancel all notifications for this account
            val notificationManager = NotificationManagerCompat.from(context)
            for (dataType in SyncDataType.entries) {
                val notificationId = PushNotificationManager.notificationId(account, dataType)
                notificationManager.cancel(notificationId)
            }

            Toast.makeText(
                context,
                context.getString(R.string.account_updated_toast),
                Toast.LENGTH_SHORT
            ).show()
        } else {
            model.authCodeFailed()
        }
+1 −0
Original line number Diff line number Diff line
@@ -36,4 +36,5 @@
    <string name="legacy_murena_login">Legacy Murena.io</string>

    <string name="sync_error_authentication_oauth">Authentication issue. Tap to sign in again</string>
    <string name="account_updated_toast">Account updated successfully</string>
</resources>