29 lines
1.1 KiB
TypeScript
29 lines
1.1 KiB
TypeScript
import { ADMIN_PUBKEYS } from '@/lib/admins';
|
|
import { SKATESPOTS_COORDINATOR } from '@/lib/coordinator';
|
|
import type { CordnRoom } from './room';
|
|
|
|
/**
|
|
* The app-wide community / feedback room.
|
|
*
|
|
* The gid is a stable literal, so the share link never changes when the bot key
|
|
* is rotated. The bot creates the room once and becomes the always-on approver;
|
|
* admins can still approve manually if the bot is down.
|
|
*/
|
|
/** Public key of the always-on community bot (private key lives on the VPS). */
|
|
export const COMMUNITY_BOT_PUBKEY = 'f9788a7dc43a2b227fd8a0d4ad8752b6f2a9dcd4bce48365acb21675ed1015f0';
|
|
|
|
export const COMMUNITY_ROOM: CordnRoom = {
|
|
// The bot is the room creator/owner; admins can approve as a fallback.
|
|
pubkey: COMMUNITY_BOT_PUBKEY,
|
|
identifier: 'community',
|
|
gid: 'skatespots:community',
|
|
name: 'SkateSpots Community',
|
|
admins: [...ADMIN_PUBKEYS, COMMUNITY_BOT_PUBKEY],
|
|
coordinator: {
|
|
url: SKATESPOTS_COORDINATOR.relays[0],
|
|
pubkey: SKATESPOTS_COORDINATOR.pubkey,
|
|
},
|
|
};
|
|
|
|
/** App/browser share link; the QR points here, not at `localhost`. */
|
|
export const COMMUNITY_INVITE_PATH = '/community';
|