@arbidocs/react 0.5.27 → 0.5.29

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/index.cjs CHANGED
@@ -6274,6 +6274,8 @@ function ArbiWebSocketProvider({
6274
6274
  children
6275
6275
  }) {
6276
6276
  const arbi = chunkYIUUTRMQ_cjs.useArbi();
6277
+ const arbiRef = React.useRef(arbi);
6278
+ arbiRef.current = arbi;
6277
6279
  const queryClient = reactQuery.useQueryClient();
6278
6280
  const subscribersRef = React.useRef(/* @__PURE__ */ new Set());
6279
6281
  const setStatus = useArbiWsStore((s) => s.setStatus);
@@ -6312,10 +6314,10 @@ function ArbiWebSocketProvider({
6312
6314
  else {
6313
6315
  const type = msg.type;
6314
6316
  if (type.startsWith("chat.") || type === "agent_dm_status")
6315
- void chunk3ZLRZTKP_cjs.applyChatEvent(arbi, queryClient, msg);
6317
+ void chunk3ZLRZTKP_cjs.applyChatEvent(arbiRef.current, queryClient, msg);
6316
6318
  else if (type.startsWith("call."))
6317
6319
  chunk3ZLRZTKP_cjs.applyCallEvent(queryClient, msg, {
6318
- me: arbi.isLoggedIn ? arbi.user.identity()?.externalId ?? null : null,
6320
+ me: arbiRef.current.isLoggedIn ? arbiRef.current.user.identity()?.externalId ?? null : null,
6319
6321
  acceptRings: acceptRingsRef.current
6320
6322
  });
6321
6323
  else void applyLiveUpdate(queryClient, msg);
@@ -6341,8 +6343,11 @@ function ArbiWebSocketProvider({
6341
6343
  };
6342
6344
  const start = async () => {
6343
6345
  if (cancelled) return;
6344
- const info = arbi.getConnectionInfo();
6345
- if (!info) return;
6346
+ const info = arbiRef.current.getConnectionInfo();
6347
+ if (!info) {
6348
+ scheduleRestart();
6349
+ return;
6350
+ }
6346
6351
  conn?.close();
6347
6352
  conn = null;
6348
6353
  setStatus("connecting");
@@ -6354,9 +6359,9 @@ function ArbiWebSocketProvider({
6354
6359
  ),
6355
6360
  accessToken: info.accessToken,
6356
6361
  // Resolve the freshest token on every (re)connect so rotation is picked up.
6357
- getAccessToken: () => arbi.getConnectionInfo()?.accessToken ?? null,
6362
+ getAccessToken: () => arbiRef.current.getConnectionInfo()?.accessToken ?? null,
6358
6363
  // A reconnect refused for its token re-logs in silently first.
6359
- refreshAuth: () => arbi.refreshAccess(),
6364
+ refreshAuth: () => arbiRef.current.refreshAccess(),
6360
6365
  onAuthenticated: (message) => onAuthenticatedRef.current?.(message),
6361
6366
  // The session's: a sign-out closes the socket before the server revokes the token.
6362
6367
  signal: info.signal,
@@ -6397,7 +6402,7 @@ function ArbiWebSocketProvider({
6397
6402
  conn?.close();
6398
6403
  reset();
6399
6404
  };
6400
- }, [enabled, arbi, queryClient, setStatus, setEvicted, applyTaskUpdate, applyPresence, reset]);
6405
+ }, [enabled, queryClient, setStatus, setEvicted, applyTaskUpdate, applyPresence, reset]);
6401
6406
  return /* @__PURE__ */ jsxRuntime.jsx(ArbiWsContext.Provider, { value: context, children });
6402
6407
  }
6403
6408
  function useArbiWebSocket(onMessage) {
@@ -8155,6 +8160,31 @@ function usePasswordChangeForm({
8155
8160
  }
8156
8161
  };
8157
8162
  }
8163
+ function useDismissedTips() {
8164
+ const queryClient = reactQuery.useQueryClient();
8165
+ const { data: userSettings } = useUserSettings();
8166
+ const { mutate: updateUserSettings } = useUpdateUserSettings();
8167
+ const loaded = userSettings !== void 0;
8168
+ const dismissed = userSettings?.dismissed_tips ?? [];
8169
+ const dismissTip = React.useCallback(
8170
+ (code) => {
8171
+ const key = chunkRRWAX52L_cjs.arbiQueryKeys.userSettings();
8172
+ const current = queryClient.getQueryData(key);
8173
+ if (!current) return;
8174
+ const list = current.dismissed_tips ?? [];
8175
+ if (list.includes(code)) return;
8176
+ const next = [...list, code];
8177
+ queryClient.setQueryData(key, { ...current, dismissed_tips: next });
8178
+ updateUserSettings({ dismissed_tips: next });
8179
+ },
8180
+ [queryClient, updateUserSettings]
8181
+ );
8182
+ const resetTips = React.useCallback(() => {
8183
+ if (dismissed.length === 0) return;
8184
+ updateUserSettings({ dismissed_tips: [] });
8185
+ }, [dismissed.length, updateUserSettings]);
8186
+ return { dismissed, loaded, dismissTip, resetTips };
8187
+ }
8158
8188
  function toNotificationPreferences(stored, keys) {
8159
8189
  const checked = Object.fromEntries(keys.map((key) => [key, stored?.[key] ?? true]));
8160
8190
  return {
@@ -15182,6 +15212,7 @@ exports.useDisconnectCalendarAccount = useDisconnectCalendarAccount;
15182
15212
  exports.useDisconnectConnector = useDisconnectConnector;
15183
15213
  exports.useDisconnectMailAccount = useDisconnectMailAccount;
15184
15214
  exports.useDisconnectSlack = useDisconnectSlack;
15215
+ exports.useDismissedTips = useDismissedTips;
15185
15216
  exports.useDocumentAutoAdd = useDocumentAutoAdd;
15186
15217
  exports.useDocumentHostActions = useDocumentHostActions;
15187
15218
  exports.useDocumentPendingSync = useDocumentPendingSync;