@dxos/react-client 0.4.10-main.06ef97a → 0.4.10-main.109a137
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/{chunk-Y64VSVTU.mjs → chunk-BQ4BAP42.mjs} +4 -3
- package/dist/lib/browser/chunk-BQ4BAP42.mjs.map +7 -0
- package/dist/lib/browser/echo/index.mjs +15 -14
- package/dist/lib/browser/echo/index.mjs.map +3 -3
- package/dist/lib/browser/halo/index.mjs +11 -23
- package/dist/lib/browser/halo/index.mjs.map +3 -3
- package/dist/lib/browser/invitations/index.mjs +1 -1
- package/dist/lib/browser/mesh/index.mjs +2 -6
- package/dist/lib/browser/mesh/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs.map +2 -2
- package/dist/lib/node/{chunk-PNDYOCJA.cjs → chunk-X5URYLUS.cjs} +7 -6
- package/dist/lib/node/chunk-X5URYLUS.cjs.map +7 -0
- package/dist/lib/node/echo/index.cjs +17 -16
- package/dist/lib/node/echo/index.cjs.map +3 -3
- package/dist/lib/node/halo/index.cjs +13 -26
- package/dist/lib/node/halo/index.cjs.map +3 -3
- package/dist/lib/node/invitations/index.cjs +7 -7
- package/dist/lib/node/invitations/index.cjs.map +1 -1
- package/dist/lib/node/mesh/index.cjs +2 -6
- package/dist/lib/node/mesh/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs.map +2 -2
- package/dist/types/src/echo/useQuery.d.ts +2 -2
- package/dist/types/src/echo/useQuery.d.ts.map +1 -1
- package/dist/types/src/echo/useSpaceInvitations.d.ts +2 -1
- package/dist/types/src/echo/useSpaceInvitations.d.ts.map +1 -1
- package/dist/types/src/halo/index.d.ts +1 -1
- package/dist/types/src/halo/index.d.ts.map +1 -1
- package/dist/types/src/halo/useContacts.d.ts.map +1 -1
- package/dist/types/src/halo/useDevices.d.ts.map +1 -1
- package/dist/types/src/halo/useHaloInvitations.d.ts +2 -1
- package/dist/types/src/halo/useHaloInvitations.d.ts.map +1 -1
- package/dist/types/src/invitations/useInvitationStatus.d.ts +1 -0
- package/dist/types/src/invitations/useInvitationStatus.d.ts.map +1 -1
- package/dist/types/src/mesh/useNetworkStatus.d.ts.map +1 -1
- package/dist/types/src/testing/ClientRepeater.d.ts.map +1 -1
- package/package.json +17 -17
- package/src/echo/useQuery.ts +20 -13
- package/src/echo/useSpaceInvitations.ts +6 -18
- package/src/halo/index.ts +1 -10
- package/src/halo/useContacts.ts +2 -11
- package/src/halo/useDevices.ts +2 -11
- package/src/halo/useHaloInvitations.ts +6 -13
- package/src/invitations/useInvitationStatus.ts +3 -0
- package/src/mesh/useNetworkStatus.ts +2 -11
- package/src/testing/ClientRepeater.tsx +2 -4
- package/dist/lib/browser/chunk-Y64VSVTU.mjs.map +0 -7
- package/dist/lib/node/chunk-PNDYOCJA.cjs.map +0 -7
|
@@ -16,8 +16,8 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_X5URYLUS_exports = {};
|
|
20
|
+
__export(chunk_X5URYLUS_exports, {
|
|
21
21
|
AuthenticatingInvitationObservable: () => import_invitations.AuthenticatingInvitationObservable,
|
|
22
22
|
CancellableInvitationObservable: () => import_invitations.CancellableInvitationObservable,
|
|
23
23
|
Invitation: () => import_invitations.Invitation,
|
|
@@ -25,7 +25,7 @@ __export(chunk_PNDYOCJA_exports, {
|
|
|
25
25
|
InvitationsProxy: () => import_invitations.InvitationsProxy,
|
|
26
26
|
useInvitationStatus: () => useInvitationStatus
|
|
27
27
|
});
|
|
28
|
-
module.exports = __toCommonJS(
|
|
28
|
+
module.exports = __toCommonJS(chunk_X5URYLUS_exports);
|
|
29
29
|
var import_invitations = require("@dxos/client/invitations");
|
|
30
30
|
var import_react = require("react");
|
|
31
31
|
var import_invitations2 = require("@dxos/client/invitations");
|
|
@@ -37,7 +37,7 @@ var useInvitationStatus = (initialObservable) => {
|
|
|
37
37
|
action
|
|
38
38
|
}, {
|
|
39
39
|
F: __dxlog_file,
|
|
40
|
-
L:
|
|
40
|
+
L: 81,
|
|
41
41
|
S: void 0,
|
|
42
42
|
C: (f, a) => f(...a)
|
|
43
43
|
});
|
|
@@ -129,7 +129,7 @@ var useInvitationStatus = (initialObservable) => {
|
|
|
129
129
|
authCode
|
|
130
130
|
}, {
|
|
131
131
|
F: __dxlog_file,
|
|
132
|
-
L:
|
|
132
|
+
L: 165,
|
|
133
133
|
S: void 0,
|
|
134
134
|
C: (f, a) => f(...a)
|
|
135
135
|
});
|
|
@@ -151,6 +151,7 @@ var useInvitationStatus = (initialObservable) => {
|
|
|
151
151
|
connect,
|
|
152
152
|
authenticate,
|
|
153
153
|
id: invitation?.invitationId,
|
|
154
|
+
multiUse: invitation?.multiUse,
|
|
154
155
|
invitationCode: invitation ? import_invitations2.InvitationEncoder.encode(invitation) : void 0,
|
|
155
156
|
authCode: invitation?.authCode,
|
|
156
157
|
authMethod: invitation?.authMethod,
|
|
@@ -173,4 +174,4 @@ var useInvitationStatus = (initialObservable) => {
|
|
|
173
174
|
InvitationsProxy,
|
|
174
175
|
useInvitationStatus
|
|
175
176
|
});
|
|
176
|
-
//# sourceMappingURL=chunk-
|
|
177
|
+
//# sourceMappingURL=chunk-X5URYLUS.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/invitations/index.ts", "../../../src/invitations/useInvitationStatus.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n InvitationEncoder,\n Invitation,\n type Invitations,\n InvitationsProxy,\n} from '@dxos/client/invitations';\n\nexport * from './useInvitationStatus';\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useReducer, type Reducer, useMemo, useCallback, useEffect } from 'react';\n\nimport { type PublicKey } from '@dxos/client';\nimport {\n type AuthenticatingInvitationObservable,\n type CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n} from '@dxos/client/invitations';\nimport { log } from '@dxos/log';\n\nexport type InvitationResult = {\n spaceKey: PublicKey | null;\n identityKey: PublicKey | null;\n swarmKey: PublicKey | null;\n target: string | null;\n};\n\ninterface InvitationReducerState {\n status: Invitation.State; // TODO(burdon): Rename state.\n haltedAt?: Invitation.State;\n result: InvitationResult;\n error?: number;\n observable?: CancellableInvitationObservable | AuthenticatingInvitationObservable;\n id?: string;\n invitationCode?: string;\n authCode?: string;\n multiUse?: boolean;\n}\n\nexport type InvitationAction =\n | {\n status:\n | Invitation.State.INIT\n | Invitation.State.CONNECTED\n | Invitation.State.READY_FOR_AUTHENTICATION\n | Invitation.State.AUTHENTICATING;\n }\n | {\n status: Invitation.State.CONNECTING;\n observable: CancellableInvitationObservable;\n }\n | {\n status: Invitation.State.SUCCESS;\n result: InvitationResult;\n }\n | {\n status: Invitation.State.CANCELLED | Invitation.State.TIMEOUT;\n haltedAt: Invitation.State;\n }\n | {\n status: Invitation.State.ERROR;\n error?: Error;\n haltedAt: Invitation.State;\n };\n\nexport type InvitationStatus = {\n id?: string;\n invitationCode?: string;\n authCode?: string;\n authMethod?: Invitation.AuthMethod;\n type?: Invitation.Type;\n status: Invitation.State;\n haltedAt?: Invitation.State;\n multiUse?: boolean;\n result: InvitationResult;\n error?: number;\n cancel(): void;\n // TODO(wittjosiah): Remove?\n connect(observable: CancellableInvitationObservable): void;\n authenticate(authCode: string): Promise<void>;\n};\n\nexport const useInvitationStatus = (initialObservable?: CancellableInvitationObservable): InvitationStatus => {\n const [state, dispatch] = useReducer<Reducer<InvitationReducerState, InvitationAction>, null>(\n (prev, action) => {\n log('useInvitationStatus', { action });\n return {\n ...prev,\n // TODO(burdon): State.\n status: action.status,\n // `invitationObservable`, `secret`, and `result` is persisted between the status-actions that set them.\n result: action.status === Invitation.State.SUCCESS ? action.result : prev.result,\n // `error` gets set each time we enter the error state\n ...(action.status === Invitation.State.ERROR && { error: action.error }),\n // `haltedAt` gets set on only the first error/cancelled/timeout action and reset on any others.\n ...((action.status === Invitation.State.ERROR ||\n action.status === Invitation.State.CANCELLED ||\n action.status === Invitation.State.TIMEOUT) && {\n haltedAt: typeof prev.haltedAt === 'undefined' ? action.haltedAt : prev.haltedAt,\n }),\n observable:\n action.status === Invitation.State.CONNECTING ? action.observable ?? prev.observable : prev.observable,\n } as InvitationReducerState;\n },\n null,\n (_arg: null) => {\n return {\n status: Invitation.State.INIT,\n result: { spaceKey: null, identityKey: null, swarmKey: null, target: null },\n observable: initialObservable,\n };\n },\n );\n\n // Handle unmount.\n\n useEffect(() => {\n const update = (invitation: Invitation) => {\n switch (invitation.state) {\n case Invitation.State.CONNECTED:\n case Invitation.State.READY_FOR_AUTHENTICATION:\n case Invitation.State.AUTHENTICATING: {\n dispatch({\n status: invitation.state,\n });\n break;\n }\n\n case Invitation.State.SUCCESS: {\n dispatch({\n status: invitation.state,\n result: {\n spaceKey: invitation.spaceKey || null,\n identityKey: invitation.identityKey || null,\n swarmKey: invitation.swarmKey || null,\n target: invitation.target || null,\n },\n });\n break;\n }\n\n case Invitation.State.CANCELLED:\n case Invitation.State.TIMEOUT: {\n dispatch({ status: invitation.state, haltedAt: state.status });\n break;\n }\n }\n };\n\n const subscription = state.observable?.subscribe(update, (err: Error) => {\n dispatch({ status: Invitation.State.ERROR, error: err, haltedAt: state.status });\n });\n\n const currentState = state.observable?.get();\n if (currentState) {\n update(currentState);\n }\n\n return () => subscription?.unsubscribe();\n }, [state.observable, state.status]);\n\n // Return memoized callbacks & values.\n\n const connect = useCallback((observable: CancellableInvitationObservable) => {\n dispatch({ status: Invitation.State.CONNECTING, observable });\n }, []);\n\n const authenticate = useCallback(\n (authCode: string) => {\n log('authenticating...', { authCode });\n return (state.observable as AuthenticatingInvitationObservable).authenticate(authCode);\n },\n [state.observable],\n );\n\n const cancel = useCallback(async () => state.observable?.cancel(), [state.observable]);\n\n return useMemo(() => {\n const invitation = state.observable?.get();\n const result = {\n status: state.status,\n haltedAt: state.haltedAt,\n result: state.result,\n error: state.error,\n cancel,\n connect,\n authenticate,\n id: invitation?.invitationId,\n multiUse: invitation?.multiUse,\n invitationCode: invitation ? InvitationEncoder.encode(invitation) : undefined,\n authCode: invitation?.authCode,\n authMethod: invitation?.authMethod,\n type: invitation?.type,\n };\n\n return result;\n }, [state, cancel, connect, authenticate]);\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_invitations", "useInvitationStatus", "initialObservable", "state", "dispatch", "useReducer", "prev", "action", "log", "status", "result", "Invitation", "State", "SUCCESS", "ERROR", "error", "CANCELLED", "TIMEOUT", "haltedAt", "observable", "CONNECTING", "_arg", "INIT", "spaceKey", "identityKey", "swarmKey", "target", "useEffect", "update", "invitation", "CONNECTED", "READY_FOR_AUTHENTICATION", "AUTHENTICATING", "subscription", "subscribe", "err", "currentState", "get", "unsubscribe", "connect", "useCallback", "authenticate", "authCode", "cancel", "useMemo", "id", "invitationId", "multiUse", "invitationCode", "InvitationEncoder", "encode", "undefined", "authMethod", "type"]
|
|
7
|
+
}
|
|
@@ -28,7 +28,7 @@ __export(echo_exports, {
|
|
|
28
28
|
useSubscription: () => useSubscription
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(echo_exports);
|
|
31
|
-
var
|
|
31
|
+
var import_chunk_X5URYLUS = require("../chunk-X5URYLUS.cjs");
|
|
32
32
|
var import_chunk_IRRRZ2KE = require("../chunk-IRRRZ2KE.cjs");
|
|
33
33
|
__reExport(echo_exports, require("@dxos/client/echo"), module.exports);
|
|
34
34
|
var import_async = require("@dxos/async");
|
|
@@ -39,9 +39,10 @@ var import_echo2 = require("@dxos/client/echo");
|
|
|
39
39
|
var import_react_async2 = require("@dxos/react-async");
|
|
40
40
|
var import_react2 = require("react");
|
|
41
41
|
var import_react3 = require("react");
|
|
42
|
-
var
|
|
42
|
+
var import_async2 = require("@dxos/async");
|
|
43
|
+
var import_react_async3 = require("@dxos/react-async");
|
|
43
44
|
var import_react4 = require("react");
|
|
44
|
-
var
|
|
45
|
+
var import_echo3 = require("@dxos/client/echo");
|
|
45
46
|
var useSpace = (spaceKey) => {
|
|
46
47
|
const client = (0, import_chunk_IRRRZ2KE.useClient)();
|
|
47
48
|
const spaces = (0, import_react_async2.useMulticastObservable)(client.spaces);
|
|
@@ -80,39 +81,39 @@ var useMembers = (spaceKey) => {
|
|
|
80
81
|
return members.filter((member) => member.presence !== import_echo.SpaceMember.PresenceState.REMOVED);
|
|
81
82
|
};
|
|
82
83
|
var useQuery = (space, filter, options, deps) => {
|
|
83
|
-
const
|
|
84
|
+
const { subscribe, getObjects } = (0, import_react2.useMemo)(() => {
|
|
85
|
+
const query = space?.db.query(filter, options);
|
|
86
|
+
return {
|
|
87
|
+
subscribe: (cb) => query?.subscribe(cb) ?? noop,
|
|
88
|
+
getObjects: () => query?.objects ?? []
|
|
89
|
+
};
|
|
90
|
+
}, [
|
|
84
91
|
space?.db,
|
|
85
92
|
...typeof filter === "function" ? [] : filterToDepsArray(filter),
|
|
86
93
|
...deps ?? []
|
|
87
94
|
]);
|
|
88
|
-
return (0, import_react2.useSyncExternalStore)(
|
|
95
|
+
return (0, import_react2.useSyncExternalStore)(subscribe, getObjects) ?? [];
|
|
89
96
|
};
|
|
90
97
|
var filterToDepsArray = (filter) => Object.entries(filter ?? {}).flat(10).map((x) => typeof x === "function" || typeof x === "object" ? null : x);
|
|
98
|
+
var noop = () => {
|
|
99
|
+
};
|
|
91
100
|
var useSpaceInvitations = (spaceKey) => {
|
|
92
101
|
const space = useSpace(spaceKey);
|
|
93
|
-
|
|
94
|
-
if (!(space instanceof import_echo3.SpaceProxy)) {
|
|
95
|
-
return () => {
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
const subscription = space.invitations.subscribe(() => listener());
|
|
99
|
-
return () => subscription.unsubscribe();
|
|
100
|
-
}, () => space?.invitations.get()) ?? [];
|
|
101
|
-
return invitations;
|
|
102
|
+
return (0, import_react_async3.useMulticastObservable)(space?.invitations ?? import_async2.MulticastObservable.empty()) ?? [];
|
|
102
103
|
};
|
|
103
104
|
var useSpaceInvitation = (spaceKey, invitationId) => {
|
|
104
105
|
const invitations = useSpaceInvitations(spaceKey);
|
|
105
106
|
const invitation = (0, import_react3.useMemo)(() => invitations.find((invitation2) => invitation2.get().invitationId === invitationId), [
|
|
106
107
|
invitations
|
|
107
108
|
]);
|
|
108
|
-
return (0,
|
|
109
|
+
return (0, import_chunk_X5URYLUS.useInvitationStatus)(invitation);
|
|
109
110
|
};
|
|
110
111
|
var useSubscription = (cb, selection) => {
|
|
111
112
|
const callbackRef = (0, import_react4.useRef)(cb);
|
|
112
113
|
callbackRef.current = cb;
|
|
113
114
|
const subscriptionRef = (0, import_react4.useRef)();
|
|
114
115
|
(0, import_react4.useEffect)(() => {
|
|
115
|
-
subscriptionRef.current = (0,
|
|
116
|
+
subscriptionRef.current = (0, import_echo3.createSubscription)(() => {
|
|
116
117
|
callbackRef.current();
|
|
117
118
|
});
|
|
118
119
|
return () => subscriptionRef.current?.unsubscribe();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/echo/index.ts", "../../../../src/echo/useMembers.ts", "../../../../src/echo/useSpaces.ts", "../../../../src/echo/useQuery.ts", "../../../../src/echo/useSpaceInvitations.ts", "../../../../src/echo/useSubscription.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport type { QueryOptions,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAc;ACAd,mBAAoC;AAEpC,kBAA4B;AAC5B,yBAAuC;ACHvC,mBAAoC;AAGpC,IAAAA,eAAuC;AACvC,IAAAC,sBAAuC;ACJvC,IAAAC,gBAA8C;ACA9C,IAAAA,
|
|
6
|
-
"names": ["import_echo", "import_react_async", "import_react", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "undefined", "members", "MulticastObservable", "empty", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useQuery", "options", "deps", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/echo';\n\nexport * from './useMembers';\nexport * from './useQuery';\nexport * from './useSpaces';\nexport * from './useSpaceInvitations';\nexport * from './useSubscription';\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { SpaceMember } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpaces } from './useSpaces';\n\nexport const useMembers = (spaceKey: PublicKey | undefined): SpaceMember[] => {\n // TODO(dmaretskyi): useSpace hook for spaces that are not ready.\n const spaces = useSpaces({ all: true });\n const space = spaceKey ? spaces.find((space) => space.key.equals(spaceKey)) : undefined;\n\n // EMPTY_OBSERVABLE needs to be a stable reference to avoid re-subscribing on every render.\n const members = useMulticastObservable(space?.members ?? MulticastObservable.empty()) ?? [];\n return members.filter((member) => member.presence !== SpaceMember.PresenceState.REMOVED);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type PublicKeyLike } from '@dxos/client';\nimport { type Space, SpaceState } from '@dxos/client/echo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Get a specific Space using its key.\n * The space is not guaranteed to be in the ready state.\n * Returns the default space if no key is provided.\n * Requires a ClientProvider somewhere in the parent tree.\n *\n * @param spaceKey the key of the space to look for\n */\nexport const useSpace = (spaceKey?: PublicKeyLike): Space | undefined => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n const [ready, setReady] = useState(false);\n\n useEffect(() => {\n // Only wait for ready if looking for the default space.\n if (spaceKey) {\n return;\n }\n\n const timeout = setTimeout(async () => {\n await client.spaces.isReady.wait();\n setReady(true);\n });\n\n return () => clearTimeout(timeout);\n }, [client, spaceKey]);\n\n if (spaceKey) {\n return spaces.find((space) => space.key.equals(spaceKey));\n }\n\n if (ready && client.halo.identity.get()) {\n return client.spaces.default;\n }\n};\n\nexport type UseSpacesParams = {\n /**\n * Return uninitialized spaces as well.\n */\n all?: boolean;\n};\n\n/**\n * Get all Spaces available to current user.\n * Requires a ClientProvider somewhere in the parent tree.\n * By default, only ready spaces are returned.\n * @returns an array of Spaces\n */\nexport const useSpaces = ({ all = false }: UseSpacesParams = {}): Space[] => {\n const client = useClient();\n const spaces = useMulticastObservable<Space[]>(client.spaces);\n\n // TODO(dmaretskyi): Array reference equality.\n return spaces.filter((space) => all || space.state.get() === SpaceState.READY);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo, useSyncExternalStore } from 'react';\n\nimport type { QueryOptions, Query, FilterSource, Space, EchoReactiveObject } from '@dxos/client/echo';\n\ntype UseQuery = {\n <T extends EchoReactiveObject<any>>(\n space?: Space,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n ): T[];\n};\n\n/**\n * Create subscription.\n */\n// TODO(burdon): Support typed operator filters (e.g., Note.filter(note => ...)).\nexport const useQuery: UseQuery = <T extends EchoReactiveObject<any>>(\n space?: Space,\n filter?: FilterSource<T>,\n options?: QueryOptions,\n deps?: any[],\n) => {\n const { subscribe, getObjects } = useMemo(() => {\n const query = space?.db.query(filter, options) as Query<T> | undefined;\n\n return {\n subscribe: (cb: () => void) => query?.subscribe(cb) ?? noop,\n getObjects: () => query?.objects ?? [],\n };\n }, [space?.db, ...(typeof filter === 'function' ? [] : filterToDepsArray(filter)), ...(deps ?? [])]);\n\n // https://beta.reactjs.org/reference/react/useSyncExternalStore\n // NOTE: This hook will resubscribe whenever the callback passed to the first argument changes -- make sure it is stable.\n return useSyncExternalStore<T[] | undefined>(subscribe, getObjects) ?? [];\n};\n\n// TODO(dmaretskyi): Serialize the filter here instead.\nconst filterToDepsArray = (filter?: FilterSource<any>) =>\n Object.entries(filter ?? {})\n .flat(10)\n .map((x) => (typeof x === 'function' || typeof x === 'object' ? null : x));\n\nconst noop = () => {};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { MulticastObservable } from '@dxos/async';\nimport { type PublicKey } from '@dxos/client';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useSpace } from './useSpaces';\nimport { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';\n\nexport const useSpaceInvitations = (spaceKey?: PublicKey): CancellableInvitationObservable[] => {\n const space = useSpace(spaceKey);\n return useMulticastObservable(space?.invitations ?? MulticastObservable.empty()) ?? [];\n};\n\nexport const useSpaceInvitation = (spaceKey?: PublicKey, invitationId?: string) => {\n const invitations = useSpaceInvitations(spaceKey);\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useEffect, useRef } from 'react';\n\nimport { type Selection, type SubscriptionHandle, createSubscription } from '@dxos/client/echo';\n\n/**\n * Create reactive selection.\n * Calls the callback when the selection changes and during the first render.\n */\n// TODO(wittjosiah): Is this still needed with signals reactivity? If not, remove or update jsdoc with usage info.\nexport const useSubscription = (cb: () => void, selection: Selection) => {\n // Make sure that the callback is always the one from the latest render.\n // Without this, we would always call the callback from the initial render,\n // which might contain stale data.\n const callbackRef = useRef(cb);\n callbackRef.current = cb;\n\n const subscriptionRef = useRef<SubscriptionHandle>();\n\n useEffect(() => {\n subscriptionRef.current = createSubscription(() => {\n callbackRef.current();\n });\n\n return () => subscriptionRef.current?.unsubscribe();\n }, []);\n\n subscriptionRef.current?.update(selection);\n return subscriptionRef.current;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["import_echo", "import_react_async", "import_react", "import_async", "useSpace", "spaceKey", "client", "useClient", "spaces", "useMulticastObservable", "ready", "setReady", "useState", "useEffect", "timeout", "setTimeout", "isReady", "wait", "clearTimeout", "find", "space", "key", "equals", "halo", "identity", "get", "default", "useSpaces", "all", "filter", "state", "SpaceState", "READY", "useMembers", "undefined", "members", "MulticastObservable", "empty", "member", "presence", "SpaceMember", "PresenceState", "REMOVED", "useQuery", "options", "deps", "subscribe", "getObjects", "useMemo", "query", "db", "cb", "noop", "objects", "filterToDepsArray", "useSyncExternalStore", "Object", "entries", "flat", "map", "x", "useSpaceInvitations", "invitations", "useSpaceInvitation", "invitationId", "invitation", "useInvitationStatus", "useSubscription", "selection", "callbackRef", "useRef", "current", "subscriptionRef", "createSubscription", "unsubscribe", "update"]
|
|
7
7
|
}
|
|
@@ -21,7 +21,6 @@ __export(halo_exports, {
|
|
|
21
21
|
Device: () => import_halo.Device,
|
|
22
22
|
DeviceKind: () => import_halo.DeviceKind,
|
|
23
23
|
DeviceType: () => import_halo.DeviceType,
|
|
24
|
-
HaloProxy: () => import_halo.HaloProxy,
|
|
25
24
|
KeyStore: () => KeyStore,
|
|
26
25
|
useContacts: () => useContacts,
|
|
27
26
|
useDevices: () => useDevices,
|
|
@@ -31,48 +30,37 @@ __export(halo_exports, {
|
|
|
31
30
|
useKeyStore: () => useKeyStore
|
|
32
31
|
});
|
|
33
32
|
module.exports = __toCommonJS(halo_exports);
|
|
34
|
-
var
|
|
33
|
+
var import_chunk_X5URYLUS = require("../chunk-X5URYLUS.cjs");
|
|
35
34
|
var import_chunk_IRRRZ2KE = require("../chunk-IRRRZ2KE.cjs");
|
|
36
35
|
var import_halo = require("@dxos/client/halo");
|
|
36
|
+
var import_react_async = require("@dxos/react-async");
|
|
37
|
+
var import_react_async2 = require("@dxos/react-async");
|
|
37
38
|
var import_react = require("react");
|
|
39
|
+
var import_react_async3 = require("@dxos/react-async");
|
|
40
|
+
var import_react_async4 = require("@dxos/react-async");
|
|
38
41
|
var import_react2 = require("react");
|
|
39
|
-
var import_react3 = require("react");
|
|
40
|
-
var import_react_async = require("@dxos/react-async");
|
|
41
|
-
var import_react4 = require("react");
|
|
42
42
|
var useContacts = () => {
|
|
43
43
|
const client = (0, import_chunk_IRRRZ2KE.useClient)();
|
|
44
|
-
|
|
45
|
-
const subscription = client.halo.contacts.subscribe(listener);
|
|
46
|
-
return () => subscription.unsubscribe();
|
|
47
|
-
}, () => client.halo.contacts.get());
|
|
48
|
-
return contacts;
|
|
44
|
+
return (0, import_react_async.useMulticastObservable)(client.halo.contacts);
|
|
49
45
|
};
|
|
50
46
|
var useDevices = () => {
|
|
51
47
|
const client = (0, import_chunk_IRRRZ2KE.useClient)();
|
|
52
|
-
|
|
53
|
-
const subscription = client.halo.devices.subscribe(listener);
|
|
54
|
-
return () => subscription.unsubscribe();
|
|
55
|
-
}, () => client.halo.devices.get());
|
|
56
|
-
return devices;
|
|
48
|
+
return (0, import_react_async2.useMulticastObservable)(client.halo.devices);
|
|
57
49
|
};
|
|
58
50
|
var useHaloInvitations = () => {
|
|
59
51
|
const client = (0, import_chunk_IRRRZ2KE.useClient)();
|
|
60
|
-
|
|
61
|
-
const subscription = client.halo.invitations.subscribe(() => listener());
|
|
62
|
-
return () => subscription.unsubscribe();
|
|
63
|
-
}, () => client.halo.opened ? client.halo.invitations.get() : []) ?? [];
|
|
64
|
-
return invitations;
|
|
52
|
+
return (0, import_react_async3.useMulticastObservable)(client.halo.invitations);
|
|
65
53
|
};
|
|
66
54
|
var useHaloInvitation = (invitationId) => {
|
|
67
55
|
const invitations = useHaloInvitations();
|
|
68
|
-
const invitation = (0,
|
|
56
|
+
const invitation = (0, import_react.useMemo)(() => invitations.find((invitation2) => invitation2.get().invitationId === invitationId), [
|
|
69
57
|
invitations
|
|
70
58
|
]);
|
|
71
|
-
return (0,
|
|
59
|
+
return (0, import_chunk_X5URYLUS.useInvitationStatus)(invitation);
|
|
72
60
|
};
|
|
73
61
|
var useIdentity = () => {
|
|
74
62
|
const client = (0, import_chunk_IRRRZ2KE.useClient)();
|
|
75
|
-
return (0,
|
|
63
|
+
return (0, import_react_async4.useMulticastObservable)(client.halo.identity);
|
|
76
64
|
};
|
|
77
65
|
var KeyStore = class {
|
|
78
66
|
constructor(_defaultKeys = []) {
|
|
@@ -99,8 +87,8 @@ var KeyStore = class {
|
|
|
99
87
|
}
|
|
100
88
|
};
|
|
101
89
|
var useKeyStore = (defaultKeys = []) => {
|
|
102
|
-
const [, forceUpdate] = (0,
|
|
103
|
-
const store = (0,
|
|
90
|
+
const [, forceUpdate] = (0, import_react2.useReducer)((x) => x + 1, 0);
|
|
91
|
+
const store = (0, import_react2.useMemo)(() => new KeyStore(defaultKeys).initialize(), [
|
|
104
92
|
defaultKeys
|
|
105
93
|
]);
|
|
106
94
|
const setKey = (key, value) => {
|
|
@@ -117,7 +105,6 @@ var useKeyStore = (defaultKeys = []) => {
|
|
|
117
105
|
Device,
|
|
118
106
|
DeviceKind,
|
|
119
107
|
DeviceType,
|
|
120
|
-
HaloProxy,
|
|
121
108
|
KeyStore,
|
|
122
109
|
useContacts,
|
|
123
110
|
useDevices,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/halo/index.ts", "../../../../src/halo/useContacts.ts", "../../../../src/halo/useDevices.ts", "../../../../src/halo/useHaloInvitations.ts", "../../../../src/halo/useIdentity.ts", "../../../../src/halo/useKeyStore.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport {
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": ["import_react", "useContacts", "client", "useClient", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\n// NOTE: Export * fails here.\nexport { type Contact, type Identity, type Halo, Device, DeviceKind, DeviceType } from '@dxos/client/halo';\n\nexport * from './useContacts';\nexport * from './useDevices';\nexport * from './useHaloInvitations';\nexport * from './useIdentity';\nexport * from './useKeyStore';\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport type { Contact } from '@dxos/client/halo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Returns all known Contacts across all Spaces.\n * Contacts are known members of a common Space.\n * Requires ClientContext to be set via ClientProvider.\n */\nexport const useContacts = (): Contact[] => {\n const client = useClient();\n return useMulticastObservable(client.halo.contacts);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport type { Device } from '@dxos/client/halo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\nexport const useDevices = (): Device[] => {\n const client = useClient();\n return useMulticastObservable(client.halo.devices);\n};\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\nimport { type CancellableInvitationObservable, useInvitationStatus } from '../invitations';\n\nexport const useHaloInvitations = (): CancellableInvitationObservable[] => {\n const client = useClient();\n return useMulticastObservable(client.halo.invitations);\n};\n\nexport const useHaloInvitation = (invitationId?: string) => {\n const invitations = useHaloInvitations();\n const invitation = useMemo(\n () => invitations.find((invitation) => invitation.get().invitationId === invitationId),\n [invitations],\n );\n return useInvitationStatus(invitation);\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type Identity } from '@dxos/client/halo';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Hook returning DXOS identity object.\n * Requires ClientContext to be set via ClientProvider.\n */\nexport const useIdentity = (): Identity | null => {\n const client = useClient();\n return useMulticastObservable(client.halo.identity);\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useMemo, useReducer } from 'react';\n\n// TODO(burdon): Move to settings plugin.\nexport class KeyStore {\n private _keyMap = new Map<string, string>();\n\n constructor(private readonly _defaultKeys: string[] = []) {}\n\n get map() {\n return this._keyMap;\n }\n\n // TODO(burdon): Create subkeys.\n initialize() {\n this._defaultKeys.forEach((key) => {\n const value = localStorage.getItem(key);\n this.setKey(key, value ?? '');\n });\n\n return this;\n }\n\n getKey(key: string) {\n localStorage.getItem(key);\n }\n\n setKey(key: string, value: string) {\n localStorage.setItem(key, '');\n this._keyMap.set(key, value);\n }\n}\n\n/**\n * Settings store.\n * @deprecated Replace with HALO key store when available.\n */\nexport const useKeyStore = (\n defaultKeys: string[] = [],\n): [Map<string, string>, (key: string, value: string) => void] => {\n const [, forceUpdate] = useReducer((x) => x + 1, 0);\n const store = useMemo(() => new KeyStore(defaultKeys).initialize(), [defaultKeys]);\n const setKey = (key: string, value: string) => {\n store.setKey(key, value);\n forceUpdate();\n };\n\n return [store.map, setKey];\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,kBAAuF;ACAvF,yBAAuC;ACAvC,IAAAA,sBAAuC;ACDvC,mBAAwB;AAExB,IAAAA,sBAAuC;ACDvC,IAAAA,sBAAuC;ACDvC,IAAAC,gBAAoC;AJU7B,IAAMC,cAAc,MAAA;AACzB,QAAMC,aAASC,iCAAAA;AACf,aAAOC,2CAAuBF,OAAOG,KAAKC,QAAQ;AACpD;ACRO,IAAMC,aAAa,MAAA;AACxB,QAAML,aAASC,iCAAAA;AACf,aAAOC,oBAAAA,wBAAuBF,OAAOG,KAAKG,OAAO;AACnD;ACDO,IAAMC,qBAAqB,MAAA;AAChC,QAAMP,aAASC,iCAAAA;AACf,aAAOC,oBAAAA,wBAAuBF,OAAOG,KAAKK,WAAW;AACvD;AAEO,IAAMC,oBAAoB,CAACC,iBAAAA;AAChC,QAAMF,cAAcD,mBAAAA;AACpB,QAAMI,iBAAaC,sBACjB,MAAMJ,YAAYK,KAAK,CAACF,gBAAeA,YAAWG,IAAG,EAAGJ,iBAAiBA,YAAAA,GACzE;IAACF;GAAY;AAEf,aAAOO,2CAAoBJ,UAAAA;AAC7B;ACVO,IAAMK,cAAc,MAAA;AACzB,QAAMhB,aAASC,iCAAAA;AACf,aAAOC,oBAAAA,wBAAuBF,OAAOG,KAAKc,QAAQ;AACpD;ACTO,IAAMC,WAAN,MAAMA;EAGXC,YAA6BC,eAAyB,CAAA,GAAI;SAA7BA,eAAAA;SAFrBC,UAAU,oBAAIC,IAAAA;EAEqC;EAE3D,IAAIC,MAAM;AACR,WAAO,KAAKF;EACd;;EAGAG,aAAa;AACX,SAAKJ,aAAaK,QAAQ,CAACC,QAAAA;AACzB,YAAMC,QAAQC,aAAaC,QAAQH,GAAAA;AACnC,WAAKI,OAAOJ,KAAKC,SAAS,EAAA;IAC5B,CAAA;AAEA,WAAO;EACT;EAEAI,OAAOL,KAAa;AAClBE,iBAAaC,QAAQH,GAAAA;EACvB;EAEAI,OAAOJ,KAAaC,OAAe;AACjCC,iBAAaI,QAAQN,KAAK,EAAA;AAC1B,SAAKL,QAAQY,IAAIP,KAAKC,KAAAA;EACxB;AACF;AAMO,IAAMO,cAAc,CACzBC,cAAwB,CAAA,MAAE;AAE1B,QAAM,CAAA,EAAGC,WAAAA,QAAeC,0BAAW,CAACC,MAAMA,IAAI,GAAG,CAAA;AACjD,QAAMC,YAAQ3B,cAAAA,SAAQ,MAAM,IAAIM,SAASiB,WAAAA,EAAaX,WAAU,GAAI;IAACW;GAAY;AACjF,QAAML,SAAS,CAACJ,KAAaC,UAAAA;AAC3BY,UAAMT,OAAOJ,KAAKC,KAAAA;AAClBS,gBAAAA;EACF;AAEA,SAAO;IAACG,MAAMhB;IAAKO;;AACrB;",
|
|
6
|
+
"names": ["import_react_async", "import_react", "useContacts", "client", "useClient", "useMulticastObservable", "halo", "contacts", "useDevices", "devices", "useHaloInvitations", "invitations", "useHaloInvitation", "invitationId", "invitation", "useMemo", "find", "get", "useInvitationStatus", "useIdentity", "identity", "KeyStore", "constructor", "_defaultKeys", "_keyMap", "Map", "map", "initialize", "forEach", "key", "value", "localStorage", "getItem", "setKey", "getKey", "setItem", "set", "useKeyStore", "defaultKeys", "forceUpdate", "useReducer", "x", "store"]
|
|
7
7
|
}
|
|
@@ -18,15 +18,15 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var invitations_exports = {};
|
|
20
20
|
__export(invitations_exports, {
|
|
21
|
-
AuthenticatingInvitationObservable: () =>
|
|
22
|
-
CancellableInvitationObservable: () =>
|
|
23
|
-
Invitation: () =>
|
|
24
|
-
InvitationEncoder: () =>
|
|
25
|
-
InvitationsProxy: () =>
|
|
26
|
-
useInvitationStatus: () =>
|
|
21
|
+
AuthenticatingInvitationObservable: () => import_chunk_X5URYLUS.AuthenticatingInvitationObservable,
|
|
22
|
+
CancellableInvitationObservable: () => import_chunk_X5URYLUS.CancellableInvitationObservable,
|
|
23
|
+
Invitation: () => import_chunk_X5URYLUS.Invitation,
|
|
24
|
+
InvitationEncoder: () => import_chunk_X5URYLUS.InvitationEncoder,
|
|
25
|
+
InvitationsProxy: () => import_chunk_X5URYLUS.InvitationsProxy,
|
|
26
|
+
useInvitationStatus: () => import_chunk_X5URYLUS.useInvitationStatus
|
|
27
27
|
});
|
|
28
28
|
module.exports = __toCommonJS(invitations_exports);
|
|
29
|
-
var
|
|
29
|
+
var import_chunk_X5URYLUS = require("../chunk-X5URYLUS.cjs");
|
|
30
30
|
// Annotate the CommonJS export names for ESM import in node:
|
|
31
31
|
0 && (module.exports = {
|
|
32
32
|
AuthenticatingInvitationObservable,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["index.cjs"],
|
|
4
|
-
"sourcesContent": ["import {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n} from \"../chunk-
|
|
4
|
+
"sourcesContent": ["import {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n} from \"../chunk-X5URYLUS.cjs\";\nexport {\n AuthenticatingInvitationObservable,\n CancellableInvitationObservable,\n Invitation,\n InvitationEncoder,\n InvitationsProxy,\n useInvitationStatus\n};\n//# sourceMappingURL=index.cjs.map\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAOO;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -24,14 +24,10 @@ __export(mesh_exports, {
|
|
|
24
24
|
module.exports = __toCommonJS(mesh_exports);
|
|
25
25
|
var import_chunk_IRRRZ2KE = require("../chunk-IRRRZ2KE.cjs");
|
|
26
26
|
__reExport(mesh_exports, require("@dxos/client/mesh"), module.exports);
|
|
27
|
-
var
|
|
27
|
+
var import_react_async = require("@dxos/react-async");
|
|
28
28
|
var useNetworkStatus = () => {
|
|
29
29
|
const client = (0, import_chunk_IRRRZ2KE.useClient)();
|
|
30
|
-
|
|
31
|
-
const subscription = client.mesh.networkStatus.subscribe(listener);
|
|
32
|
-
return () => subscription.unsubscribe();
|
|
33
|
-
}, () => client.mesh.networkStatus.get());
|
|
34
|
-
return networkStatus;
|
|
30
|
+
return (0, import_react_async.useMulticastObservable)(client.mesh.networkStatus);
|
|
35
31
|
};
|
|
36
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
37
33
|
0 && (module.exports = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/mesh/index.ts", "../../../../src/mesh/useNetworkStatus.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/mesh';\n\nexport * from './useNetworkStatus';\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAc;
|
|
6
|
-
"names": ["useNetworkStatus", "client", "useClient", "
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2020 DXOS.org\n//\n\nexport * from '@dxos/client/mesh';\n\nexport * from './useNetworkStatus';\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { type NetworkStatus } from '@dxos/client/mesh';\nimport { useMulticastObservable } from '@dxos/react-async';\n\nimport { useClient } from '../client';\n\n/**\n * Creates a network status subscription.\n */\nexport const useNetworkStatus = (): NetworkStatus => {\n const client = useClient();\n return useMulticastObservable(client.mesh.networkStatus);\n};\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAc;ACCd,yBAAuC;AAOhC,IAAMA,mBAAmB,MAAA;AAC9B,QAAMC,aAASC,iCAAAA;AACf,aAAOC,2CAAuBF,OAAOG,KAAKC,aAAa;AACzD;",
|
|
6
|
+
"names": ["useNetworkStatus", "client", "useClient", "useMulticastObservable", "mesh", "networkStatus"]
|
|
7
7
|
}
|