Skip to main content

Streamlit component that allows you to connect to Pera Wallet.

Project description

pera_wallet

A Streamlit component to connect to Pera Wallet.

Installation instructions

pip install pera-wallet

Usage instructions

"""Example usage of the Pera Wallet component."""

import streamlit as st

from pera_wallet import pera_wallet

if 'wallet' not in st.session_state:
    st.session_state.wallet = {'status': 'disconnected', 'address': None}

if 'txn' not in st.session_state:
    st.session_state.txn = None

NETWORK = 'testnet'

st.title('My App')


def account():
    with st.expander('Account', expanded=True):
        # Add msgpack-encoded transactions to sign, if needed
        transactions_to_sign = []

        wallet_state, txn_state = pera_wallet(
            network=NETWORK,
            transactions_to_sign=transactions_to_sign,
            key='pera_wallet',
        )

        st.session_state.wallet = wallet_state
        st.session_state.txn = txn_state

        if st.session_state.txn:
            match st.session_state.txn:
                case {'status': 'proposed'}:
                    st.info(
                        'Please open the Pera Wallet app to sign this transaction.',
                        icon='✍️',
                    )
                case {'status': 'submitted'}:
                    st.info(
                        'Transaction submitted. Waiting for confirmation.',
                        icon='⏳',
                    )
                case {'status': 'confirmed', 'txId': tx_id}:
                    st.success(
                        f'Transaction confirmed! View your transaction on [lora](https://lora.algokit.io/{NETWORK}/transaction/{tx_id}) the explorer.',
                        icon='🥳',
                    )
                case {'status': 'failed', 'msg': msg}:
                    st.error(f'Transaction failed: {msg}', icon='😞')

    if st.session_state.wallet['status'] == 'unavailable':
        st.error('Wallet is only available in secure contexts (HTTPS).')
    else:
        st.caption(
            f'Connected address: {st.session_state.wallet["address"]}'
            if st.session_state.wallet['status'] == 'connected'
            else 'Connect your wallet to begin.'
        )


account()

if not st.session_state.wallet['address']:
    st.stop()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pera_wallet-0.0.14.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pera_wallet-0.0.14-py3-none-any.whl (14.2 MB view details)

Uploaded Python 3

File details

Details for the file pera_wallet-0.0.14.tar.gz.

File metadata

  • Download URL: pera_wallet-0.0.14.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for pera_wallet-0.0.14.tar.gz
Algorithm Hash digest
SHA256 ce52a6546e17cc5b0fcd0ee039a158f2088446520a129839477a3f47fe3a311d
MD5 7b201834b6693269c8a59ae7883ea1d8
BLAKE2b-256 9076567b08128b32d214ad3239a9867d1b16de55204afbfc960c49724315bae9

See more details on using hashes here.

File details

Details for the file pera_wallet-0.0.14-py3-none-any.whl.

File metadata

  • Download URL: pera_wallet-0.0.14-py3-none-any.whl
  • Upload date:
  • Size: 14.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.11.9

File hashes

Hashes for pera_wallet-0.0.14-py3-none-any.whl
Algorithm Hash digest
SHA256 e19fadfd521a19eb8aea55f2dcc36f6e3084633c2a15b8ce56c356a8f4542c32
MD5 91ac357001fd902dcaff60d093a898d6
BLAKE2b-256 389f28794445be8bfffe9dd57a0d3530ba3e017d296e0a2139a067cb9f01a477

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page