Files
immich/web/src/lib/utils/eventemitter.ts
Jason Rasmussen 4fedae4150 refactor: event manager (#25481)
* refactor: event manager

* fix: broken downloadFile endpoint
2026-01-23 18:02:23 -05:00

26 lines
713 B
TypeScript

import type {
DefaultEventsMap,
EventsMap,
ReservedOrUserEventNames,
ReservedOrUserListener,
} from '@socket.io/component-emitter';
import type { Socket } from 'socket.io-client';
export function createEventEmitter<
ListenEvents extends EventsMap = DefaultEventsMap,
EmitEvents extends EventsMap = ListenEvents,
ReservedEvents extends EventsMap = NonNullable<unknown>,
>(socket: Socket<ListenEvents, EmitEvents>) {
function on<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
ev: Ev,
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
) {
socket.on(ev, listener);
return () => {
socket.off(ev, listener);
};
}
return { on };
}