@knocklabs/react-core 0.7.1 → 0.7.2
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/CHANGELOG.md +7 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/modules/preferences/hooks/usePreferences.js +2 -0
- package/dist/cjs/modules/preferences/hooks/usePreferences.js.map +1 -0
- package/dist/esm/index.mjs +4 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/modules/preferences/hooks/usePreferences.mjs +37 -0
- package/dist/esm/modules/preferences/hooks/usePreferences.mjs.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/preferences/hooks/index.d.ts +2 -0
- package/dist/types/modules/preferences/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/preferences/hooks/usePreferences.d.ts +13 -0
- package/dist/types/modules/preferences/hooks/usePreferences.d.ts.map +1 -0
- package/dist/types/modules/preferences/index.d.ts +2 -0
- package/dist/types/modules/preferences/index.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/modules/preferences/hooks/index.ts +1 -0
- package/src/modules/preferences/hooks/usePreferences.ts +69 -0
- package/src/modules/preferences/index.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 3703cf6: feat: adds `usePreferences` hook for fetching and updating user preferences in react apps.
|
|
8
|
+
- fdc6d82: chore(deps): bump the telegraph-packages group across 1 directory with 9 updates
|
|
9
|
+
|
|
3
10
|
## 0.7.1
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./modules/core/context/KnockProvider.js"),c=require("./modules/core/hooks/useAuthenticatedKnockClient.js"),a=require("./modules/core/hooks/useStableOptions.js"),d=require("./modules/core/constants.js"),e=require("./modules/core/utils.js"),n=require("./modules/feed/context/KnockFeedProvider.js"),l=require("./modules/feed/hooks/useNotifications.js"),k=require("./modules/feed/hooks/useFeedSettings.js"),o=require("./modules/feed/hooks/useNotificationStore.js"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./modules/core/context/KnockProvider.js"),c=require("./modules/core/hooks/useAuthenticatedKnockClient.js"),a=require("./modules/core/hooks/useStableOptions.js"),d=require("./modules/core/constants.js"),e=require("./modules/core/utils.js"),n=require("./modules/feed/context/KnockFeedProvider.js"),l=require("./modules/feed/hooks/useNotifications.js"),k=require("./modules/feed/hooks/useFeedSettings.js"),o=require("./modules/feed/hooks/useNotificationStore.js"),r=require("./modules/guide/context/KnockGuideProvider.js"),K=require("./modules/guide/hooks/useGuide.js"),t=require("./modules/ms-teams/context/KnockMsTeamsProvider.js"),C=require("./modules/ms-teams/hooks/useMsTeamsConnectionStatus.js"),S=require("./modules/ms-teams/hooks/useMsTeamsAuth.js"),m=require("./modules/ms-teams/hooks/useMsTeamsTeams.js"),P=require("./modules/ms-teams/hooks/useMsTeamsChannels.js"),q=require("./modules/ms-teams/hooks/useConnectedMsTeamsChannels.js"),i=require("./modules/slack/context/KnockSlackProvider.js"),v=require("./modules/slack/hooks/useSlackConnectionStatus.js"),T=require("./modules/slack/hooks/useSlackChannels.js"),f=require("./modules/slack/hooks/useConnectedSlackChannels.js"),M=require("./modules/slack/hooks/useSlackAuth.js"),u=require("./modules/i18n/context/KnockI18nProvider.js"),h=require("./modules/i18n/hooks/useTranslations.js"),F=require("./modules/i18n/languages/index.js"),y=require("./modules/preferences/hooks/usePreferences.js");exports.KnockProvider=s.KnockProvider;exports.useKnockClient=s.useKnockClient;exports.useAuthenticatedKnockClient=c;exports.useStableOptions=a;exports.FilterStatus=d.FilterStatus;exports.feedProviderKey=e.feedProviderKey;exports.formatBadgeCount=e.formatBadgeCount;exports.formatTimestamp=e.formatTimestamp;exports.msTeamsProviderKey=e.msTeamsProviderKey;exports.renderNodeOrFallback=e.renderNodeOrFallback;exports.slackProviderKey=e.slackProviderKey;exports.toSentenceCase=e.toSentenceCase;exports.KnockFeedProvider=n.KnockFeedProvider;exports.useKnockFeed=n.useKnockFeed;exports.useNotifications=l;exports.useFeedSettings=k;exports.useCreateNotificationStore=o.useCreateNotificationStore;exports.useNotificationStore=o.default;exports.KnockGuideContext=r.KnockGuideContext;exports.KnockGuideProvider=r.KnockGuideProvider;exports.useGuide=K.useGuide;exports.KnockMsTeamsProvider=t.KnockMsTeamsProvider;exports.useKnockMsTeamsClient=t.useKnockMsTeamsClient;exports.useMsTeamsConnectionStatus=C;exports.useMsTeamsAuth=S;exports.useMsTeamsTeams=m;exports.useMsTeamsChannels=P;exports.useConnectedMsTeamsChannels=q;exports.KnockSlackProvider=i.KnockSlackProvider;exports.useKnockSlackClient=i.useKnockSlackClient;exports.useSlackConnectionStatus=v;exports.useSlackChannels=T;exports.useConnectedSlackChannels=f;exports.useSlackAuth=M;exports.I18nContext=u.I18nContext;exports.KnockI18nProvider=u.KnockI18nProvider;exports.useTranslations=h.useTranslations;exports.locales=F.locales;exports.usePreferences=y.usePreferences;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),d=require("swr"),P=require("../../core/context/KnockProvider.js");require("@knocklabs/client");require("fast-deep-equal");require("date-fns");const g=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},k=g(d),p=(e={})=>{const r=P.useKnockClient(),{preferenceSet:t,tenant:c}=e,u=["preferences",e.preferenceSet,e.tenant,r.userId],{data:a,isLoading:l,isValidating:o,mutate:s}=k.default(r.userId?u:null,()=>r.user.getPreferences({preferenceSet:t,tenant:c})),f=n.useCallback(i=>{s(r.user.setPreferences(i,{preferenceSet:t}),{revalidate:!1})},[s,r.user,t]);return{getAllPreferences:n.useCallback(async()=>await r.user.getAllPreferences(),[r.user]),setPreferences:f,preferences:a,isLoading:l,isValidating:o}};exports.usePreferences=p;
|
|
2
|
+
//# sourceMappingURL=usePreferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePreferences.js","sources":["../../../../../src/modules/preferences/hooks/usePreferences.ts"],"sourcesContent":["import type {\n GetPreferencesOptions,\n PreferenceSet,\n SetPreferencesProperties,\n} from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\nimport useSWR, { type SWRResponse } from \"swr\";\n\nimport { useKnockClient } from \"../../core\";\n\ntype UsePreferencesReturn = {\n preferences: PreferenceSet | undefined;\n setPreferences: (setPreferencesProperties: SetPreferencesProperties) => void;\n getAllPreferences: ReturnType<\n typeof useKnockClient\n >[\"user\"][\"getAllPreferences\"];\n isLoading: SWRResponse[\"isLoading\"];\n isValidating: SWRResponse[\"isValidating\"];\n};\n\nconst usePreferences = (\n options: GetPreferencesOptions = {},\n): UsePreferencesReturn => {\n const knock = useKnockClient();\n\n const { preferenceSet, tenant } = options;\n\n const CACHE_KEY = [\n \"preferences\",\n options.preferenceSet,\n options.tenant,\n knock.userId,\n ];\n\n const {\n data: preferences,\n isLoading,\n isValidating,\n mutate,\n } = useSWR(knock.userId ? CACHE_KEY : null, () => {\n return knock.user.getPreferences({ preferenceSet, tenant });\n });\n\n const setPreferences = useCallback(\n (preferenceSetProperties: SetPreferencesProperties) => {\n mutate(\n knock.user.setPreferences(preferenceSetProperties, { preferenceSet }),\n {\n revalidate: false,\n },\n );\n },\n [mutate, knock.user, preferenceSet],\n );\n\n const getAllPreferences = useCallback(async () => {\n return await knock.user.getAllPreferences();\n }, [knock.user]);\n\n return {\n getAllPreferences,\n setPreferences,\n preferences,\n isLoading,\n isValidating,\n };\n};\n\nexport { usePreferences };\n"],"names":["usePreferences","options","knock","useKnockClient","preferenceSet","tenant","CACHE_KEY","userId","data","preferences","isLoading","isValidating","mutate","useSWR","user","getPreferences","setPreferences","useCallback","preferenceSetProperties","revalidate","getAllPreferences"],"mappings":"4TAoBMA,EAAiBA,CACrBC,EAAiC,KACR,CACzB,MAAMC,EAAQC,EAAAA,eAAe,EAEvB,CAAEC,cAAAA,EAAeC,OAAAA,CAAAA,EAAWJ,EAE5BK,EAAY,CAChB,cACAL,EAAQG,cACRH,EAAQI,OACRH,EAAMK,MAAM,EAGR,CACJC,KAAMC,EACNC,UAAAA,EACAC,aAAAA,EACAC,OAAAA,GACEC,EAAOX,QAAAA,EAAMK,OAASD,EAAY,KAAM,IACnCJ,EAAMY,KAAKC,eAAe,CAAEX,cAAAA,EAAeC,OAAAA,CAAAA,CAAQ,CAC3D,EAEKW,EAAiBC,cACpBC,GAAsD,CAEnDhB,EAAAA,EAAMY,KAAKE,eAAeE,EAAyB,CAAEd,cAAAA,CAAAA,CAAe,EACpE,CACEe,WAAY,EAAA,CAEhB,GAEF,CAACP,EAAQV,EAAMY,KAAMV,CAAa,CACpC,EAMO,MAAA,CACLgB,kBALwBH,EAAAA,YAAY,SAC7B,MAAMf,EAAMY,KAAKM,kBAAkB,EACzC,CAAClB,EAAMY,IAAI,CAAC,EAIbE,eAAAA,EACAP,YAAAA,EACAC,UAAAA,EACAC,aAAAA,CACF,CACF"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { default as f } from "./modules/core/hooks/useStableOptions.mjs";
|
|
|
4
4
|
import { FilterStatus as m } from "./modules/core/constants.mjs";
|
|
5
5
|
import { feedProviderKey as l, formatBadgeCount as i, formatTimestamp as c, msTeamsProviderKey as p, renderNodeOrFallback as x, slackProviderKey as k, toSentenceCase as C } from "./modules/core/utils.mjs";
|
|
6
6
|
import { KnockFeedProvider as S, useKnockFeed as T } from "./modules/feed/context/KnockFeedProvider.mjs";
|
|
7
|
-
import { default as
|
|
7
|
+
import { default as v } from "./modules/feed/hooks/useNotifications.mjs";
|
|
8
8
|
import { default as M } from "./modules/feed/hooks/useFeedSettings.mjs";
|
|
9
9
|
import { useCreateNotificationStore as N, default as y } from "./modules/feed/hooks/useNotificationStore.mjs";
|
|
10
10
|
import { KnockGuideContext as G, KnockGuideProvider as b } from "./modules/guide/context/KnockGuideProvider.mjs";
|
|
@@ -23,6 +23,7 @@ import { default as te } from "./modules/slack/hooks/useSlackAuth.mjs";
|
|
|
23
23
|
import { I18nContext as se, KnockI18nProvider as ae } from "./modules/i18n/context/KnockI18nProvider.mjs";
|
|
24
24
|
import { useTranslations as fe } from "./modules/i18n/hooks/useTranslations.mjs";
|
|
25
25
|
import { locales as me } from "./modules/i18n/languages/index.mjs";
|
|
26
|
+
import { usePreferences as le } from "./modules/preferences/hooks/usePreferences.mjs";
|
|
26
27
|
export {
|
|
27
28
|
m as FilterStatus,
|
|
28
29
|
se as I18nContext,
|
|
@@ -56,7 +57,8 @@ export {
|
|
|
56
57
|
w as useMsTeamsConnectionStatus,
|
|
57
58
|
H as useMsTeamsTeams,
|
|
58
59
|
y as useNotificationStore,
|
|
59
|
-
|
|
60
|
+
v as useNotifications,
|
|
61
|
+
le as usePreferences,
|
|
60
62
|
te as useSlackAuth,
|
|
61
63
|
_ as useSlackChannels,
|
|
62
64
|
Y as useSlackConnectionStatus,
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useCallback as n } from "react";
|
|
2
|
+
import m from "swr";
|
|
3
|
+
import { useKnockClient as p } from "../../core/context/KnockProvider.mjs";
|
|
4
|
+
import "@knocklabs/client";
|
|
5
|
+
import "fast-deep-equal";
|
|
6
|
+
import "date-fns";
|
|
7
|
+
const E = (r = {}) => {
|
|
8
|
+
const e = p(), {
|
|
9
|
+
preferenceSet: t,
|
|
10
|
+
tenant: c
|
|
11
|
+
} = r, a = ["preferences", r.preferenceSet, r.tenant, e.userId], {
|
|
12
|
+
data: o,
|
|
13
|
+
isLoading: u,
|
|
14
|
+
isValidating: f,
|
|
15
|
+
mutate: s
|
|
16
|
+
} = m(e.userId ? a : null, () => e.user.getPreferences({
|
|
17
|
+
preferenceSet: t,
|
|
18
|
+
tenant: c
|
|
19
|
+
})), l = n((i) => {
|
|
20
|
+
s(e.user.setPreferences(i, {
|
|
21
|
+
preferenceSet: t
|
|
22
|
+
}), {
|
|
23
|
+
revalidate: !1
|
|
24
|
+
});
|
|
25
|
+
}, [s, e.user, t]);
|
|
26
|
+
return {
|
|
27
|
+
getAllPreferences: n(async () => await e.user.getAllPreferences(), [e.user]),
|
|
28
|
+
setPreferences: l,
|
|
29
|
+
preferences: o,
|
|
30
|
+
isLoading: u,
|
|
31
|
+
isValidating: f
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
export {
|
|
35
|
+
E as usePreferences
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=usePreferences.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePreferences.mjs","sources":["../../../../../src/modules/preferences/hooks/usePreferences.ts"],"sourcesContent":["import type {\n GetPreferencesOptions,\n PreferenceSet,\n SetPreferencesProperties,\n} from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\nimport useSWR, { type SWRResponse } from \"swr\";\n\nimport { useKnockClient } from \"../../core\";\n\ntype UsePreferencesReturn = {\n preferences: PreferenceSet | undefined;\n setPreferences: (setPreferencesProperties: SetPreferencesProperties) => void;\n getAllPreferences: ReturnType<\n typeof useKnockClient\n >[\"user\"][\"getAllPreferences\"];\n isLoading: SWRResponse[\"isLoading\"];\n isValidating: SWRResponse[\"isValidating\"];\n};\n\nconst usePreferences = (\n options: GetPreferencesOptions = {},\n): UsePreferencesReturn => {\n const knock = useKnockClient();\n\n const { preferenceSet, tenant } = options;\n\n const CACHE_KEY = [\n \"preferences\",\n options.preferenceSet,\n options.tenant,\n knock.userId,\n ];\n\n const {\n data: preferences,\n isLoading,\n isValidating,\n mutate,\n } = useSWR(knock.userId ? CACHE_KEY : null, () => {\n return knock.user.getPreferences({ preferenceSet, tenant });\n });\n\n const setPreferences = useCallback(\n (preferenceSetProperties: SetPreferencesProperties) => {\n mutate(\n knock.user.setPreferences(preferenceSetProperties, { preferenceSet }),\n {\n revalidate: false,\n },\n );\n },\n [mutate, knock.user, preferenceSet],\n );\n\n const getAllPreferences = useCallback(async () => {\n return await knock.user.getAllPreferences();\n }, [knock.user]);\n\n return {\n getAllPreferences,\n setPreferences,\n preferences,\n isLoading,\n isValidating,\n };\n};\n\nexport { usePreferences };\n"],"names":["usePreferences","options","knock","useKnockClient","preferenceSet","tenant","CACHE_KEY","userId","data","preferences","isLoading","isValidating","mutate","useSWR","user","getPreferences","setPreferences","useCallback","preferenceSetProperties","revalidate","getAllPreferences"],"mappings":";;;;;;AAoBA,MAAMA,IAAiBA,CACrBC,IAAiC,OACR;AACzB,QAAMC,IAAQC,EAAe,GAEvB;AAAA,IAAEC,eAAAA;AAAAA,IAAeC,QAAAA;AAAAA,EAAAA,IAAWJ,GAE5BK,IAAY,CAChB,eACAL,EAAQG,eACRH,EAAQI,QACRH,EAAMK,MAAM,GAGR;AAAA,IACJC,MAAMC;AAAAA,IACNC,WAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAC,QAAAA;AAAAA,MACEC,EAAOX,EAAMK,SAASD,IAAY,MAAM,MACnCJ,EAAMY,KAAKC,eAAe;AAAA,IAAEX,eAAAA;AAAAA,IAAeC,QAAAA;AAAAA,EAAAA,CAAQ,CAC3D,GAEKW,IAAiBC,EACrB,CAACC,MAAsD;AAEnDhB,IAAAA,EAAAA,EAAMY,KAAKE,eAAeE,GAAyB;AAAA,MAAEd,eAAAA;AAAAA,IAAAA,CAAe,GACpE;AAAA,MACEe,YAAY;AAAA,IAAA,CAEhB;AAAA,KAEF,CAACP,GAAQV,EAAMY,MAAMV,CAAa,CACpC;AAMO,SAAA;AAAA,IACLgB,mBALwBH,EAAY,YAC7B,MAAMf,EAAMY,KAAKM,kBAAkB,GACzC,CAAClB,EAAMY,IAAI,CAAC;AAAA,IAIbE,gBAAAA;AAAAA,IACAP,aAAAA;AAAAA,IACAC,WAAAA;AAAAA,IACAC,cAAAA;AAAAA,EACF;AACF;"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -5,4 +5,5 @@ export { type MsTeamsChannelQueryOptions, type MsTeamsTeamQueryOptions, KnockMsT
|
|
|
5
5
|
export { KnockSlackProvider, type ContainerObject, type KnockSlackProviderProps, type KnockSlackProviderState, type SlackChannelQueryOptions, useConnectedSlackChannels, useKnockSlackClient, useSlackAuth, useSlackChannels, useSlackConnectionStatus, } from './modules/slack';
|
|
6
6
|
export { I18nContext, KnockI18nProvider, locales, type I18nContent, type KnockI18nProviderProps, type Translations, useTranslations, } from './modules/i18n';
|
|
7
7
|
export { type RecipientObject } from './interfaces';
|
|
8
|
+
export { usePreferences } from './modules/preferences';
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,0BAA0B,EAC1B,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,0BAA0B,EAC1B,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/preferences/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GetPreferencesOptions, PreferenceSet, SetPreferencesProperties } from '@knocklabs/client';
|
|
2
|
+
import { SWRResponse } from 'swr';
|
|
3
|
+
import { useKnockClient } from '../../core';
|
|
4
|
+
type UsePreferencesReturn = {
|
|
5
|
+
preferences: PreferenceSet | undefined;
|
|
6
|
+
setPreferences: (setPreferencesProperties: SetPreferencesProperties) => void;
|
|
7
|
+
getAllPreferences: ReturnType<typeof useKnockClient>["user"]["getAllPreferences"];
|
|
8
|
+
isLoading: SWRResponse["isLoading"];
|
|
9
|
+
isValidating: SWRResponse["isValidating"];
|
|
10
|
+
};
|
|
11
|
+
declare const usePreferences: (options?: GetPreferencesOptions) => UsePreferencesReturn;
|
|
12
|
+
export { usePreferences };
|
|
13
|
+
//# sourceMappingURL=usePreferences.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePreferences.d.ts","sourceRoot":"","sources":["../../../../../src/modules/preferences/hooks/usePreferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,wBAAwB,EACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAe,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,KAAK,oBAAoB,GAAG;IAC1B,WAAW,EAAE,aAAa,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,CAAC,wBAAwB,EAAE,wBAAwB,KAAK,IAAI,CAAC;IAC7E,iBAAiB,EAAE,UAAU,CAC3B,OAAO,cAAc,CACtB,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACpC,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,CAAC;CAC3C,CAAC;AAEF,QAAA,MAAM,cAAc,GAClB,UAAS,qBAA0B,KAClC,oBA4CF,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/preferences/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@knocklabs/react-core",
|
|
3
3
|
"description": "A set of React components to build notification experiences powered by Knock",
|
|
4
4
|
"author": "@knocklabs",
|
|
5
|
-
"version": "0.7.
|
|
5
|
+
"version": "0.7.2",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/cjs/index.js",
|
|
8
8
|
"module": "dist/esm/index.mjs",
|
package/src/index.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { usePreferences } from "./usePreferences";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
GetPreferencesOptions,
|
|
3
|
+
PreferenceSet,
|
|
4
|
+
SetPreferencesProperties,
|
|
5
|
+
} from "@knocklabs/client";
|
|
6
|
+
import { useCallback } from "react";
|
|
7
|
+
import useSWR, { type SWRResponse } from "swr";
|
|
8
|
+
|
|
9
|
+
import { useKnockClient } from "../../core";
|
|
10
|
+
|
|
11
|
+
type UsePreferencesReturn = {
|
|
12
|
+
preferences: PreferenceSet | undefined;
|
|
13
|
+
setPreferences: (setPreferencesProperties: SetPreferencesProperties) => void;
|
|
14
|
+
getAllPreferences: ReturnType<
|
|
15
|
+
typeof useKnockClient
|
|
16
|
+
>["user"]["getAllPreferences"];
|
|
17
|
+
isLoading: SWRResponse["isLoading"];
|
|
18
|
+
isValidating: SWRResponse["isValidating"];
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const usePreferences = (
|
|
22
|
+
options: GetPreferencesOptions = {},
|
|
23
|
+
): UsePreferencesReturn => {
|
|
24
|
+
const knock = useKnockClient();
|
|
25
|
+
|
|
26
|
+
const { preferenceSet, tenant } = options;
|
|
27
|
+
|
|
28
|
+
const CACHE_KEY = [
|
|
29
|
+
"preferences",
|
|
30
|
+
options.preferenceSet,
|
|
31
|
+
options.tenant,
|
|
32
|
+
knock.userId,
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
const {
|
|
36
|
+
data: preferences,
|
|
37
|
+
isLoading,
|
|
38
|
+
isValidating,
|
|
39
|
+
mutate,
|
|
40
|
+
} = useSWR(knock.userId ? CACHE_KEY : null, () => {
|
|
41
|
+
return knock.user.getPreferences({ preferenceSet, tenant });
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
const setPreferences = useCallback(
|
|
45
|
+
(preferenceSetProperties: SetPreferencesProperties) => {
|
|
46
|
+
mutate(
|
|
47
|
+
knock.user.setPreferences(preferenceSetProperties, { preferenceSet }),
|
|
48
|
+
{
|
|
49
|
+
revalidate: false,
|
|
50
|
+
},
|
|
51
|
+
);
|
|
52
|
+
},
|
|
53
|
+
[mutate, knock.user, preferenceSet],
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const getAllPreferences = useCallback(async () => {
|
|
57
|
+
return await knock.user.getAllPreferences();
|
|
58
|
+
}, [knock.user]);
|
|
59
|
+
|
|
60
|
+
return {
|
|
61
|
+
getAllPreferences,
|
|
62
|
+
setPreferences,
|
|
63
|
+
preferences,
|
|
64
|
+
isLoading,
|
|
65
|
+
isValidating,
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export { usePreferences };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { usePreferences } from "./hooks";
|