@mstuercke/api-utils 0.0.39 → 0.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,8 +5,8 @@ export type WsApiOptions<Response extends WsApiResponse> = {
5
5
  onError?: (error: unknown) => void;
6
6
  onDisconnected?: () => void;
7
7
  };
8
- export declare const useWsApi: <Action extends string, Request_1 extends object, Response_1 extends object>(wsApiUrl: string, route: WsApiRoute<Action, Request_1, Response_1>, options: WsApiOptions<Response_1>) => {
9
- sendRequest: (request: Request_1) => void;
8
+ export declare const useWsApi: <Action extends string, Request_1 extends object, Response_1 extends object>(wsApiUrl: string) => {
9
+ sendRequest: (request: Request_1, route: WsApiRoute<Action, Request_1, Response_1>, options: WsApiOptions<Response_1>) => void;
10
10
  connected: boolean;
11
11
  error: boolean;
12
12
  disconnect: () => void;
@@ -1,27 +1,28 @@
1
1
  import { useCallback, useEffect, useState } from 'react';
2
2
  import useWebSocket, { ReadyState } from 'react-use-websocket';
3
- export const useWsApi = (wsApiUrl, route, options) => {
4
- const { onConnected, onResponse, onError, onDisconnected } = options;
3
+ export const useWsApi = (wsApiUrl) => {
5
4
  const [error, setError] = useState(false);
6
5
  const [connected, setConnected] = useState(false);
7
6
  const [request, setRequest] = useState();
7
+ const [route, setRoute] = useState();
8
+ const [options, setOptions] = useState();
8
9
  const handleConnected = useCallback(() => {
9
10
  setConnected(true);
10
11
  setError(false);
11
- onConnected?.();
12
- }, [onConnected]);
12
+ options?.onConnected?.();
13
+ }, [options]);
13
14
  const handleError = useCallback((error) => {
14
15
  setError(false);
15
- onError?.(error);
16
- }, [onError]);
16
+ options?.onError?.(error);
17
+ }, [options]);
17
18
  const handleResponse = useCallback((response) => {
18
19
  setError(false);
19
- onResponse?.(response);
20
- }, [onResponse]);
20
+ options?.onResponse?.(response);
21
+ }, [options]);
21
22
  const handleDisconnected = useCallback(() => {
22
23
  setConnected(false);
23
- onDisconnected?.();
24
- }, [onDisconnected]);
24
+ options?.onDisconnected?.();
25
+ }, [options]);
25
26
  const { readyState, lastJsonMessage, getWebSocket, sendMessage } = useWebSocket(wsApiUrl, {
26
27
  onOpen: () => handleConnected(),
27
28
  onError: (error) => handleError(error),
@@ -29,21 +30,25 @@ export const useWsApi = (wsApiUrl, route, options) => {
29
30
  }, !!request);
30
31
  // send request
31
32
  useEffect(() => {
33
+ if (!route)
34
+ return;
32
35
  if (request && readyState === ReadyState.OPEN) {
33
36
  sendMessage(JSON.stringify({
34
37
  action: route.action,
35
38
  request,
36
39
  }));
37
40
  }
38
- }, [request, readyState, route.action, sendMessage]);
41
+ }, [request, readyState, route?.action, sendMessage]);
39
42
  // response received
40
43
  useEffect(() => {
41
44
  if (!lastJsonMessage || JSON.stringify(lastJsonMessage) === '{}')
42
45
  return;
43
46
  handleResponse(lastJsonMessage);
44
47
  }, [lastJsonMessage, getWebSocket, handleResponse]);
45
- const sendRequest = useCallback((request) => {
48
+ const sendRequest = useCallback((request, route, options) => {
46
49
  setConnected(true);
50
+ setRoute(route);
51
+ setOptions(options);
47
52
  setRequest(request);
48
53
  }, []);
49
54
  const disconnect = useCallback(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"useWsApi.js","sourceRoot":"","sources":["../../../src/ws/client/useWsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useWsApi.js","sourceRoot":"","sources":["../../../src/ws/client/useWsApi.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstuercke/api-utils",
3
- "version": "0.0.39",
3
+ "version": "0.0.41",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist/**/*.js",
@@ -9,6 +9,7 @@
9
9
  "README.md"
10
10
  ],
11
11
  "exports": {
12
+ "./dist": null,
12
13
  "./rest/types": "./dist/rest/types/index.js",
13
14
  "./rest/client": "./dist/rest/client/index.js",
14
15
  "./rest/server": "./dist/rest/server/index.js",