@rpcbase/client 0.218.0 → 0.221.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rpcbase/client",
3
- "version": "0.218.0",
3
+ "version": "0.221.0",
4
4
  "scripts": {
5
5
  "build": "../../node_modules/.bin/wireit",
6
6
  "test": "../../node_modules/.bin/wireit"
@@ -2,9 +2,9 @@
2
2
  import getUseQuery from "./getUseQuery"
3
3
 
4
4
 
5
- const getUseDocument = (register_query) => (...args) => {
5
+ export const getUseDocument = (registerQuery) => (...args) => {
6
6
 
7
- const useQuery = getUseQuery(register_query)
7
+ const useQuery = getUseQuery(registerQuery)
8
8
 
9
9
  const res = useQuery(...args)
10
10
 
@@ -19,5 +19,3 @@ const getUseDocument = (register_query) => (...args) => {
19
19
 
20
20
  return {...res, data}
21
21
  }
22
-
23
- export default getUseDocument
@@ -23,8 +23,8 @@ import useData from "./useData"
23
23
 
24
24
  const log = debug("rb:rts:useQuery")
25
25
 
26
- const getUseQuery =
27
- (register_query) =>
26
+ export const getUseQuery =
27
+ (registerQuery) =>
28
28
  (model_name, query = {}, options = {}) => {
29
29
  const id = useId()
30
30
 
@@ -128,7 +128,7 @@ const getUseQuery =
128
128
 
129
129
  log("will register query", model_name, query)
130
130
 
131
- const unsubscribe = register_query(
131
+ const unsubscribe = registerQuery(
132
132
  model_name,
133
133
  query,
134
134
  {...options, key: queryKey, uid},
@@ -231,5 +231,3 @@ const getUseQuery =
231
231
 
232
232
  return result
233
233
  }
234
-
235
- export default getUseQuery
package/rts/index.js CHANGED
@@ -1,10 +1,10 @@
1
- /* @flow */
2
- import {register_query} from "./rts"
3
- import getUseDocument from "./getUseDocument"
4
- import getUseQuery from "./getUseQuery"
1
+ import {registerQuery, sendMessage, onMessage} from "./rts"
2
+ import {getUseDocument} from "./getUseDocument"
3
+ import {getUseQuery} from "./getUseQuery"
5
4
 
6
- export const useQuery = getUseQuery(register_query)
7
5
 
8
- export const useDocument = getUseDocument(register_query)
6
+ export const useQuery = getUseQuery(registerQuery)
9
7
 
10
- export {register_query}
8
+ export const useDocument = getUseDocument(registerQuery)
9
+
10
+ export {registerQuery, sendMessage, onMessage}
package/rts/rts.js CHANGED
@@ -39,16 +39,16 @@ export const add_local_txn = (txn_id) => {
39
39
 
40
40
 
41
41
  // TODO: add compression / decompression
42
- const dispatch_query_payload = (payload, uid) => {
43
- log("dispatch_query_payload", payload)
42
+ const dispatchQueryPayload = (payload, uid) => {
43
+ log("dispatchQueryPayload", payload)
44
44
 
45
45
  const {model_name, query_key} = payload
46
46
  // const cb = _get(_callbacks, `${model_name}.${query_key}`)
47
47
  const callbacks = _callbacks[`${model_name}.${query_key}`]
48
48
 
49
49
  if (!callbacks || !Array.isArray(callbacks)) {
50
- log("dispatch_query_payload", "unable to find callback for query payload", payload)
51
- console.error("dispatch_query_payload", "unable to find callback for query payload", payload)
50
+ log("dispatchQueryPayload", "unable to find callback for query payload", payload)
51
+ console.error("dispatchQueryPayload", "unable to find callback for query payload", payload)
52
52
  return
53
53
  }
54
54
 
@@ -65,7 +65,7 @@ const dispatch_query_payload = (payload, uid) => {
65
65
  data = JSON.parse(payload.data_buf)
66
66
  } catch (err) {
67
67
  console.log("Error", err)
68
- log("dispatch_query_payload", "unable to parse or send data from payload:", payload.data_buf)
68
+ log("dispatchQueryPayload", "unable to parse or send data from payload:", payload.data_buf)
69
69
  }
70
70
 
71
71
  if (!data) {
@@ -126,7 +126,7 @@ export const connect = (tenant_id, user_id) => new Promise((resolve) => {
126
126
 
127
127
  _socket.on("query_payload", (payload) => {
128
128
  // console.log("socket:query_payload", payload)
129
- dispatch_query_payload(payload, user_id)
129
+ dispatchQueryPayload(payload, user_id)
130
130
  })
131
131
 
132
132
  _socket.on("delete_doc", (payload) => {
@@ -161,7 +161,7 @@ export const reconnect = (tenant_id, user_id) => {
161
161
  }
162
162
 
163
163
  // register a query
164
- export const register_query = (model_name, query, _options, _callback) => {
164
+ export const registerQuery = (model_name, query, _options, _callback) => {
165
165
  // left shift args if _options is undefined
166
166
  let options
167
167
  let callback
@@ -174,10 +174,10 @@ export const register_query = (model_name, query, _options, _callback) => {
174
174
  callback = _options
175
175
  }
176
176
 
177
- log("register_query", {model_name, query, options, callback})
177
+ log("registerQuery", {model_name, query, options, callback})
178
178
 
179
179
  if (!_socket) {
180
- log("register_query: trying to use null socket", {model_name, query})
180
+ log("registerQuery: trying to use null socket", {model_name, query})
181
181
  return
182
182
  }
183
183
 
@@ -200,7 +200,7 @@ export const register_query = (model_name, query, _options, _callback) => {
200
200
 
201
201
  // TODO: why both run and register query here ? the run_query should come straight from register ?
202
202
  _socket.emit("run_query", {model_name, query, query_key, options})
203
- _socket.emit("register_query", {model_name, query, query_key, options})
203
+ _socket.emit("registerQuery", {model_name, query, query_key, options})
204
204
 
205
205
  if (Platform.OS === "web") {
206
206
  // run the query from the cache a first time
@@ -218,3 +218,22 @@ export const register_query = (model_name, query, _options, _callback) => {
218
218
  }
219
219
  }
220
220
  }
221
+
222
+
223
+ export const sendMessage = (message, payload) => {
224
+ if (!_socket) {
225
+ console.error("attempting to send message without socket", {message, payload})
226
+ return
227
+ }
228
+
229
+ _socket.emit(message, payload)
230
+ }
231
+
232
+
233
+ export const onMessage = (message, callback) => {
234
+ if (!_socket) {
235
+ throw new Error("registering socket message listener without socket")
236
+ }
237
+
238
+ _socket.on(message, callback)
239
+ }
@@ -1,145 +1,13 @@
1
1
  import {ReactNode} from "react"
2
2
 
3
- // import apiClient from "../../../apiClient"
4
-
5
- // import SearchAnything from "components/search/SearchAnything"
6
-
7
- // import LogoNav from "./components/LogoNav"
8
-
9
- // Env Selector
10
- // import useFilteredEnvs from "./components/EnvSelector/useFilteredEnvs"
11
- // import EnvSelectorToggle from "./components/EnvSelector/Toggle"
12
- // import EnvSelectorDropdown from "./components/EnvSelector/Dropdown"
13
- // Group Selector
14
- // import useFilteredGroups from "./components/GroupSelector/useFilteredGroups"
15
- // import GroupSelectorToggle from "./components/GroupSelector/Toggle"
16
- // import GroupSelectorDropdown from "./components/GroupSelector/Dropdown"
17
-
18
- // import MorphingDropdown from "./components/MorphingDropdown"
19
-
20
- // import AccountsToggle from "./components/AccountsToggle"
21
- // import NotificationsToggle from "./components/NotificationsToggle"
22
- // import EnvSettingsToggle from "./components/EnvSettingsToggle"
23
- // import PublishControl from "./components/PublishControl"
24
-
25
- // import AccountsDropdown from "./components/AccountsDropdown"
26
- // import NotificationsDropdown from "./components/NotificationsDropdown"
27
- // import PhoneDropdown from "components/phone/PhoneDropdown"
28
- // import EnvSettingsDropdown from "./components/EnvSettingsDropdown"
29
-
30
3
  import "./header.scss"
31
4
  import {useContentViewContext} from "../ContentView/ContentViewContext"
32
5
 
33
- // const DefaultHeader = () => {
34
- // return (
35
- // <>
36
- // <LogoNav isSignedIn={false} />
37
-
38
- // <div className="nav-default d-flex flex-row justify-content-between w-100">
39
- // <div className="d-flex flex-row"></div>
40
-
41
- // <div className="d-flex flex-row">
42
- // <a className="nav-link px-2 me-2 fw-bold" href="/signin">
43
- // Sign In
44
- // </a>
45
- // </div>
46
- // </div>
47
- // </>
48
- // )
49
- // }
50
-
51
- // const SignedInHeader = () => {
52
- // const loc = window.location.pathname
53
-
54
- // const [accounts, setAccounts] = useState([])
55
-
56
- // const {envs, activeEnv, setFilter: setEnvsFilter} = useFilteredEnvs()
57
- // const {groups, activeGroup, setFilter: setGroupsFilter} = useFilteredGroups()
58
-
59
- // useEffect(() => {
60
- // // TODO: useapi hook with cache
61
- // const load = async() => {
62
- // const res = await apiClient.post("/api/v1/auth/get_accounts")
63
- // assert(res.data.status === "ok")
64
- // setAccounts(res.data.accounts)
65
- // // console.log("accounts", res.data.accounts)
66
- // }
67
-
68
- // load()
69
- // }, [])
70
-
71
- // return (
72
- // <>
73
- // <MorphingDropdown.Provider side="left">
74
- // <LogoNav isSignedIn={true} />
75
-
76
- // <EnvSelectorToggle activeEnv={activeEnv} />
77
- // <GroupSelectorToggle activeGroup={activeGroup} />
78
-
79
- // <MorphingDropdown.Portal>
80
- // <EnvSelectorDropdown
81
- // id="env-selector"
82
- // envs={envs}
83
- // activeEnv={activeEnv}
84
- // setFilter={setEnvsFilter}
85
- // />
86
-
87
- // <GroupSelectorDropdown
88
- // id="group-selector"
89
- // groups={groups}
90
- // activeGroup={activeGroup}
91
- // setFilter={setGroupsFilter}
92
- // />
93
- // </MorphingDropdown.Portal>
94
- // </MorphingDropdown.Provider>
95
-
96
- // {/* Search anything */}
97
- // <SearchAnything />
98
-
99
- // <div className="ms-auto d-none d-md-flex flex-row text-truncate">
100
- // <a className="nav-link mx-2 px-1" href="/docs">
101
- // Docs
102
- // </a>
103
- // <a
104
- // className={cx("nav-link px-1", {active: loc.startsWith("/marketplace")})}
105
- // href="/marketplace"
106
- // >
107
- // Marketplace
108
- // </a>
109
- // </div>
110
-
111
- // <PublishControl />
112
-
113
- // {/* Phone */}
114
- // <PhoneDropdown />
115
-
116
- // <MorphingDropdown.Provider side="right">
117
- // {/* WARNING: update the anchor-${ids} on the toggle to match the menus if adding or removing */}
118
- // <NotificationsToggle />
119
-
120
- // <EnvSettingsToggle />
121
-
122
- // <AccountsToggle />
123
-
124
- // <MorphingDropdown.Portal>
125
- // {/* Notifications */}
126
- // <NotificationsDropdown id="notifications" />
127
-
128
- // {/* Env Settings */}
129
- // <EnvSettingsDropdown id="env-setup" />
130
-
131
- // {/* Accounts + Org */}
132
- // <AccountsDropdown id="accounts" accounts={accounts} />
133
- // </MorphingDropdown.Portal>
134
- // </MorphingDropdown.Provider>
135
- // </>
136
- // )
137
- // }
138
6
 
139
7
  export const HeaderContainer = ({children}: { children: ReactNode }) => {
140
8
  const contentViewContext = useContentViewContext()
141
9
 
142
- if (!children) return null
10
+ if (!children || !contentViewContext) return null
143
11
 
144
12
  return (
145
13
  <nav