@dxos/react-client 0.8.1-main.303c73a → 0.8.1-main.81238a8
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.
- package/dist/lib/browser/echo/index.mjs +40 -0
- package/dist/lib/browser/echo/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/node/echo/index.cjs +39 -0
- package/dist/lib/node/echo/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node-esm/echo/index.mjs +40 -0
- package/dist/lib/node-esm/echo/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/types/src/echo/index.d.ts +1 -0
- package/dist/types/src/echo/index.d.ts.map +1 -1
- package/dist/types/src/echo/useQueue.d.ts +11 -0
- package/dist/types/src/echo/useQueue.d.ts.map +1 -0
- package/package.json +23 -23
- package/src/echo/index.ts +1 -0
- package/src/echo/useQueue.ts +61 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/react-client",
|
|
3
|
-
"version": "0.8.1-main.
|
|
3
|
+
"version": "0.8.1-main.81238a8",
|
|
4
4
|
"description": "React client API",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -78,40 +78,40 @@
|
|
|
78
78
|
},
|
|
79
79
|
"dependencies": {
|
|
80
80
|
"react-error-boundary": "^4.0.13",
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/
|
|
85
|
-
"@dxos/
|
|
86
|
-
"@dxos/echo-
|
|
87
|
-
"@dxos/
|
|
88
|
-
"@dxos/
|
|
89
|
-
"@dxos/
|
|
90
|
-
"@dxos/
|
|
91
|
-
"@dxos/
|
|
92
|
-
"@dxos/
|
|
93
|
-
"@dxos/util": "0.8.1-main.
|
|
81
|
+
"@dxos/codec-protobuf": "0.8.1-main.81238a8",
|
|
82
|
+
"@dxos/async": "0.8.1-main.81238a8",
|
|
83
|
+
"@dxos/config": "0.8.1-main.81238a8",
|
|
84
|
+
"@dxos/client": "0.8.1-main.81238a8",
|
|
85
|
+
"@dxos/debug": "0.8.1-main.81238a8",
|
|
86
|
+
"@dxos/echo-schema": "0.8.1-main.81238a8",
|
|
87
|
+
"@dxos/echo-signals": "0.8.1-main.81238a8",
|
|
88
|
+
"@dxos/invariant": "0.8.1-main.81238a8",
|
|
89
|
+
"@dxos/log": "0.8.1-main.81238a8",
|
|
90
|
+
"@dxos/node-std": "0.8.1-main.81238a8",
|
|
91
|
+
"@dxos/protocols": "0.8.1-main.81238a8",
|
|
92
|
+
"@dxos/react-hooks": "0.8.1-main.81238a8",
|
|
93
|
+
"@dxos/util": "0.8.1-main.81238a8"
|
|
94
94
|
},
|
|
95
95
|
"devDependencies": {
|
|
96
96
|
"@types/react": "~18.2.0",
|
|
97
97
|
"@types/react-dom": "~18.2.0",
|
|
98
98
|
"react": "~18.2.0",
|
|
99
99
|
"react-dom": "~18.2.0",
|
|
100
|
-
"@dxos/
|
|
101
|
-
"@dxos/
|
|
102
|
-
"@dxos/react-ui-syntax-highlighter": "0.8.1-main.
|
|
103
|
-
"@dxos/react-ui-theme": "0.8.1-main.
|
|
104
|
-
"@dxos/storybook-utils": "0.8.1-main.
|
|
105
|
-
"@dxos/test-utils": "0.8.1-main.
|
|
100
|
+
"@dxos/random": "0.8.1-main.81238a8",
|
|
101
|
+
"@dxos/react-ui": "0.8.1-main.81238a8",
|
|
102
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.1-main.81238a8",
|
|
103
|
+
"@dxos/react-ui-theme": "0.8.1-main.81238a8",
|
|
104
|
+
"@dxos/storybook-utils": "0.8.1-main.81238a8",
|
|
105
|
+
"@dxos/test-utils": "0.8.1-main.81238a8"
|
|
106
106
|
},
|
|
107
107
|
"peerDependencies": {
|
|
108
108
|
"react": "~18.2.0",
|
|
109
109
|
"react-dom": "~18.2.0"
|
|
110
110
|
},
|
|
111
111
|
"optionalDependencies": {
|
|
112
|
-
"@dxos/react-ui": "0.8.1-main.
|
|
113
|
-
"@dxos/
|
|
114
|
-
"@dxos/
|
|
112
|
+
"@dxos/react-ui": "0.8.1-main.81238a8",
|
|
113
|
+
"@dxos/random": "0.8.1-main.81238a8",
|
|
114
|
+
"@dxos/react-ui-theme": "0.8.1-main.81238a8"
|
|
115
115
|
},
|
|
116
116
|
"publishConfig": {
|
|
117
117
|
"access": "public"
|
package/src/echo/index.ts
CHANGED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { useEffect, useMemo } from 'react';
|
|
6
|
+
|
|
7
|
+
import type { Queue } from '@dxos/client/echo';
|
|
8
|
+
import { raise } from '@dxos/debug';
|
|
9
|
+
import type { BaseEchoObject } from '@dxos/echo-schema';
|
|
10
|
+
import { type DXN } from '@dxos/keys';
|
|
11
|
+
|
|
12
|
+
import { useClient } from '../client';
|
|
13
|
+
|
|
14
|
+
const MIN_POLL_INTERVAL = 1_000;
|
|
15
|
+
|
|
16
|
+
export type UseQueueOptions = {
|
|
17
|
+
pollInterval?: number;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Polls the given Edge queue.
|
|
22
|
+
*/
|
|
23
|
+
// TODO(burdon): Replace polling with socket?
|
|
24
|
+
// TODO(dmaretskyi): Move into client package.
|
|
25
|
+
// TODO(dmaretskyi): Consider passing the space into the hook to support queue DXNs without space id.
|
|
26
|
+
export const useQueue = <T extends BaseEchoObject>(
|
|
27
|
+
queueDxn?: DXN,
|
|
28
|
+
options: UseQueueOptions = {},
|
|
29
|
+
): Queue<T> | undefined => {
|
|
30
|
+
const client = useClient();
|
|
31
|
+
const queue = useMemo<Queue<T> | undefined>(() => {
|
|
32
|
+
if (!queueDxn) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const { spaceId } = queueDxn.asQueueDXN() ?? raise(new TypeError('Invalid queue DXN'));
|
|
37
|
+
|
|
38
|
+
return client.spaces.get(spaceId)?.queues.get<T>(queueDxn);
|
|
39
|
+
}, [client, queueDxn?.toString()]);
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
void queue?.refresh();
|
|
43
|
+
}, [queue]);
|
|
44
|
+
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
let timeout: NodeJS.Timeout;
|
|
47
|
+
if (options.pollInterval) {
|
|
48
|
+
const poll = () => {
|
|
49
|
+
void queue?.refresh().finally(() => {
|
|
50
|
+
timeout = setTimeout(poll, Math.max(options.pollInterval ?? 0, MIN_POLL_INTERVAL));
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
poll();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return () => clearTimeout(timeout);
|
|
58
|
+
}, [queue, options.pollInterval]);
|
|
59
|
+
|
|
60
|
+
return queue;
|
|
61
|
+
};
|