Using HALO in Typescript
To create or join a space in ECHO, the user must first establish a HALO identity. This can be done by creating a new identity or accepting a device join invitation.
Obtaining identity
import { Client } from '@dxos/client';
const client = new Client();await client.initialize();const _identity = client.halo.identity.get();
The object returned is of type Identity
.
Creating an identity
Create a new identity:
import { Client } from '@dxos/client';
const client = new Client();await client.initialize();const _identity = await client.halo.createIdentity();
Before data can be manipulated, a space
must be obtained.
Receiving a device join invitation
We often want to add a device to the same HALO identity. You can accept a device join invitation by providing the invitation code and the auth code to the DXOS client.
import { type Client } from '@dxos/client';import { InvitationEncoder } from '@dxos/client-protocol';
/** Accepts a device join invitation by prompting the user for: * - invitation code * - authentication code */export const acceptInvitation = async ( client: Client, deviceInvitationCode: string,) => { const decodedInvitation = InvitationEncoder.decode(deviceInvitationCode); const invitationResult = client.halo.join(decodedInvitation);
if (decodedInvitation.authCode) { await invitationResult.authenticate(decodedInvitation.authCode); } else { const authCode = '123456'; // Take this as input from the user. await invitationResult.authenticate(authCode); }};