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.13.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.13-py3-none-any.whl (14.2 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pera_wallet-0.0.13.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.13.tar.gz
Algorithm Hash digest
SHA256 16d57032daf2eb6e07f72c930dc66ed4a38db1ffac288e927ebafaab4f04ee19
MD5 cce8cc6bdb70139aaa0ccb4697285eb1
BLAKE2b-256 f79b2124f6328a22cdb1e3ec8e4ce22ace9b3f69c61997e316d4b96f431bddc8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pera_wallet-0.0.13-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.13-py3-none-any.whl
Algorithm Hash digest
SHA256 9aee09146b5db909d9ef6d3534b3032c470feabae6e15d0595378a8631874ffe
MD5 49ed6380ba5c039fdce533c8d1f0569c
BLAKE2b-256 5f1da1d0072c6fc18cf775911468b1db13b41ea41dc347cc6ad49ec9da0f2791

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