sharded-gotify/ui/src/stores/SnackBarStore.ts

29 lines
699 B
TypeScript

import {EventEmitter} from 'events';
import dispatcher, {IEvent} from './dispatcher';
class SnackBarStore extends EventEmitter {
public messages: string[] = [];
public next(): string {
if (!this.hasNext()) {
throw new Error("no such element")
}
return this.messages.shift() as string;
}
public hasNext(): boolean {
return this.messages.length !== 0;
}
public handle(data: IEvent): void {
if (data.type === 'SNACK') {
this.messages.push(data.payload);
this.emit('change');
}
}
}
const store = new SnackBarStore();
dispatcher.register(store.handle.bind(store));
export default store;