@getuserfeedback/react-native 1.3.6 → 1.3.7

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.js CHANGED
@@ -15,6 +15,7 @@ import { createContext, createElement, useCallback, useContext, useEffect, useMe
15
15
  import { useResolvedHostViewport } from "./host-viewport.js";
16
16
  import { toCommandFlowId, toCommandSettlementError, toRetryWithoutFlowHandle, } from "./provider-command-helpers.js";
17
17
  import { clearProviderFlowHandleCache, createProviderFlowHandleCache, deleteCachedProviderFlowHandleId, deleteCachedProviderFlowId, getCachedProviderFlowHandleId, snapshotProviderFlowCommand, writeSettledProviderFlowHandleId, } from "./provider-flow-handle-cache.js";
18
+ import { enqueueProviderNativeMessage, removeProviderNativeMessageId, removeProviderNativeMessageIds, replaceProviderNativeMessages, } from "./provider-message-queue.js";
18
19
  import { applyProviderOverlayFlowState, applyProviderOverlayHandleInvalidated, createDefaultProviderOverlayState, DEFAULT_PROVIDER_OVERLAY_VISIBILITY, updateProviderOverlayReadySequence, } from "./provider-overlay-state.js";
19
20
  import { ProviderWidgetHostOverlay, toProviderWidgetHostStyle, toProviderWidgetSheetHostViewport, } from "./provider-widget-host-overlay.js";
20
21
  import { REACT_NATIVE_SDK_VERSION } from "./version.js";
@@ -170,7 +171,7 @@ export function GetUserFeedbackProvider({ autoInit = true, children, commandTime
170
171
  if (pendingCommand.isStartup) {
171
172
  startupQueuedKeyRef.current = null;
172
173
  }
173
- setNativeMessages((messages) => messages.filter((entry) => entry.id !== pendingCommand.messageId));
174
+ setNativeMessages((messages) => removeProviderNativeMessageId(messages, pendingCommand.messageId));
174
175
  pendingCommand.reject(error);
175
176
  }, []);
176
177
  const startPendingCommandTimeout = useCallback((requestId, pendingCommand) => {
@@ -248,23 +249,15 @@ export function GetUserFeedbackProvider({ autoInit = true, children, commandTime
248
249
  startPendingCommandTimeout(requestId, pendingCommandsRef.current.get(requestId));
249
250
  }
250
251
  });
251
- setNativeMessages((messages) => {
252
- if (!(isStartup && prioritizeStartup)) {
253
- return [...messages, validatedMessage];
254
- }
255
- const firstActionIndex = messages.findIndex((entry) => {
256
- const pendingCommand = pendingCommandsRef.current.get(entry.envelope.requestId);
257
- return !(pendingCommand === null || pendingCommand === void 0 ? void 0 : pendingCommand.isStartup);
258
- });
259
- if (firstActionIndex === -1) {
260
- return [...messages, validatedMessage];
261
- }
262
- return [
263
- ...messages.slice(0, firstActionIndex),
264
- validatedMessage,
265
- ...messages.slice(firstActionIndex),
266
- ];
267
- });
252
+ setNativeMessages((messages) => enqueueProviderNativeMessage(messages, {
253
+ isStartup,
254
+ isStartupMessage: (entry) => {
255
+ var _a;
256
+ return ((_a = pendingCommandsRef.current.get(entry.envelope.requestId)) === null || _a === void 0 ? void 0 : _a.isStartup) === true;
257
+ },
258
+ message: validatedMessage,
259
+ prioritizeStartup,
260
+ }));
268
261
  return promise;
269
262
  }, [instanceId, startPendingCommandTimeout]);
