Manage wallet lifecycle states

Users can have multiple states in their wallet lifecycle: having a wallet, having wallet backups, having certain recovery methods available, and more.

After initializing Portal for your user, it's crucial to determine their wallet's lifecycle state to ensure a healthy wallet state. We provide several helper methods to easily derive the state of your users' wallets:

// Checks if the user has created a wallet on any device.
portal.doesWalletExist()

// Checks if the user's wallet share is on their current device.
portal.isWalletOnDevice()

// Checks if the user has backed up their wallet.
portal.isWalletBackedUp()

// Checks if the user can recover their wallet.
portal.isWalletRecoverable()

// Returns a list of available recovery methods based on the user's backups.
portal.availableRecoveryMethods()

These methods can be used together to understand the user's wallet state and determine the next steps. For example:

suspend fun manageWalletState(portal: Portal) {
    try {
        // Determine the wallet's state.
        let walletExists = portal.doesWalletExist()
        let walletExistsOnDevice = portal.isWalletOnDevice()
        let walletIsRecoverable = portal.isWalletRecoverable()
        
        if (!walletExists) {
            // Create and back up the wallet using portal.createWallet() and portal.backup().
        } else if (!walletExistsOnDevice) {
            if (walletIsRecoverable) {
                // Recover the wallet using portal.recover().
            } else {
                // Inform the user to back up the wallet on the original device.
            }
        } else {
            // The wallet is ready to use.
        }
    } catch(e: Exception) {
        // Handle any errors that occur.
    }
}

And that's it! You're now helping your users maintain a safe and secure experience with their wallets while using your apps.

Last updated