mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
slack integration reinstall
This commit is contained in:
@@ -21,7 +21,7 @@ import {
|
||||
type TSlackServiceFactoryDep = {
|
||||
slackIntegrationDAL: Pick<
|
||||
TSlackIntegrationDALFactory,
|
||||
"create" | "findOne" | "findById" | "updateById" | "deleteById"
|
||||
"create" | "findOne" | "findById" | "updateById" | "deleteById" | "transaction"
|
||||
>;
|
||||
permissionService: Pick<TPermissionServiceFactory, "getProjectPermission">;
|
||||
projectDAL: Pick<TProjectDALFactory, "findById">;
|
||||
@@ -62,15 +62,43 @@ export const slackServiceFactory = ({
|
||||
plainText: Buffer.from(botAccessToken, "utf8")
|
||||
});
|
||||
|
||||
await slackIntegrationDAL.create({
|
||||
projectId,
|
||||
teamId,
|
||||
teamName,
|
||||
slackUserId,
|
||||
slackAppId,
|
||||
slackBotId,
|
||||
slackBotUserId,
|
||||
encryptedBotAccessToken
|
||||
await slackIntegrationDAL.transaction(async (tx) => {
|
||||
const slackIntegration = await slackIntegrationDAL.findOne(
|
||||
{
|
||||
projectId
|
||||
},
|
||||
tx
|
||||
);
|
||||
|
||||
if (slackIntegration) {
|
||||
return slackIntegrationDAL.updateById(
|
||||
slackIntegration.id,
|
||||
{
|
||||
teamId,
|
||||
teamName,
|
||||
slackUserId,
|
||||
slackAppId,
|
||||
slackBotId,
|
||||
slackBotUserId,
|
||||
encryptedBotAccessToken
|
||||
},
|
||||
tx
|
||||
);
|
||||
}
|
||||
|
||||
return slackIntegrationDAL.create(
|
||||
{
|
||||
projectId,
|
||||
teamId,
|
||||
teamName,
|
||||
slackUserId,
|
||||
slackAppId,
|
||||
slackBotId,
|
||||
slackBotUserId,
|
||||
encryptedBotAccessToken
|
||||
},
|
||||
tx
|
||||
);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
@@ -59,6 +59,7 @@ export const NotificationTab = () => {
|
||||
|
||||
const router = useRouter();
|
||||
const [isConnectToSlackLoading, setIsConnectToSlackLoading] = useToggle(false);
|
||||
const [isReinstallLoading, setIsReinstallLoading] = useToggle(false);
|
||||
const secretRequestNotifState = watch("isSecretRequestNotificationEnabled");
|
||||
const accessRequestNotifState = watch("isAccessRequestNotificationEnabled");
|
||||
|
||||
@@ -95,6 +96,13 @@ export const NotificationTab = () => {
|
||||
});
|
||||
};
|
||||
|
||||
const triggerSlackInstall = async () => {
|
||||
const slackInstallUrl = await fetchSlackInstallUrl(currentWorkspace?.id);
|
||||
if (slackInstallUrl) {
|
||||
router.push(slackInstallUrl);
|
||||
}
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (slackIntegration) {
|
||||
setValue(
|
||||
@@ -131,10 +139,7 @@ export const NotificationTab = () => {
|
||||
isLoading={isConnectToSlackLoading}
|
||||
onClick={async () => {
|
||||
setIsConnectToSlackLoading.on();
|
||||
const slackInstallUrl = await fetchSlackInstallUrl(currentWorkspace?.id);
|
||||
if (slackInstallUrl) {
|
||||
router.push(slackInstallUrl);
|
||||
}
|
||||
await triggerSlackInstall();
|
||||
}}
|
||||
>
|
||||
Connect to Slack
|
||||
@@ -144,8 +149,16 @@ export const NotificationTab = () => {
|
||||
<form onSubmit={handleSubmit(handleIntegrationSave)}>
|
||||
<div>Connected Slack workspace: {slackIntegration.teamName}</div>
|
||||
<div className="mt-2 mb-6">
|
||||
<Button colorSchema="secondary" size="xs">
|
||||
Reinstall integration
|
||||
<Button
|
||||
colorSchema="secondary"
|
||||
size="xs"
|
||||
isLoading={isReinstallLoading}
|
||||
onClick={async () => {
|
||||
setIsReinstallLoading.on();
|
||||
await triggerSlackInstall();
|
||||
}}
|
||||
>
|
||||
Reinstall
|
||||
</Button>
|
||||
<Button
|
||||
colorSchema="secondary"
|
||||
@@ -156,6 +169,7 @@ export const NotificationTab = () => {
|
||||
Delete
|
||||
</Button>
|
||||
</div>
|
||||
<h2 className="mb-2 flex-1 text-lg font-semibold text-mineshaft-100">Events</h2>
|
||||
<Controller
|
||||
control={control}
|
||||
name="isSecretRequestNotificationEnabled"
|
||||
|
||||
Reference in New Issue
Block a user