@buoy-gg/impersonate 2.1.10 → 2.1.12

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.
@@ -386,7 +386,8 @@ function DataNukeSettings({
386
386
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_dataViewer.DataViewer, {
387
387
  title: "",
388
388
  data: configData,
389
- showTypeFilter: false,
389
+ showTypeFilter: true,
390
+ rawMode: true,
390
391
  initialExpanded: true
391
392
  })
392
393
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
@@ -17,6 +17,26 @@ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r
17
17
  * Uses polished UserCard component for consistent styling.
18
18
  */
19
19
 
20
+ /** Wrapper to use the useRelativeTime hook per history item */
21
+ function HistoryItemCard({
22
+ item,
23
+ isActive,
24
+ onSelect,
25
+ onStop,
26
+ onRemove,
27
+ showRemoveButton
28
+ }) {
29
+ const lastUsedTime = (0, _sharedUi.useRelativeTime)(new Date(item.lastUsedAt));
30
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_UserCard.UserCard, {
31
+ user: item.user,
32
+ isActive: isActive,
33
+ onPress: () => !isActive && onSelect(item.user),
34
+ onStop: isActive ? onStop : undefined,
35
+ onRemove: onRemove,
36
+ showRemoveButton: showRemoveButton,
37
+ lastUsedTime: lastUsedTime
38
+ });
39
+ }
20
40
  function ImpersonateHistoryList({
21
41
  history,
22
42
  currentUserId,
@@ -28,19 +48,14 @@ function ImpersonateHistoryList({
28
48
  const renderHistoryItem = (0, _react.useCallback)(({
29
49
  item
30
50
  }) => {
31
- const {
32
- user,
33
- lastUsedAt
34
- } = item;
35
- const isActive = currentUserId === user.id;
36
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_UserCard.UserCard, {
37
- user: user,
51
+ const isActive = currentUserId === item.user.id;
52
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(HistoryItemCard, {
53
+ item: item,
38
54
  isActive: isActive,
39
- onPress: () => !isActive && onSelectUser(user),
40
- onStop: isActive ? onStopImpersonation : undefined,
41
- onRemove: onRemoveFromHistory ? () => onRemoveFromHistory(user.id) : undefined,
42
- showRemoveButton: !!onRemoveFromHistory,
43
- lastUsedTime: (0, _sharedUi.formatRelativeTime)(new Date(lastUsedAt))
55
+ onSelect: onSelectUser,
56
+ onStop: onStopImpersonation,
57
+ onRemove: onRemoveFromHistory ? () => onRemoveFromHistory(item.user.id) : undefined,
58
+ showRemoveButton: !!onRemoveFromHistory
44
59
  });
45
60
  }, [currentUserId, onSelectUser, onStopImpersonation, onRemoveFromHistory]);
46
61
  if (history.length === 0) {
@@ -224,44 +224,46 @@ function ImpersonateModal({
224
224
  if (!visible) {
225
225
  return null;
226
226
  }
227
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(JsModal, {
228
- visible: visible,
229
- onClose: onClose,
230
- onMinimize: onMinimize,
231
- header: {
232
- showToggleButton: true,
233
- customContent: renderHeaderContent()
234
- },
235
- enablePersistence: true,
236
- initialMode: "bottomSheet",
237
- disableScrollWrapper: true,
238
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
239
- style: styles.container,
240
- children: [activeTab === "search" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UserSearchView.UserSearchView, {
241
- currentUser: currentUser,
242
- isActive: isActive,
243
- searchQuery: searchQuery,
244
- searchResults: searchResults,
245
- isSearching: isSearching,
246
- searchError: searchError,
247
- onSelectUser: handleSelectUser,
248
- onStopImpersonation: stopImpersonation,
249
- searchAvailable: !!onSearchUsers
250
- }), activeTab === "history" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImpersonateHistoryList.ImpersonateHistoryList, {
251
- history: history,
252
- currentUserId: currentUser?.id ?? null,
253
- onSelectUser: handleSelectUser,
254
- onStopImpersonation: stopImpersonation,
255
- onRemoveFromHistory: removeFromHistory,
256
- onClearHistory: clearHistory
257
- }), activeTab === "settings" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataNukeSettings.DataNukeSettings, {
258
- headerKey: headerKey,
259
- settings: dataNukeSettings,
260
- showBanner: showBanner,
261
- onSave: handleSaveSettings,
262
- onShowBannerChange: updateShowBanner,
263
- detectionStatus: detectionStatus
264
- })]
227
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.TickProvider, {
228
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(JsModal, {
229
+ visible: visible,
230
+ onClose: onClose,
231
+ onMinimize: onMinimize,
232
+ header: {
233
+ showToggleButton: true,
234
+ customContent: renderHeaderContent()
235
+ },
236
+ enablePersistence: true,
237
+ initialMode: "bottomSheet",
238
+ disableScrollWrapper: true,
239
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
240
+ style: styles.container,
241
+ children: [activeTab === "search" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_UserSearchView.UserSearchView, {
242
+ currentUser: currentUser,
243
+ isActive: isActive,
244
+ searchQuery: searchQuery,
245
+ searchResults: searchResults,
246
+ isSearching: isSearching,
247
+ searchError: searchError,
248
+ onSelectUser: handleSelectUser,
249
+ onStopImpersonation: stopImpersonation,
250
+ searchAvailable: !!onSearchUsers
251
+ }), activeTab === "history" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_ImpersonateHistoryList.ImpersonateHistoryList, {
252
+ history: history,
253
+ currentUserId: currentUser?.id ?? null,
254
+ onSelectUser: handleSelectUser,
255
+ onStopImpersonation: stopImpersonation,
256
+ onRemoveFromHistory: removeFromHistory,
257
+ onClearHistory: clearHistory
258
+ }), activeTab === "settings" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DataNukeSettings.DataNukeSettings, {
259
+ headerKey: headerKey,
260
+ settings: dataNukeSettings,
261
+ showBanner: showBanner,
262
+ onSave: handleSaveSettings,
263
+ onShowBannerChange: updateShowBanner,
264
+ detectionStatus: detectionStatus
265
+ })]
266
+ })
265
267
  })
266
268
  });
267
269
  }
