UNPKG

@bigdigital/kiosk-content-sdk

Version:

A Firebase-powered Content Management System SDK optimized for kiosks with offline support, template management, and real-time connection monitoring

65 lines (51 loc) 1.65 kB
import { KioskConnection, KioskConnectionOptions } from './KioskConnection'; export interface MonitoringOptions { url: string; onConnectionUpdate?: (isConnected: boolean) => void; } export class KioskSDK { private connection: KioskConnection | null = null; private currentKioskId: string = 'default'; constructor(initialKioskId: string = 'default') { this.currentKioskId = initialKioskId; } public setKioskId(kioskId: string) { this.currentKioskId = kioskId; // Disconnect existing connection if the kioskId changes if (this.connection) { this.disconnect(); } } public initializeMonitoring(options: MonitoringOptions): KioskConnection { if (this.connection) { this.disconnect(); } this.connection = new KioskConnection({ url: options.url, kioskId: this.currentKioskId, onConnectionUpdate: options.onConnectionUpdate }); // Connect immediately after initialization this.connection.connect(); return this.connection; } public connect(url: string, onConnectionUpdate?: (isConnected: boolean) => void): void { this.initializeMonitoring({ url, onConnectionUpdate }); } public async disconnect(): Promise<void> { if (this.connection) { await this.connection.disconnect(); this.connection = null; } } public isConnected(): boolean { return this.connection?.isConnectionOpen() || false; } public getCurrentKioskId(): string { return this.currentKioskId; } } // Create and export singleton instance export const kioskSDK = new KioskSDK('default'); // Export types export type { KioskConnectionOptions };