270
263
  const reissueDeliveredPendingActionCommands = useCallback(() => {
@@ -302,7 +295,7 @@ export function GetUserFeedbackProvider({ autoInit = true, children, commandTime
302
295
  if (replacements.size === 0) {
303
296
  return false;
304
297
  }
305
- setNativeMessages((messages) => messages.map((message) => { var _a; return (_a = replacements.get(message.id)) !== null && _a !== void 0 ? _a : message; }));
298
+ setNativeMessages((messages) => replaceProviderNativeMessages(messages, replacements));
306
299
  return true;
307
300
  }, []);
308
301
  const cancelPendingStartupCommands = useCallback(() => {
@@ -321,7 +314,7 @@ export function GetUserFeedbackProvider({ autoInit = true, children, commandTime
321
314
  if (canceledMessageIds.size === 0) {
322
315
  return;
323
316
  }
324
- setNativeMessages((messages) => messages.filter((entry) => !canceledMessageIds.has(entry.id)));
317
+ setNativeMessages((messages) => removeProviderNativeMessageIds(messages, canceledMessageIds));
325
318
  }, []);
326
319
  const enqueueStartupCommands = useCallback(({ force = false } = {}) => {
327
320
  if (!autoInit) {
@@ -472,7 +465,7 @@ export function GetUserFeedbackProvider({ autoInit = true, children, commandTime
472
465
  return;
473
466
  }
474
467
  pendingCommandsRef.current.delete(requestId);
475
- setNativeMessages((messages) => messages.filter((entry) => entry.id !== pendingCommand.messageId));
468
+ setNativeMessages((messages) => removeProviderNativeMessageId(messages, pendingCommand.messageId));
476
469
  if (pendingCommand.timeout) {
477
470
  clearTimeout(pendingCommand.timeout);
478
471
  }
@@ -0,0 +1,11 @@
1
+ import type { WebViewTransportNativeMessage } from "@getuserfeedback/protocol/webview-transport";
2
+ export type ProviderNativeMessageQueue = readonly WebViewTransportNativeMessage[];
3
+ export declare function enqueueProviderNativeMessage(messages: ProviderNativeMessageQueue, { isStartup, isStartupMessage, message, prioritizeStartup, }: {
4
+ isStartup: boolean;
5
+ isStartupMessage: (message: WebViewTransportNativeMessage) => boolean;
6
+ message: WebViewTransportNativeMessage;
7
+ prioritizeStartup: boolean;
8
+ }): WebViewTransportNativeMessage[];
9
+ export declare function removeProviderNativeMessageIds(messages: ProviderNativeMessageQueue, messageIds: ReadonlySet<string>): WebViewTransportNativeMessage[];
10
+ export declare function removeProviderNativeMessageId(messages: ProviderNativeMessageQueue, messageId: string): WebViewTransportNativeMessage[];
11
+ export declare function replaceProviderNativeMessages(messages: ProviderNativeMessageQueue, replacementsByMessageId: ReadonlyMap<string, WebViewTransportNativeMessage>): WebViewTransportNativeMessage[];
@@ -0,0 +1,23 @@
1
+ export function enqueueProviderNativeMessage(messages, { isStartup, isStartupMessage, message, prioritizeStartup, }) {
2
+ if (!(isStartup && prioritizeStartup)) {
3
+ return [...messages, message];
4
+ }
5
+ const firstActionIndex = messages.findIndex((entry) => !isStartupMessage(entry));
6
+ if (firstActionIndex === -1) {
7
+ return [...messages, message];
8
+ }
9
+ return [
10
+ ...messages.slice(0, firstActionIndex),
11
+ message,
12
+ ...messages.slice(firstActionIndex),
13
+ ];
14
+ }
15
+ export function removeProviderNativeMessageIds(messages, messageIds) {
16
+ return messages.filter((entry) => !messageIds.has(entry.id));
17
+ }
18
+ export function removeProviderNativeMessageId(messages, messageId) {
19
+ return removeProviderNativeMessageIds(messages, new Set([messageId]));
20
+ }
21
+ export function replaceProviderNativeMessages(messages, replacementsByMessageId) {
22
+ return messages.map((message) => { var _a; return (_a = replacementsByMessageId.get(message.id)) !== null && _a !== void 0 ? _a : message; });
23
+ }
package/dist/version.js CHANGED
@@ -3,4 +3,4 @@ const reactNativeSdkVersion = typeof __GX_REACT_NATIVE_SDK_VERSION__ === "string
3
3
  : "";
4
4
  // Build scripts patch this fallback to the package version for published artifacts.
5
5
  // Source-linked workspace usage keeps the local fallback.
6
- export const REACT_NATIVE_SDK_VERSION = reactNativeSdkVersion.length > 0 ? reactNativeSdkVersion : "1.3.6";
6
+ export const REACT_NATIVE_SDK_VERSION = reactNativeSdkVersion.length > 0 ? reactNativeSdkVersion : "1.3.7";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getuserfeedback/react-native",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "getuserfeedback React Native SDK",
5
5
  "keywords": [
6
6
  "getuserfeedback",