mirror of https://github.com/immich-app/immich.git
refactor(web): websocket events (#7152)
parent
bbf7a54c65
commit
c84c0bae6c
@ -1,15 +1,18 @@
|
||||
<script lang="ts">
|
||||
import { websocketStore } from '$lib/stores/websocket';
|
||||
import { websocketEvents } from '$lib/stores/websocket';
|
||||
import type { AssetStore } from '$lib/stores/assets.store';
|
||||
import { onMount } from 'svelte';
|
||||
|
||||
export let assetStore: AssetStore | null;
|
||||
|
||||
websocketStore.onAssetUpdate.subscribe((asset) => {
|
||||
if (asset && asset.originalFileName && assetStore) {
|
||||
assetStore.updateAsset(asset, true);
|
||||
onMount(() => {
|
||||
return websocketEvents.on('on_asset_update', (asset) => {
|
||||
if (asset.originalFileName && assetStore) {
|
||||
assetStore.updateAsset(asset, true);
|
||||
|
||||
assetStore.removeAsset(asset.id); // Update timeline
|
||||
assetStore.addAsset(asset);
|
||||
}
|
||||
assetStore.removeAsset(asset.id); // Update timeline
|
||||
assetStore.addAsset(asset);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
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);
|
||||
};
|
||||
}
|
||||
|
||||
function once<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
|
||||
ev: Ev,
|
||||
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
|
||||
) {
|
||||
socket.once(ev, listener);
|
||||
return () => {
|
||||
socket.off(ev, listener);
|
||||
};
|
||||
}
|
||||
|
||||
function off<Ev extends ReservedOrUserEventNames<ReservedEvents, ListenEvents>>(
|
||||
ev: Ev,
|
||||
listener: ReservedOrUserListener<ReservedEvents, ListenEvents, Ev>,
|
||||
) {
|
||||
socket.off(ev, listener);
|
||||
}
|
||||
|
||||
return { on, once, off };
|
||||
}
|
||||
Loading…
Reference in New Issue