mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
1f097b0fdd
* chore: resolve no-explicit-any lint warnings in plugins Replaces uses of `any` in the plugins directory with concrete types, `unknown`, or structured type assertions, addressing the remaining typescript-eslint(no-explicit-any) warnings flagged by oxlint. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> * chore: address review feedback in GitLabIssueProvider Drop trailing semicolon from log string and add early return in `destroyNamespace` when neither `user_id` nor `full_path` is present to avoid an unnecessary full-scan transaction. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import { IntegrationType } from "@shared/types";
|
|
import { Integration } from "@server/models";
|
|
import BaseProcessor from "@server/queues/processors/BaseProcessor";
|
|
import type { IntegrationEvent, Event } from "@server/types";
|
|
import { CacheHelper } from "@server/utils/CacheHelper";
|
|
import { RedisPrefixHelper } from "@server/utils/RedisPrefixHelper";
|
|
import CacheIssueSourcesTask from "../tasks/CacheIssueSourcesTask";
|
|
|
|
export default class IntegrationCreatedProcessor extends BaseProcessor {
|
|
static applicableEvents: Event["name"][] = ["integrations.create"];
|
|
|
|
async perform(event: IntegrationEvent) {
|
|
const integration = await Integration.findOne({
|
|
where: {
|
|
id: event.modelId,
|
|
},
|
|
paranoid: false,
|
|
});
|
|
if (integration?.type !== IntegrationType.Embed) {
|
|
return;
|
|
}
|
|
|
|
// Store the available issue sources in the integration record.
|
|
await new CacheIssueSourcesTask().schedule({
|
|
integrationId: integration.id,
|
|
});
|
|
|
|
// Clear the cache of unfurled data for the team as it may be stale now.
|
|
await CacheHelper.clearData(
|
|
RedisPrefixHelper.getUnfurlKey(integration.teamId)
|
|
);
|
|
}
|
|
}
|