@@ -381,7 +381,8 @@ export function DataNukeSettings({
381
381
  children: /*#__PURE__*/_jsx(DataViewer, {
382
382
  title: "",
383
383
  data: configData,
384
- showTypeFilter: false,
384
+ showTypeFilter: true,
385
+ rawMode: true,
385
386
  initialExpanded: true
386
387
  })
387
388
  }), /*#__PURE__*/_jsx(TouchableOpacity, {
@@ -9,9 +9,29 @@
9
9
 
10
10
  import React, { useCallback } from "react";
11
11
  import { View, Text, TouchableOpacity, StyleSheet, FlatList } from "react-native";
12
- import { buoyColors, Clock, Trash2, formatRelativeTime } from "@buoy-gg/shared-ui";
12
+ import { buoyColors, Clock, Trash2, useRelativeTime } from "@buoy-gg/shared-ui";
13
13
  import { UserCard } from "./UserCard";
14
14
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ /** Wrapper to use the useRelativeTime hook per history item */
16
+ function HistoryItemCard({
17
+ item,
18
+ isActive,
19
+ onSelect,
20
+ onStop,
21
+ onRemove,
22
+ showRemoveButton
23
+ }) {
24
+ const lastUsedTime = useRelativeTime(new Date(item.lastUsedAt));
25
+ return /*#__PURE__*/_jsx(UserCard, {
26
+ user: item.user,
27
+ isActive: isActive,
28
+ onPress: () => !isActive && onSelect(item.user),
29
+ onStop: isActive ? onStop : undefined,
30
+ onRemove: onRemove,
31
+ showRemoveButton: showRemoveButton,
32
+ lastUsedTime: lastUsedTime
33
+ });
34
+ }
15
35
  export function ImpersonateHistoryList({
16
36
  history,
17
37
  currentUserId,
@@ -23,19 +43,14 @@ export function ImpersonateHistoryList({
23
43
  const renderHistoryItem = useCallback(({
24
44
  item
25
45
  }) => {
26
- const {
27
- user,
28
- lastUsedAt
29
- } = item;
30
- const isActive = currentUserId === user.id;
31
- return /*#__PURE__*/_jsx(UserCard, {
32
- user: user,
46
+ const isActive = currentUserId === item.user.id;
47
+ return /*#__PURE__*/_jsx(HistoryItemCard, {
48
+ item: item,
33
49
  isActive: isActive,
34
- onPress: () => !isActive && onSelectUser(user),
35
- onStop: isActive ? onStopImpersonation : undefined,
36
- onRemove: onRemoveFromHistory ? () => onRemoveFromHistory(user.id) : undefined,
37
- showRemoveButton: !!onRemoveFromHistory,
38
- lastUsedTime: formatRelativeTime(new Date(lastUsedAt))
50
+ onSelect: onSelectUser,
51
+ onStop: onStopImpersonation,
52
+ onRemove: onRemoveFromHistory ? () => onRemoveFromHistory(item.user.id) : undefined,
53
+ showRemoveButton: !!onRemoveFromHistory
39
54
  });
40
55
  }, [currentUserId, onSelectUser, onStopImpersonation, onRemoveFromHistory]);
41
56
  if (history.length === 0) {
@@ -9,7 +9,7 @@
9
9
 
10
10
  import React, { useState, useCallback, useRef, useEffect } from "react";
11
11
  import { View, StyleSheet, TouchableOpacity, TextInput } from "react-native";
12
- import { JsModal as JsModalBase, TabSelector, ModalHeader, macOSColors, Search, X } from "@buoy-gg/shared-ui";
12
+ import { JsModal as JsModalBase, TabSelector, ModalHeader, macOSColors, Search, X, TickProvider } from "@buoy-gg/shared-ui";
13
13
  import { useImpersonate } from "../hooks/useImpersonate";
14
14
  import { useAutoClearReactQuery } from "../hooks/useAutoClearReactQuery";
15
15
  import { useAutoClearRedux } from "../hooks/useAutoClearRedux";
@@ -220,44 +220,46 @@ export function ImpersonateModal({
220
220
  if (!visible) {
221
221
  return null;
222
222
  }
223
- return /*#__PURE__*/_jsx(JsModal, {
224
- visible: visible,
225
- onClose: onClose,
226
- onMinimize: onMinimize,
227
- header: {
228
- showToggleButton: true,
229
- customContent: renderHeaderContent()
230
- },
231
- enablePersistence: true,
232
- initialMode: "bottomSheet",
233
- disableScrollWrapper: true,
234
- children: /*#__PURE__*/_jsxs(View, {
235
- style: styles.container,
236
- children: [activeTab === "search" && /*#__PURE__*/_jsx(UserSearchView, {
237
- currentUser: currentUser,
238
- isActive: isActive,
239
- searchQuery: searchQuery,
240
- searchResults: searchResults,
241
- isSearching: isSearching,
242
- searchError: searchError,
243
- onSelectUser: handleSelectUser,
244
- onStopImpersonation: stopImpersonation,
245
- searchAvailable: !!onSearchUsers
246
- }), activeTab === "history" && /*#__PURE__*/_jsx(ImpersonateHistoryList, {
247
- history: history,
248
- currentUserId: currentUser?.id ?? null,
249
- onSelectUser: handleSelectUser,
250
- onStopImpersonation: stopImpersonation,
251
- onRemoveFromHistory: removeFromHistory,
252
- onClearHistory: clearHistory
253
- }), activeTab === "settings" && /*#__PURE__*/_jsx(DataNukeSettingsComponent, {
254
- headerKey: headerKey,
255
- settings: dataNukeSettings,
256
- showBanner: showBanner,
257
- onSave: handleSaveSettings,
258
- onShowBannerChange: updateShowBanner,
259
- detectionStatus: detectionStatus
260
- })]
223
+ return /*#__PURE__*/_jsx(TickProvider, {
224
+ children: /*#__PURE__*/_jsx(JsModal, {
225
+ visible: visible,
226
+ onClose: onClose,
227
+ onMinimize: onMinimize,
228
+ header: {
229
+ showToggleButton: true,
230
+ customContent: renderHeaderContent()
231
+ },
232
+ enablePersistence: true,
233
+ initialMode: "bottomSheet",
234
+ disableScrollWrapper: true,
235
+ children: /*#__PURE__*/_jsxs(View, {
236
+ style: styles.container,
237
+ children: [activeTab === "search" && /*#__PURE__*/_jsx(UserSearchView, {
238
+ currentUser: currentUser,
239
+ isActive: isActive,
240
+ searchQuery: searchQuery,
241
+ searchResults: searchResults,
242
+ isSearching: isSearching,
243
+ searchError: searchError,
244
+ onSelectUser: handleSelectUser,
245
+ onStopImpersonation: stopImpersonation,
246
+ searchAvailable: !!onSearchUsers
247
+ }), activeTab === "history" && /*#__PURE__*/_jsx(ImpersonateHistoryList, {
248
+ history: history,
249
+ currentUserId: currentUser?.id ?? null,
250
+ onSelectUser: handleSelectUser,
251
+ onStopImpersonation: stopImpersonation,
252
+ onRemoveFromHistory: removeFromHistory,
253
+ onClearHistory: clearHistory
254
+ }), activeTab === "settings" && /*#__PURE__*/_jsx(DataNukeSettingsComponent, {
255
+ headerKey: headerKey,
256
+ settings: dataNukeSettings,
257
+ showBanner: showBanner,
258
+ onSave: handleSaveSettings,
259
+ onShowBannerChange: updateShowBanner,
260
+ detectionStatus: detectionStatus
261
+ })]
262
+ })
261
263
  })
262
264
  });
263
265
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DataNukeSettings.d.ts","sourceRoot":"","sources":["../../../../src/impersonate/components/DataNukeSettings.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAyB5D,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAWzE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,OAAO,CAAC;IACtB,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,0CAA0C;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzF,2EAA2E;IAC3E,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,4CAA4C;IAC5C,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAgFD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,EACR,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,eAAe,GAChB,EAAE,qBAAqB,qBAiVvB"}
1
+ {"version":3,"file":"DataNukeSettings.d.ts","sourceRoot":"","sources":["../../../../src/impersonate/components/DataNukeSettings.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAuC,MAAM,OAAO,CAAC;AAyB5D,OAAO,KAAK,EAAE,gBAAgB,IAAI,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAWzE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,UAAU,EAAE,OAAO,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,OAAO,CAAC;IACtB,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,yBAAyB;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,0CAA0C;IAC1C,UAAU,EAAE,OAAO,CAAC;IACpB,kCAAkC;IAClC,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,EAAE,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;IACzF,2EAA2E;IAC3E,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC5C,4CAA4C;IAC5C,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAgFD,wBAAgB,gBAAgB,CAAC,EAC/B,SAAS,EACT,QAAQ,EACR,UAAU,EACV,MAAM,EACN,kBAAkB,EAClB,eAAe,GAChB,EAAE,qBAAqB,qBAkVvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImpersonateHistoryList.d.ts","sourceRoot":"","sources":["../../../../src/impersonate/components/ImpersonateHistoryList.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAsB,MAAM,OAAO,CAAC;AAe3C,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,2BAA2B;IAC1C,0CAA0C;IAC1C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uDAAuD;IACvD,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,EAAE,2BAA2B,qBAkE7B"}
1
+ {"version":3,"file":"ImpersonateHistoryList.d.ts","sourceRoot":"","sources":["../../../../src/impersonate/components/ImpersonateHistoryList.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAsB,MAAM,OAAO,CAAC;AAe3C,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAgCnD,MAAM,WAAW,2BAA2B;IAC1C,0CAA0C;IAC1C,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,iEAAiE;IACjE,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uDAAuD;IACvD,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,2CAA2C;IAC3C,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,wBAAgB,sBAAsB,CAAC,EACrC,OAAO,EACP,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,EAAE,2BAA2B,qBAgE7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"ImpersonateModal.d.ts","sourceRoot":"","sources":["../../../../src/impersonate/components/ImpersonateModal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAgBxE,OAAO,KAAK,EAAE,qBAAqB,EAA0B,MAAM,UAAU,CAAC;AAgC9E,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,eAAsB,GACvB,EAAE,qBAAqB,4BAoOvB"}
1
+ {"version":3,"file":"ImpersonateModal.d.ts","sourceRoot":"","sources":["../../../../src/impersonate/components/ImpersonateModal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAiBxE,OAAO,KAAK,EAAE,qBAAqB,EAA0B,MAAM,UAAU,CAAC;AAgC9E,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,eAAsB,GACvB,EAAE,qBAAqB,4BAsOvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-gg/impersonate",
3
- "version": "2.1.10",
3
+ "version": "2.1.12",
4
4
  "description": "User impersonation tool for Buoy DevTools - inject custom headers for admin testing",
5
5
  "main": "lib/commonjs/index.js",
6
6
  "module": "lib/module/index.js",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "sideEffects": false,
28
28
  "dependencies": {
29
- "@buoy-gg/shared-ui": "2.1.10"
29
+ "@buoy-gg/shared-ui": "2.1.12"
30
30
  },
31
31
  "peerDependencies": {
32
32
  "react": "*",