# Events

How Joey mobile signals account changes, network changes and disconnects over WalletConnect.

## What Joey sends

| Event | Sent by Joey? | Notes |
|---|---|---|
| `session_delete` | **Yes** | See below. |
| `accountsChanged`, `chainChanged` | No | Listed in the approved session, but not currently sent. |
| `connect`, `disconnect` (namespace events) | No | Listed in the approved session, but not currently sent. |
| `session_update`, `session_extend` | No | |

Joey ends the session (`session_delete`, reason `USER_DISCONNECTED`) when:

- the user disconnects your app under **Settings → WalletConnect**;
- the user **switches account or network** in Joey: every session is ended;
- your app sends a new connection proposal: Joey clears older sessions from the same app first.

## Handling it

Treat `session_delete` as "the user disconnected, or changed account or network". Clear your session state, and offer to connect again. The new session's account is in `namespaces.xrpl.accounts`, formatted as `xrpl:<chain>:<address>`.

```ts
provider.on('session_delete', ({ topic }) => {
  clearSession(topic);
  showConnectButton();
});

provider.on('display_uri', (uri: string) => {
  // Show as a QR code, or open a deep link on mobile (see Deeplinking)
});
```

## Request expiry

If a request's `expiryTimestamp` has already passed when it reaches Joey, Joey replies with error `8000`. If it expires while the user is reviewing it, Joey closes the request without replying.

## Event names in wc-client

wc-client re-exports WalletConnect's provider event names as `core.typings.EProviderEvents`:

```ts
PROPOSAL = 'session_proposal', EXTEND = 'session_extend', EXPIRE = 'session_expire',
REQUEST = 'session_request', REQUEST_SENT = 'session_request_sent',
AUTHENTICATE = 'session_authenticate', PROPOSAL_EXPIRE = 'proposal_expire',
REQUEST_EXPIRE = 'session_request_expire', CONNECT = 'session_connect',
PING = 'session_ping', EVENT = 'session_event', UPDATE = 'session_update',
DELETE = 'session_delete', URI = 'display_uri', PROVIDER_ERROR = 'error',
PROVIDER_CONNECT = 'connect', PROVIDER_DISCONNECT = 'disconnect',
PROVIDER_UPDATE = 'update', PROVIDER_DELETE = 'delete',
WC_READY = 'wc_ready', WC_SESSION_SYNC = 'wc_sessionSync'
```
