https://github.com/agree-able/invite
simplify the room invitation flow
https://github.com/agree-able/invite
Last synced: about 1 month ago
JSON representation
simplify the room invitation flow
- Host: GitHub
- URL: https://github.com/agree-able/invite
- Owner: agree-able
- Created: 2024-11-27T04:35:14.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-12-10T03:37:00.000Z (5 months ago)
- Last Synced: 2025-04-12T22:55:27.241Z (about 1 month ago)
- Language: JavaScript
- Size: 39.1 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Agreeable Room Invitations
A utility for loading and configuring room settings with support for invites, domain-based configuration, and identity verification through Keybase.
## Installation
```bash
npm install @agree-able/invite
```## Quick Start
```javascript
import { load } from '@agree-able/invite'// Simple usage with direct invite
const config = { invite: 'your-invite-code' }
const result = await load(config, confirmEnterRoom)// Domain-based configuration with DID lookup
const config = {
domain: 'example.com',
loadDid: true
}
const result = await load(config, confirmEnterRoom)// With Keybase verification
const config = {
domain: 'example.com',
keybaseUsername: 'username',
privateKeyArmored: 'your-pgp-key'
}
const result = await load(config, confirmEnterRoom)
```## The confirmEnterRoom Function
The `confirmEnterRoom` function is required and must handle room entry expectations. It receives room expectations and host details, and should return an acceptance object.
```javascript
const confirmEnterRoom = async (expectations, hostDetails) => {
// expectations contains room requirements
// hostDetails may contain verification details if whoami is enabled
console.log('room rules', expectations.rules)
console.log('room reason', expectations.reason)// Example of checking whoami verification
if (hostDetails?.whoami?.keybase) {
const { verified, username } = hostDetails.whoami.keybase
if (!verified) {
throw new Error(`Keybase verification failed for ${username}`)
}
}// you must return the acceptance object back to the server
return {
reason: true, // 'agree to the reason for the room'
rules: true // 'agree to the rules for the room'
}
}
```## Key Features
- Direct invite code support
- Domain-based room key lookup
- DID (Decentralized Identifier) resolution
- Keybase identity verification
- PGP signing support## Configuration Options
The `load` function accepts a configuration object with the following options:
- `invite`: Direct invite code (z32 string)
- `domain`: Domain to lookup breakout room key from
- `loadDid`: Whether to load DID from domain
- `hostProveWhoami`: Enable host whoami verification
- `keybaseUsername`: Keybase username for verification
- `privateKeyArmoredFile`: File location of PGP private key
- `privateKeyArmored`: PGP private key in armored format## Returns
The function returns a Promise resolving to an object containing:
- `invite`: The room invite code
- `did`: The DID (if requested and available)## License
MIT