Disabling A Client
Overview
The disable method is not required for providers to implement. However, it is useful for providers that have a sessioning system in place when a client has previously called enable().
The aim of the disable method is for clients to request that these sessions be removed from the provider.
Disabling the client with all providers
Assuming a client has been enabled with one or all providers, you can remove the client from all available providers by:
- Javascript
 - TypeScript
 
// initialized client
client.onDisable(({ error, result }) => {
  if (error) {
    console.error('error:', error);
    return;
  }
  console.log(result);
  /*
  {
    genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
    genesisId: 'testnet-v1.0',
    providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
  }
  */
});
// send a disable request
client.disable();
import { IAVMWebClientCallbackOptions } from '@agoralabs-sh/avm-web-provider';
// initialized client
client.onDisable(({ error, result }: IAVMWebClientCallbackOptions) => {
  if (error) {
    console.error('error:', error);
    return;
  }
  console.log(result);
  /*
  {
    genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
    genesisId: 'testnet-v1.0',
    providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
  }
  */
});
// send a disable request
client.disable();
If any providers do not support the disable  method, then a MethodNotSupportedError should be returned.
Disabling the client with a specific provider and network
If you want to target a specific provider and network, you can simply pass the ID of the provider and the genesis hash of the network in the params:
- Javascript
 - TypeScript
 
// initialized client
client.onDisable(({ error, result }) => {
  if (error) {
    console.error('error:', error);
    return;
  }
  console.log(result);
  /*
    genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
    genesisId: 'testnet-v1.0',
    providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
  }
  */
});
// send a disable request
client.disable({
  genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
  providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
});
import { IAVMWebClientCallbackOptions } from '@agoralabs-sh/avm-web-provider';
const providerId: string = '02657eaf-be17-4efc-b0a4-19d654b2448e';
// initialized client
client.onDisable(({ error, result }: IAVMWebClientCallbackOptions) => {
  if (error) {
    console.error('error:', error);
    return;
  }
  console.log(result);
  /*
  {
    genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
    genesisId: 'testnet-v1.0',
    providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
  }
  */
});
// send a disable request
client.disable({
  genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
  providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
});
If the network and the provider ID is specified, and the provider does not support the network, then a NetworkNotSupportedError should be thrown.
Disabling a client for a specific session
If you want to remove a specific session, you can provide the session ID(s) in the params:
- Javascript
 - TypeScript
 
// initialized client
client.onDisable(({ error, result }) => {
  if (error) {
    console.error('error:', error);
    return;
  }
  console.log(result);
  /*
  {
    genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
    genesisId: 'testnet-v1.0',
    providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
    sessionIds: ['ab192498-0c63-4028-80fd-f148710611d8'],
  }
  */
});
// send a disable request
client.disable({
  sessionIds: ['ab192498-0c63-4028-80fd-f148710611d8'],
});
import { IAVMWebClientCallbackOptions } from '@agoralabs-sh/avm-web-provider';
// initialized client
client.onDisable(({ error, result }: IAVMWebClientCallbackOptions) => {
  if (error) {
    console.error('error:', error);
    return;
  }
  console.log(result);
  /*
  {
    genesisHash: 'SGO1GKSzyE7IEPItTxCByw9x8FmnrCDexi9/cOUJOiI=',
    genesisId: 'testnet-v1.0',
    providerId: '02657eaf-be17-4efc-b0a4-19d654b2448e',
    sessionIds: ['ab192498-0c63-4028-80fd-f148710611d8'],
  }
  */
});
// send a disable request
client.disable({
  sessionIds: ['ab192498-0c63-4028-80fd-f148710611d8'],
});