@seamapi/react 1.63.0 → 1.64.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.
@@ -32,10 +32,11 @@ interface SeamProviderBaseProps extends PropsWithChildren {
32
32
  unminifiyCss?: boolean | undefined;
33
33
  queryClient?: QueryClient | undefined;
34
34
  telemetryClient?: TelemetryClient | undefined;
35
+ onSessionUpdate?: (client: Seam) => void;
35
36
  }
36
37
  export type SeamProviderClientOptions = Pick<SeamClientOptions, 'endpoint'>;
37
38
  export declare const seamComponentsClassName = "seam-components";
38
- export declare function SeamProvider({ children, disableTelemetry, disableCssInjection, disableFontInjection, unminifiyCss, queryClient, telemetryClient, ...props }: SeamProviderProps): JSX.Element;
39
+ export declare function SeamProvider({ children, disableTelemetry, disableCssInjection, disableFontInjection, unminifiyCss, onSessionUpdate, queryClient, telemetryClient, ...props }: SeamProviderProps): JSX.Element;
39
40
  export declare const seamContext: import("react").Context<SeamContext>;
40
41
  export declare function useSeamContext(): SeamContext;
41
42
  export {};
@@ -1,12 +1,13 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
3
- import { createContext, useContext, useMemo, } from 'react';
3
+ import { createContext, useContext, useEffect, useMemo, } from 'react';
4
4
  import { TelemetryProvider, useUserTelemetry, } from '../../lib/telemetry/index.js';
5
5
  import { useSeamFont } from '../../lib/seam/use-seam-font.js';
6
6
  import { useSeamStyles } from '../../lib/seam/use-seam-styles.js';
7
+ import { useSeamClient } from './use-seam-client.js';
7
8
  const defaultQueryClient = new QueryClient();
8
9
  export const seamComponentsClassName = 'seam-components';
