@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
text/typescript
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 };