Skip to content

Commit a2c0e5a

Browse files
committed
RemoteDebugger component
1 parent 94a5bf5 commit a2c0e5a

5 files changed

Lines changed: 71 additions & 45 deletions

File tree

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import React from 'react';
2+
3+
import { QueryDevtoolProps } from '../../types';
4+
5+
import useRemoteDevtool from '../../hooks/useRemoteDevtool';
6+
7+
const RemoteDebugger: React.FC<QueryDevtoolProps> = ({
8+
queryClient,
9+
version,
10+
}) => {
11+
useRemoteDevtool({ queryClient, version });
12+
13+
return null;
14+
};
15+
16+
export default RemoteDebugger;

packages/react-native-query-devtool/src/hooks/useQueryDevtool.ts renamed to packages/react-native-query-devtool/src/hooks/useRemoteDevtool.ts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,23 @@
1-
import { useEffect, useRef, useState } from "react";
2-
import { Platform } from "react-native";
3-
import { isDevMode } from "../utils/isDevMode";
4-
import debounce from "../utils/debounce";
5-
import {
6-
getQueryDevtoolData,
7-
handleQueryDevtoolData,
8-
} from "../utils/queryListener";
1+
import { useEffect, useRef, useState } from 'react';
2+
3+
import { Platform } from 'react-native';
4+
95
import {
106
ListenerEventType,
117
QueryDevtoolData,
128
QueryDevtoolProps,
13-
} from "../types";
9+
} from '../types';
10+
import debounce from '../utils/debounce';
11+
import { isDevMode } from '../utils/isDevMode';
12+
import {
13+
getQueryDevtoolData,
14+
handleQueryDevtoolData,
15+
} from '../utils/queryListener';
1416

1517
const PORT = 9017;
1618

17-
const useQueryDevtool = (props: QueryDevtoolProps) => {
18-
const { queryClient, version } = props;
19+
const useRemoteDevtool = (props: QueryDevtoolProps) => {
20+
const { queryClient, version = 'v5' } = props;
1921

2022
const websocket = useRef<WebSocket>();
2123
const timeoutRef = useRef<NodeJS.Timeout>();
@@ -36,15 +38,15 @@ const useQueryDevtool = (props: QueryDevtoolProps) => {
3638

3739
const createWebSocket = () => {
3840
websocket.current = new WebSocket(
39-
Platform.OS === "ios"
41+
Platform.OS === 'ios'
4042
? `ws://localhost:${PORT}`
4143
: `ws://10.0.2.2:${PORT}`
4244
);
4345

4446
// When connection is established with server, all queries are sent once
4547
websocket.current.onopen = () => {
4648
setConnnected(true);
47-
console.info("✅", "Conected with Native Query Devtool");
49+
console.info('✅ Conected with Native Query Devtool');
4850

4951
const allQueries = queryClient
5052
.getQueryCache()
@@ -114,7 +116,7 @@ const useQueryDevtool = (props: QueryDevtoolProps) => {
114116
subscribe();
115117
}
116118
};
117-
}, [connected, queryClient]);
119+
}, [connected, queryClient, version]);
118120
};
119121

120-
export default useQueryDevtool;
122+
export default useRemoteDevtool;
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,20 @@
11
import React from "react";
2-
import useQueryDevtool from "./hooks/useQueryDevtool";
2+
3+
import RemoteDebugger from "./components/RemoteDebugger";
34
import { QueryDevtoolProps } from "./types";
45

56
const QueryNativeDevtool: React.FC<QueryDevtoolProps> = ({
67
queryClient,
78
version = "v5",
9+
useRemoteDebugger = false,
810
}) => {
9-
useQueryDevtool({ queryClient, version });
10-
11-
return null;
11+
return (
12+
<>
13+
{useRemoteDebugger && (
14+
<RemoteDebugger queryClient={queryClient} version={version} />
15+
)}
16+
</>
17+
);
1218
};
1319

1420
export { QueryNativeDevtool };
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
export type ReactQueryVersion = "v3" | "v4" | "v5";
1+
export type ReactQueryVersion = 'v3' | 'v4' | 'v5';
22

3-
export type QueryKey = string | string[] | unknown;
3+
export type QueryKey = string | string[];
44

55
export type QueryDevtoolProps = {
66
queryClient: any;
77
version?: ReactQueryVersion;
8+
useRemoteDebugger?: boolean;
9+
hideFloatingButton?: boolean;
810
};
911

1012
export type QueryDevtoolData = {
@@ -18,19 +20,19 @@ export type QueryDevtoolData = {
1820
};
1921

2022
export type ListenerV3 =
21-
| "queryAdded"
22-
| "queryUpdated"
23-
| "queryRemoved"
24-
| "observerAdded"
25-
| "observerRemoved"
26-
| "observerResultsUpdated";
23+
| 'queryAdded'
24+
| 'queryUpdated'
25+
| 'queryRemoved'
26+
| 'observerAdded'
27+
| 'observerRemoved'
28+
| 'observerResultsUpdated';
2729

2830
export type ListenerV4 =
29-
| "added"
30-
| "updated"
31-
| "removed"
32-
| "observerAdded"
33-
| "observerRemoved"
34-
| "observerResultsUpdated";
31+
| 'added'
32+
| 'updated'
33+
| 'removed'
34+
| 'observerAdded'
35+
| 'observerRemoved'
36+
| 'observerResultsUpdated';
3537

3638
export type ListenerEventType = ListenerV3 | ListenerV4;

packages/react-native-query-devtool/src/utils/queryListener.ts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {
22
ListenerEventType,
33
QueryDevtoolData,
44
ReactQueryVersion,
5-
} from "../types";
5+
} from '../types';
66

77
export const getQueryDevtoolData = (
88
version: ReactQueryVersion,
@@ -13,9 +13,9 @@ export const getQueryDevtoolData = (
1313
const isStale = query.isStale();
1414
const isActive = query.isActive() && query.getObserversCount() > 0;
1515
const isFetching =
16-
version === "v3"
16+
version === 'v3'
1717
? query.isFetching()
18-
: query.state.fetchStatus === "fetching";
18+
: query.state.fetchStatus === 'fetching';
1919

2020
return {
2121
queryKey: query.queryKey,
@@ -36,10 +36,10 @@ export const handleQueryDevtoolData = (
3636
queryDevtoolDataArray: QueryDevtoolData[]
3737
) => {
3838
switch (listenerType) {
39-
case "queryAdded":
40-
case "queryUpdated":
41-
case "added":
42-
case "updated":
39+
case 'queryAdded':
40+
case 'queryUpdated':
41+
case 'added':
42+
case 'updated':
4343
const queryData = query.state.data;
4444
if (queryData) {
4545
return updateQueryDevtoolDataArray(
@@ -50,16 +50,16 @@ export const handleQueryDevtoolData = (
5050
);
5151
}
5252
break;
53-
case "observerAdded":
54-
case "observerRemoved":
55-
case "observerResultsUpdated":
53+
case 'observerAdded':
54+
case 'observerRemoved':
55+
case 'observerResultsUpdated':
5656
if (queryKeyIndex !== -1) {
5757
queryDevtoolDataArray[queryKeyIndex].observers =
5858
query.getObserversCount();
5959
}
6060
break;
61-
case "queryRemoved":
62-
case "removed":
61+
case 'queryRemoved':
62+
case 'removed':
6363
if (queryKeyIndex !== -1) {
6464
queryDevtoolDataArray.splice(queryKeyIndex, 1);
6565
}

0 commit comments

Comments
 (0)