9
- export function SeamProvider({ children, disableTelemetry = false, disableCssInjection = false, disableFontInjection = false, unminifiyCss = false, queryClient, telemetryClient, ...props }) {
10
+ export function SeamProvider({ children, disableTelemetry = false, disableCssInjection = false, disableFontInjection = false, unminifiyCss = false, onSessionUpdate = () => { }, queryClient, telemetryClient, ...props }) {
10
11
  useSeamStyles({ disabled: disableCssInjection, unminified: unminifiyCss });
11
12
  useSeamFont({ disabled: disableFontInjection });
12
13
  const value = useMemo(() => {
@@ -25,10 +26,15 @@ export function SeamProvider({ children, disableTelemetry = false, disableCssInj
25
26
  }
26
27
  const { Provider } = seamContext;
27
28
  const endpoint = 'endpoint' in props ? props.endpoint : undefined;
28
- return (_jsx("div", { className: seamComponentsClassName, children: _jsx(TelemetryProvider, { client: telemetryClient ?? globalThis.seamTelemetryClient, disabled: disableTelemetry, endpoint: endpoint, children: _jsx(QueryClientProvider, { client: queryClient ?? globalThis.seamQueryClient ?? defaultQueryClient, children: _jsx(Provider, { value: value, children: _jsx(Wrapper, { children: children }) }) }) }) }));
29
+ return (_jsx("div", { className: seamComponentsClassName, children: _jsx(TelemetryProvider, { client: telemetryClient ?? globalThis.seamTelemetryClient, disabled: disableTelemetry, endpoint: endpoint, children: _jsx(QueryClientProvider, { client: queryClient ?? globalThis.seamQueryClient ?? defaultQueryClient, children: _jsx(Provider, { value: value, children: _jsx(Wrapper, { onSessionUpdate: onSessionUpdate, children: children }) }) }) }) }));
29
30
  }
30
- function Wrapper({ children }) {
31
+ function Wrapper({ onSessionUpdate, children, }) {
31
32
  useUserTelemetry();
33
+ const { client } = useSeamClient();
34
+ useEffect(() => {
35
+ if (client != null)
36
+ onSessionUpdate(client);
37
+ }, [onSessionUpdate, client]);
32
38
  return _jsx(_Fragment, { children: children });
33
39
  }
34
40
  const createDefaultSeamContextValue = () => {
@@ -1 +1 @@
1
- {"version":3,"file":"SeamProvider.js","sourceRoot":"","sources":["../../src/lib/seam/SeamProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SeamProvider.js","sourceRoot":"","sources":["../../src/lib/seam/SeamProvider.tsx"],"names":[],"mappings":"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"}
@@ -10,12 +10,34 @@ export function useUpdateAccessCode() {
10
10
  return await client.accessCodes.update(mutationParams);
11
11
  },
12
12
  onSuccess: (_data, variables) => {
13
- void queryClient.invalidateQueries([
14
- 'access_codes',
15
- 'get',
16
- { access_code_id: variables.access_code_id },
17
- ]);
18
- void queryClient.invalidateQueries(['access_codes', 'list']);
13
+ // There is no guarantee that the actual code has updated even if the
14
+ // request was succesful. To prevent stale data in the UI, the
15
+ // code below optimistically updates the data in cache.
16
+ queryClient.setQueryData(['access_codes', 'get', { access_code_id: variables.access_code_id }], (accessCode) => {
17
+ if (accessCode == null) {
18
+ return;
19
+ }
20
+ return {
21
+ ...accessCode,
22
+ code: variables.code ?? accessCode.code,
23
+ name: variables.name ?? accessCode.name,
24
+ };
25
+ });
26
+ queryClient.setQueryData(['access_codes', 'list', { device_id: variables.device_id }], (accessCodes) => {
27
+ if (accessCodes == null) {
28
+ return;
29
+ }
30
+ return accessCodes.map((accessCode) => {
31
+ if (accessCode.access_code_id === variables.access_code_id) {
32
+ return {
33
+ ...accessCode,
34
+ code: variables.code ?? accessCode.code,
35
+ name: variables.name ?? accessCode.name,
36
+ };
37
+ }
38
+ return accessCode;
39
+ });
40
+ });
19
41
  },
20
42
  });
21
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-update-access-code.js","sourceRoot":"","sources":["../../../src/lib/seam/access-codes/use-update-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAQ9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,mBAAmB;IAKjC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAiD,EAAE,EAAE;YACtE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,KAAK,WAAW,CAAC,iBAAiB,CAAC;gBACjC,cAAc;gBACd,KAAK;gBACL,EAAE,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE;aAC7C,CAAC,CAAA;YACF,KAAK,WAAW,CAAC,iBAAiB,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;QAC9D,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"use-update-access-code.js","sourceRoot":"","sources":["../../../src/lib/seam/access-codes/use-update-access-code.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAEX,cAAc,GACf,MAAM,uBAAuB,CAAA;AAU9B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAMhF,MAAM,UAAU,mBAAmB;IAKjC,MAAM,EAAE,MAAM,EAAE,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,WAAW,GAAG,cAAc,EAAE,CAAA;IAEpC,OAAO,WAAW,CAIhB;QACA,UAAU,EAAE,KAAK,EAAE,cAAiD,EAAE,EAAE;YACtE,IAAI,MAAM,KAAK,IAAI;gBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;YAEpD,OAAO,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;QACxD,CAAC;QACD,SAAS,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC9B,qEAAqE;YACrE,8DAA8D;YAC9D,uDAAuD;YAEvD,WAAW,CAAC,YAAY,CACtB,CAAC,cAAc,EAAE,KAAK,EAAE,EAAE,cAAc,EAAE,SAAS,CAAC,cAAc,EAAE,CAAC,EACrE,CAAC,UAAU,EAAE,EAAE;gBACb,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,OAAM;iBACP;gBAED,OAAO;oBACL,GAAG,UAAU;oBACb,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;oBACvC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;iBACxC,CAAA;YACH,CAAC,CACF,CAAA;YAED,WAAW,CAAC,YAAY,CACtB,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC,EAC5D,CAAC,WAAW,EAAE,EAAE;gBACd,IAAI,WAAW,IAAI,IAAI,EAAE;oBACvB,OAAM;iBACP;gBAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;oBACpC,IAAI,UAAU,CAAC,cAAc,KAAK,SAAS,CAAC,cAAc,EAAE;wBAC1D,OAAO;4BACL,GAAG,UAAU;4BACb,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;4BACvC,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;yBACxC,CAAA;qBACF;oBAED,OAAO,UAAU,CAAA;gBACnB,CAAC,CAAC,CAAA;YACJ,CAAC,CACF,CAAA;QACH,CAAC;KACF,CAAC,CAAA;AACJ,CAAC"}
@@ -64,6 +64,7 @@ function useSubmitEditAccessCode(accessCode, onSuccess) {
64
64
  mutate({
65
65
  access_code_id: accessCode.access_code_id,
66
66
  name,
67
+ code,
67
68
  type: 'ongoing',
68
69
  device_id: device.device_id,
69
70
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"EditAccessCodeForm.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EditAccessCodeForm.js","sourceRoot":"","sources":["../../../../src/lib/seam/components/EditAccessCodeForm/EditAccessCodeForm.tsx"],"names":[],"mappings":"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"}
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const seamapiReactVersion = "1.63.0";
1
+ declare const seamapiReactVersion = "1.64.0";
2
2
  export default seamapiReactVersion;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.63.0';
1
+ const seamapiReactVersion = '1.64.0';
2
2
  export default seamapiReactVersion;
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/react",
3
- "version": "1.63.0",
3
+ "version": "1.64.0",
4
4
  "description": "Seam Components.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -133,7 +133,7 @@
133
133
  "@emotion/styled": "^11.10.6",
134
134
  "@mui/icons-material": "^5.11.16",
135
135
  "@mui/material": "^5.12.2",
136
- "@rxfork/r2wc-react-to-web-component": "^2.3.0",
136
+ "@rxfork/r2wc-react-to-web-component": "^2.4.0",
137
137
  "@seamapi/fake-seam-connect": "^1.17.0",
138
138
  "@storybook/addon-designs": "^7.0.1",
139
139
  "@storybook/addon-essentials": "^7.0.2",
@@ -30,7 +30,7 @@ export type ElementProps<T> = R2wcProps<Omit<T, keyof CommonProps>>
30
30
 
31
31
  type R2wcProps<T> = Record<
32
32
  keyof T,
33
- 'string' | 'number' | 'boolean' | 'array' | 'function' | 'json' | 'object'
33
+ 'string' | 'number' | 'boolean' | 'array' | 'object'
34
34
  >
35
35
 
36
36
  type ProviderProps = Omit<
@@ -59,6 +59,7 @@ const providerProps: R2wcProps<ProviderProps> = {
59
59
  disableCssInjection: 'boolean',
60
60
  disableFontInjection: 'boolean',
61
61
  unminifiyCss: 'boolean',
62
+ onSessionUpdate: 'object',
62
63
  }
63
64
 
64
65
  export const defineCustomElement = ({
@@ -90,6 +91,7 @@ function withProvider<P extends JSX.IntrinsicAttributes>(
90
91
  disableCssInjection,
91
92
  disableFontInjection,
92
93
  unminifiyCss,
94
+ onSessionUpdate,
93
95
  container: _container,
94
96
  ...props
95
97
  }: ProviderProps & { container: Container } & P): JSX.Element | null {
@@ -107,6 +109,7 @@ function withProvider<P extends JSX.IntrinsicAttributes>(
107
109
  disableFontInjection ?? globalThis.disableSeamFontInjection
108
110
  }
109
111
  unminifiyCss={unminifiyCss ?? globalThis.unminifiySeamCss}
112
+ onSessionUpdate={onSessionUpdate}
110
113
  >
111
114
  <Component {...(props as P)} />
112
115
  </SeamProvider>
@@ -3,6 +3,7 @@ import {
3
3
  createContext,
4
4
  type PropsWithChildren,
5
5
  useContext,
6
+ useEffect,
6
7
  useMemo,
7
8
  } from 'react'
8
9
  import type { Seam, SeamClientOptions } from 'seamapi'
@@ -16,6 +17,8 @@ import {
16
17
  import { useSeamFont } from 'lib/seam/use-seam-font.js'
17
18
  import { useSeamStyles } from 'lib/seam/use-seam-styles.js'
18
19
 
20
+ import { useSeamClient } from './use-seam-client.js'
21
+
19
22
  declare global {
20
23
  // eslint-disable-next-line no-var
21
24
  var seam: SeamProviderProps | undefined
@@ -62,6 +65,7 @@ interface SeamProviderBaseProps extends PropsWithChildren {
62
65
  unminifiyCss?: boolean | undefined
63
66
  queryClient?: QueryClient | undefined
64
67
  telemetryClient?: TelemetryClient | undefined
68
+ onSessionUpdate?: (client: Seam) => void
65
69
  }
66
70
 
67
71
  export type SeamProviderClientOptions = Pick<SeamClientOptions, 'endpoint'>
@@ -76,6 +80,7 @@ export function SeamProvider({
76
80
  disableCssInjection = false,
77
81
  disableFontInjection = false,
78
82
  unminifiyCss = false,
83
+ onSessionUpdate = () => {},
79
84
  queryClient,
80
85
  telemetryClient,
81
86
  ...props
@@ -122,7 +127,7 @@ export function SeamProvider({
122
127
  }
123
128
  >
124
129
  <Provider value={value}>
125
- <Wrapper>{children}</Wrapper>
130
+ <Wrapper onSessionUpdate={onSessionUpdate}>{children}</Wrapper>
126
131
  </Provider>
127
132
  </QueryClientProvider>
128
133
  </TelemetryProvider>
@@ -130,8 +135,18 @@ export function SeamProvider({
130
135
  )
131
136
  }
132
137
 
133
- function Wrapper({ children }: PropsWithChildren): JSX.Element | null {
138
+ function Wrapper({
139
+ onSessionUpdate,
140
+ children,
141
+ }: Required<Pick<SeamProviderProps, 'onSessionUpdate'>> &
142
+ PropsWithChildren): JSX.Element | null {
134
143
  useUserTelemetry()
144
+
145
+ const { client } = useSeamClient()
146
+ useEffect(() => {
147
+ if (client != null) onSessionUpdate(client)
148
+ }, [onSessionUpdate, client])
149
+
135
150
  return <>{children}</>
136
151
  }
137
152
 
@@ -4,6 +4,8 @@ import {
4
4
  useQueryClient,
5
5
  } from '@tanstack/react-query'
6
6
  import type {
7
+ AccessCode,
8
+ AccessCodesListResponse,
7
9
  AccessCodeUpdateRequest,
8
10
  AccessCodeUpdateResponse,
9
11
  ActionAttempt,
@@ -35,12 +37,45 @@ export function useUpdateAccessCode(): UseMutationResult<
35
37
  return await client.accessCodes.update(mutationParams)
36
38
  },
37
39
  onSuccess: (_data, variables) => {
38
- void queryClient.invalidateQueries([
39
- 'access_codes',
40
- 'get',
41
- { access_code_id: variables.access_code_id },
42
- ])
43
- void queryClient.invalidateQueries(['access_codes', 'list'])
40
+ // There is no guarantee that the actual code has updated even if the
41
+ // request was succesful. To prevent stale data in the UI, the
42
+ // code below optimistically updates the data in cache.
43
+
44
+ queryClient.setQueryData<AccessCode | null>(
45
+ ['access_codes', 'get', { access_code_id: variables.access_code_id }],
46
+ (accessCode) => {
47
+ if (accessCode == null) {
48
+ return
49
+ }
50
+
51
+ return {
52
+ ...accessCode,
53
+ code: variables.code ?? accessCode.code,
54
+ name: variables.name ?? accessCode.name,
55
+ }
56
+ }
57
+ )
58
+
59
+ queryClient.setQueryData<AccessCodesListResponse['access_codes']>(
60
+ ['access_codes', 'list', { device_id: variables.device_id }],
61
+ (accessCodes) => {
62
+ if (accessCodes == null) {
63
+ return
64
+ }
65
+
66
+ return accessCodes.map((accessCode) => {
67
+ if (accessCode.access_code_id === variables.access_code_id) {
68
+ return {
69
+ ...accessCode,
70
+ code: variables.code ?? accessCode.code,
71
+ name: variables.name ?? accessCode.name,
72
+ }
73
+ }
74
+
75
+ return accessCode
76
+ })
77
+ }
78
+ )
44
79
  },
45
80
  })
46
81
  }
@@ -141,6 +141,7 @@ function useSubmitEditAccessCode(
141
141
  {
142
142
  access_code_id: accessCode.access_code_id,
143
143
  name,
144
+ code,
144
145
  type: 'ongoing',
145
146
  device_id: device.device_id,
146
147
  },
@@ -1,3 +1,3 @@
1
- const seamapiReactVersion = '1.63.0'
1
+ const seamapiReactVersion = '1.64.0'
2
2
 
3
3
  export default seamapiReactVersion