mirror of
https://github.com/mountain-loop/yaak.git
synced 2026-04-05 08:47:05 +02:00
Websocket Support (#159)
This commit is contained in:
@@ -19,6 +19,9 @@ import { useListenToTauriEvent } from './useListenToTauriEvent';
|
||||
import { pluginsAtom } from './usePlugins';
|
||||
import { useRequestUpdateKey } from './useRequestUpdateKey';
|
||||
import { settingsAtom } from './useSettings';
|
||||
import { websocketConnectionsAtom } from './useWebsocketConnections';
|
||||
import { websocketEventsQueryKey } from './useWebsocketEvents';
|
||||
import { websocketRequestsAtom } from './useWebsocketRequests';
|
||||
import { workspaceMetaAtom } from './useWorkspaceMeta';
|
||||
import { workspacesAtom } from './useWorkspaces';
|
||||
|
||||
@@ -31,13 +34,17 @@ export function useSyncModelStores() {
|
||||
const queryKey =
|
||||
payload.model.model === 'grpc_event'
|
||||
? grpcEventsQueryKey(payload.model)
|
||||
: payload.model.model === 'key_value'
|
||||
? keyValueQueryKey(payload.model)
|
||||
: null;
|
||||
: payload.model.model === 'websocket_event'
|
||||
? websocketEventsQueryKey(payload.model)
|
||||
: payload.model.model === 'key_value'
|
||||
? keyValueQueryKey(payload.model)
|
||||
: null;
|
||||
|
||||
// TODO: Move this logic to useRequestEditor() hook
|
||||
if (
|
||||
payload.model.model === 'http_request' &&
|
||||
(payload.model.model === 'http_request' ||
|
||||
payload.model.model === 'grpc_request' ||
|
||||
payload.model.model === 'websocket_request') &&
|
||||
(payload.windowLabel !== getCurrentWebviewWindow().label || payload.updateSource !== 'window')
|
||||
) {
|
||||
wasUpdatedExternally(payload.model.id);
|
||||
@@ -64,6 +71,10 @@ export function useSyncModelStores() {
|
||||
jotaiStore.set(httpResponsesAtom, updateModelList(payload.model));
|
||||
} else if (payload.model.model === 'grpc_request') {
|
||||
jotaiStore.set(grpcRequestsAtom, updateModelList(payload.model));
|
||||
} else if (payload.model.model === 'websocket_request') {
|
||||
jotaiStore.set(websocketRequestsAtom, updateModelList(payload.model));
|
||||
} else if (payload.model.model === 'websocket_connection') {
|
||||
jotaiStore.set(websocketConnectionsAtom, updateModelList(payload.model));
|
||||
} else if (payload.model.model === 'grpc_connection') {
|
||||
jotaiStore.set(grpcConnectionsAtom, updateModelList(payload.model));
|
||||
} else if (payload.model.model === 'environment') {
|
||||
@@ -103,6 +114,15 @@ export function useSyncModelStores() {
|
||||
jotaiStore.set(environmentsAtom, removeModelById(payload.model));
|
||||
} else if (payload.model.model === 'grpc_request') {
|
||||
jotaiStore.set(grpcRequestsAtom, removeModelById(payload.model));
|
||||
} else if (payload.model.model === 'websocket_request') {
|
||||
jotaiStore.set(websocketRequestsAtom, removeModelById(payload.model));
|
||||
} else if (payload.model.model === 'websocket_connection') {
|
||||
jotaiStore.set(websocketConnectionsAtom, removeModelById(payload.model));
|
||||
} else if (payload.model.model === 'websocket_event') {
|
||||
queryClient.setQueryData(
|
||||
websocketEventsQueryKey(payload.model),
|
||||
removeModelById(payload.model),
|
||||
);
|
||||
} else if (payload.model.model === 'grpc_connection') {
|
||||
jotaiStore.set(grpcConnectionsAtom, removeModelById(payload.model));
|
||||
} else if (payload.model.model === 'grpc_event') {
|
||||
@@ -117,7 +137,10 @@ export function useSyncModelStores() {
|
||||
|
||||
export function updateModelList<T extends AnyModel>(model: T) {
|
||||
// Mark these models as DESC instead of ASC
|
||||
const pushToFront = model.model === 'http_response' || model.model === 'grpc_connection';
|
||||
const pushToFront =
|
||||
model.model === 'http_response' ||
|
||||
model.model === 'grpc_connection' ||
|
||||
model.model === 'websocket_connection';
|
||||
|
||||
return (current: T[] | undefined | null): T[] => {
|
||||
const index = current?.findIndex((v) => modelsEq(v, model)) ?? -1;
|
||||
|
||||
Reference in New Issue
Block a user