|
|
|
@ -1,4 +1,5 @@
|
|
|
|
|
import type { AppStore, AppState, AppSocket } from 'tailchat-shared';
|
|
|
|
|
import { useEffect } from 'react';
|
|
|
|
|
import { AppStore, AppState, AppSocket, useMemoizedFn } from 'tailchat-shared';
|
|
|
|
|
|
|
|
|
|
let _store: AppStore;
|
|
|
|
|
export function setGlobalStore(store: AppStore) {
|
|
|
|
@ -22,3 +23,25 @@ export function getGlobalSocket(): AppSocket | null {
|
|
|
|
|
}
|
|
|
|
|
return _socket;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取全局socket并监听
|
|
|
|
|
*/
|
|
|
|
|
export function useGlobalSocketEvent<T>(
|
|
|
|
|
eventName: string,
|
|
|
|
|
callback: (data: T) => void
|
|
|
|
|
) {
|
|
|
|
|
const fn = useMemoizedFn(callback);
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
if (_socket) {
|
|
|
|
|
_socket.listen(eventName, fn);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
if (_socket) {
|
|
|
|
|
_socket.removeListener(eventName, fn);
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}, []);
|
|
|
|
|
}
|
|
|
|
|