@knocklabs/react-core 0.2.24 → 0.2.25
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 +6 -0
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +1 -1
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +19 -19
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +1 -1
- package/dist/types/modules/slack/hooks/useSlackAuth.d.ts +1 -1
- package/dist/types/modules/slack/hooks/useSlackAuth.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/modules/slack/hooks/useSlackAuth.ts +8 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const
|
|
1
|
+
"use strict";const S=require("../context/KnockSlackProvider.js"),k=require("react");require("../../i18n/context/KnockI18nProvider.js");require("swr/infinite");const _=require("../../core/context/KnockProvider.js"),C=require("@knocklabs/client");require("zustand/shallow");require("date-fns");const d="https://slack.com/oauth/v2/authorize",l=["chat:write","chat:write.public","channels:read","groups:read"];function A(s,a,o){const e=_.useKnockClient(),{setConnectionStatus:c,knockSlackChannelId:n,tenant:r,setActionLabel:i}=S.useKnockSlackClient(),u=o&&o.length>0?Array.from(new Set(l.concat(o))):l,h=k.useCallback(async()=>{i(null),c("disconnecting");try{const t=await e.slack.revokeAccessToken({tenant:r,knockChannelId:n});c(t==="ok"?"disconnected":"error")}catch{c("error")}},[c,e.slack,r,n,i]);return{buildSlackAuthUrl:k.useCallback(()=>{const t={state:JSON.stringify({redirect_url:a,access_token_object:{object_id:r,collection:C.TENANT_OBJECT_COLLECTION},channel_id:n,public_key:e.apiKey,user_token:e.userToken}),client_id:s,scope:u.join(",")};return`${d}?${new URLSearchParams(t)}`},[a,r,n,e.apiKey,e.userToken,s,u]),disconnectFromSlack:h}}module.exports=A;
|
|
2
2
|
//# sourceMappingURL=useSlackAuth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlackAuth.js","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope:
|
|
1
|
+
{"version":3,"file":"useSlackAuth.js","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n additionalScopes?: string[],\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const combinedScopes =\n additionalScopes && additionalScopes.length > 0\n ? Array.from(new Set(DEFAULT_SLACK_SCOPES.concat(additionalScopes)))\n : DEFAULT_SLACK_SCOPES;\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: combinedScopes.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenant,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n combinedScopes,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","useSlackAuth","slackClientId","redirectUrl","additionalScopes","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenant","setActionLabel","useKnockSlackClient","combinedScopes","length","Array","from","Set","concat","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":"oSAMA,MAAMA,EAAsB,uCACtBC,EAAuB,CAC3B,aACA,oBACA,gBACA,aAAa,EAQf,SAASC,EACPC,EACAC,EACAC,EACoB,CACpB,MAAMC,EAAQC,EAAAA,iBACR,CAAEC,oBAAAA,EAAqBC,oBAAAA,EAAqBC,OAAAA,EAAQC,eAAAA,GACxDC,EAAoB,oBAAA,EAEhBC,EACJR,GAAoBA,EAAiBS,OAAS,EAC1CC,MAAMC,KAAK,IAAIC,IAAIhB,EAAqBiB,OAAOb,CAAgB,CAAC,CAAC,EACjEJ,EAEAkB,EAAsBC,EAAAA,YAAY,SAAY,CAClDT,EAAe,IAAI,EACnBH,EAAoB,eAAe,EAC/B,GAAA,CACF,MAAMa,EAAS,MAAMf,EAAMgB,MAAMC,kBAAkB,CACjDb,OAAAA,EACAc,eAAgBf,CAAAA,CACjB,EAGCD,EADEa,IAAW,KACO,eAEA,OAFc,OAItB,CACdb,EAAoB,OAAO,CAC7B,CAAA,EACC,CACDA,EACAF,EAAMgB,MACNZ,EACAD,EACAE,CAAc,CACf,EA4BM,MAAA,CACLc,kBA3BwBL,EAAAA,YAAY,IAAM,CAC1C,MAAMM,EAAY,CAChBC,MAAOC,KAAKC,UAAU,CACpBC,aAAc1B,EACd2B,oBAAqB,CACnBC,UAAWtB,EACXuB,WAAYC,EAAAA,wBACd,EACAC,WAAY1B,EACZ2B,WAAY9B,EAAM+B,OAClBC,WAAYhC,EAAMiC,SAAAA,CACnB,EACDC,UAAWrC,EACXsC,MAAO5B,EAAe6B,KAAK,GAAG,CAAA,EAEhC,MAAO,GAAG1C,CAAmB,IAAI,IAAI2C,gBAAgBjB,CAAS,CAAC,EACjE,EAAG,CACDtB,EACAM,EACAD,EACAH,EAAM+B,OACN/B,EAAMiC,UACNpC,EACAU,CAAc,CACf,EAICM,oBAAAA,CAAAA,CAEJ"}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { useKnockSlackClient as
|
|
2
|
-
import { useCallback as
|
|
1
|
+
import { useKnockSlackClient as h } from "../context/KnockSlackProvider.mjs";
|
|
2
|
+
import { useCallback as k } from "react";
|
|
3
3
|
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
4
4
|
import "swr/infinite";
|
|
5
|
-
import { useKnockClient as
|
|
6
|
-
import { TENANT_OBJECT_COLLECTION as
|
|
5
|
+
import { useKnockClient as p } from "../../core/context/KnockProvider.mjs";
|
|
6
|
+
import { TENANT_OBJECT_COLLECTION as _ } from "@knocklabs/client";
|
|
7
7
|
import "zustand/shallow";
|
|
8
8
|
import "date-fns";
|
|
9
|
-
const
|
|
10
|
-
function
|
|
11
|
-
const e =
|
|
9
|
+
const S = "https://slack.com/oauth/v2/authorize", u = ["chat:write", "chat:write.public", "channels:read", "groups:read"];
|
|
10
|
+
function E(s, a, r) {
|
|
11
|
+
const e = p(), {
|
|
12
12
|
setConnectionStatus: t,
|
|
13
13
|
knockSlackChannelId: o,
|
|
14
14
|
tenant: c,
|
|
15
|
-
setActionLabel:
|
|
16
|
-
} =
|
|
17
|
-
|
|
15
|
+
setActionLabel: i
|
|
16
|
+
} = h(), l = r && r.length > 0 ? Array.from(new Set(u.concat(r))) : u, m = k(async () => {
|
|
17
|
+
i(null), t("disconnecting");
|
|
18
18
|
try {
|
|
19
19
|
const n = await e.slack.revokeAccessToken({
|
|
20
20
|
tenant: c,
|
|
@@ -24,29 +24,29 @@ function y(r, a) {
|
|
|
24
24
|
} catch {
|
|
25
25
|
t("error");
|
|
26
26
|
}
|
|
27
|
-
}, [t, e.slack, c, o,
|
|
27
|
+
}, [t, e.slack, c, o, i]);
|
|
28
28
|
return {
|
|
29
|
-
buildSlackAuthUrl:
|
|
29
|
+
buildSlackAuthUrl: k(() => {
|
|
30
30
|
const n = {
|
|
31
31
|
state: JSON.stringify({
|
|
32
32
|
redirect_url: a,
|
|
33
33
|
access_token_object: {
|
|
34
34
|
object_id: c,
|
|
35
|
-
collection:
|
|
35
|
+
collection: _
|
|
36
36
|
},
|
|
37
37
|
channel_id: o,
|
|
38
38
|
public_key: e.apiKey,
|
|
39
39
|
user_token: e.userToken
|
|
40
40
|
}),
|
|
41
|
-
client_id:
|
|
42
|
-
scope:
|
|
41
|
+
client_id: s,
|
|
42
|
+
scope: l.join(",")
|
|
43
43
|
};
|
|
44
|
-
return `${
|
|
45
|
-
}, [a, c, o, e.apiKey, e.userToken,
|
|
46
|
-
disconnectFromSlack:
|
|
44
|
+
return `${S}?${new URLSearchParams(n)}`;
|
|
45
|
+
}, [a, c, o, e.apiKey, e.userToken, s, l]),
|
|
46
|
+
disconnectFromSlack: m
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
export {
|
|
50
|
-
|
|
50
|
+
E as default
|
|
51
51
|
};
|
|
52
52
|
//# sourceMappingURL=useSlackAuth.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope:
|
|
1
|
+
{"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n additionalScopes?: string[],\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const combinedScopes =\n additionalScopes && additionalScopes.length > 0\n ? Array.from(new Set(DEFAULT_SLACK_SCOPES.concat(additionalScopes)))\n : DEFAULT_SLACK_SCOPES;\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: combinedScopes.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenant,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n combinedScopes,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","useSlackAuth","slackClientId","redirectUrl","additionalScopes","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenant","setActionLabel","useKnockSlackClient","combinedScopes","length","Array","from","Set","concat","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":";;;;;;;;AAMA,MAAMA,IAAsB,wCACtBC,IAAuB,CAC3B,cACA,qBACA,iBACA,aAAa;AAQf,SAASC,EACPC,GACAC,GACAC,GACoB;AACpB,QAAMC,IAAQC,KACR;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,qBAAAA;AAAAA,IAAqBC,QAAAA;AAAAA,IAAQC,gBAAAA;AAAAA,MACxDC,EAAoB,GAEhBC,IACJR,KAAoBA,EAAiBS,SAAS,IAC1CC,MAAMC,KAAK,IAAIC,IAAIhB,EAAqBiB,OAAOb,CAAgB,CAAC,CAAC,IACjEJ,GAEAkB,IAAsBC,EAAY,YAAY;AAClDT,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAMa,IAAS,MAAMf,EAAMgB,MAAMC,kBAAkB;AAAA,QACjDb,QAAAA;AAAAA,QACAc,gBAAgBf;AAAAA,MAAAA,CACjB;AAED,MACED,EADEa,MAAW,OACO,iBAEA,OAFc;AAAA,YAItB;AACdb,MAAAA,EAAoB,OAAO;AAAA,IAC7B;AAAA,EAAA,GACC,CACDA,GACAF,EAAMgB,OACNZ,GACAD,GACAE,CAAc,CACf;AA4BM,SAAA;AAAA,IACLc,mBA3BwBL,EAAY,MAAM;AAC1C,YAAMM,IAAY;AAAA,QAChBC,OAAOC,KAAKC,UAAU;AAAA,UACpBC,cAAc1B;AAAAA,UACd2B,qBAAqB;AAAA,YACnBC,WAAWtB;AAAAA,YACXuB,YAAYC;AAAAA,UACd;AAAA,UACAC,YAAY1B;AAAAA,UACZ2B,YAAY9B,EAAM+B;AAAAA,UAClBC,YAAYhC,EAAMiC;AAAAA,QAAAA,CACnB;AAAA,QACDC,WAAWrC;AAAAA,QACXsC,OAAO5B,EAAe6B,KAAK,GAAG;AAAA,MAAA;AAEhC,aAAO,GAAG1C,CAAmB,IAAI,IAAI2C,gBAAgBjB,CAAS,CAAC;AAAA,IACjE,GAAG,CACDtB,GACAM,GACAD,GACAH,EAAM+B,QACN/B,EAAMiC,WACNpC,GACAU,CAAc,CACf;AAAA,IAICM,qBAAAA;AAAAA,EAAAA;AAEJ;"}
|
|
@@ -2,6 +2,6 @@ type UseSlackAuthOutput = {
|
|
|
2
2
|
buildSlackAuthUrl: () => string;
|
|
3
3
|
disconnectFromSlack: () => void;
|
|
4
4
|
};
|
|
5
|
-
declare function useSlackAuth(slackClientId: string, redirectUrl?: string): UseSlackAuthOutput;
|
|
5
|
+
declare function useSlackAuth(slackClientId: string, redirectUrl?: string, additionalScopes?: string[]): UseSlackAuthOutput;
|
|
6
6
|
export default useSlackAuth;
|
|
7
7
|
//# sourceMappingURL=useSlackAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlackAuth.d.ts","sourceRoot":"","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"names":[],"mappings":"AAcA,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AAEF,iBAAS,YAAY,CACnB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useSlackAuth.d.ts","sourceRoot":"","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"names":[],"mappings":"AAcA,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,EAAE,MAAM,MAAM,CAAC;IAChC,mBAAmB,EAAE,MAAM,IAAI,CAAC;CACjC,CAAC;AAEF,iBAAS,YAAY,CACnB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,MAAM,EACpB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,kBAAkB,CAiEpB;AAED,eAAe,YAAY,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.2.
|
|
5
|
+
"version": "0.2.25",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/cjs/index.js",
|
|
8
8
|
"module": "dist/esm/index.mjs",
|
|
@@ -50,16 +50,16 @@
|
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"@knocklabs/client": "^0.10.13",
|
|
53
|
-
"date-fns": "^
|
|
53
|
+
"date-fns": "^4.0.0",
|
|
54
54
|
"swr": "^2.2.5",
|
|
55
55
|
"zustand": "^3.7.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@testing-library/react": "^14.2.0",
|
|
59
|
-
"@types/react": "^18.
|
|
59
|
+
"@types/react": "^18.3.6",
|
|
60
60
|
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
|
61
|
-
"@typescript-eslint/parser": "^
|
|
62
|
-
"@vitejs/plugin-react": "^4.2
|
|
61
|
+
"@typescript-eslint/parser": "^8.8.0",
|
|
62
|
+
"@vitejs/plugin-react": "^4.3.2",
|
|
63
63
|
"babel-plugin-react-require": "^4.0.3",
|
|
64
64
|
"eslint": "^8.56.0",
|
|
65
65
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"react": "^18.2.0",
|
|
69
69
|
"rimraf": "^6.0.1",
|
|
70
70
|
"rollup-plugin-execute": "^1.1.1",
|
|
71
|
-
"typescript": "^5.
|
|
71
|
+
"typescript": "^5.6.2",
|
|
72
72
|
"vite": "^5.0.0",
|
|
73
73
|
"vite-plugin-dts": "^3.6.3",
|
|
74
74
|
"vite-plugin-no-bundle": "^4.0.0",
|
|
@@ -20,11 +20,17 @@ type UseSlackAuthOutput = {
|
|
|
20
20
|
function useSlackAuth(
|
|
21
21
|
slackClientId: string,
|
|
22
22
|
redirectUrl?: string,
|
|
23
|
+
additionalScopes?: string[],
|
|
23
24
|
): UseSlackAuthOutput {
|
|
24
25
|
const knock = useKnockClient();
|
|
25
26
|
const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =
|
|
26
27
|
useKnockSlackClient();
|
|
27
28
|
|
|
29
|
+
const combinedScopes =
|
|
30
|
+
additionalScopes && additionalScopes.length > 0
|
|
31
|
+
? Array.from(new Set(DEFAULT_SLACK_SCOPES.concat(additionalScopes)))
|
|
32
|
+
: DEFAULT_SLACK_SCOPES;
|
|
33
|
+
|
|
28
34
|
const disconnectFromSlack = useCallback(async () => {
|
|
29
35
|
setActionLabel(null);
|
|
30
36
|
setConnectionStatus("disconnecting");
|
|
@@ -63,7 +69,7 @@ function useSlackAuth(
|
|
|
63
69
|
user_token: knock.userToken,
|
|
64
70
|
}),
|
|
65
71
|
client_id: slackClientId,
|
|
66
|
-
scope:
|
|
72
|
+
scope: combinedScopes.join(","),
|
|
67
73
|
};
|
|
68
74
|
return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;
|
|
69
75
|
}, [
|
|
@@ -73,6 +79,7 @@ function useSlackAuth(
|
|
|
73
79
|
knock.apiKey,
|
|
74
80
|
knock.userToken,
|
|
75
81
|
slackClientId,
|
|
82
|
+
combinedScopes,
|
|
76
83
|
]);
|
|
77
84
|
|
|
78
85
|
return {
|