kaneo (minimalist kanban) fork to experiment adding a tangled integration
github.com/usekaneo/kaneo
1import { and, eq } from "drizzle-orm";
2import db from "../../database";
3import { integrationTable } from "../../database/schema";
4import {
5 defaultGiteaConfig,
6 type GiteaConfig,
7} from "../../plugins/gitea/config";
8import { normalizeApiServerUrl } from "../../utils/openapi-spec";
9
10function maskToken(token: string): string {
11 if (token.length <= 8) {
12 return "••••••••";
13 }
14 return `${token.slice(0, 4)}••••••${token.slice(-4)}`;
15}
16
17async function getGiteaIntegration(projectId: string) {
18 const integration = await db.query.integrationTable.findFirst({
19 where: and(
20 eq(integrationTable.projectId, projectId),
21 eq(integrationTable.type, "gitea"),
22 ),
23 });
24
25 if (!integration) {
26 return null;
27 }
28
29 const config = JSON.parse(integration.config) as GiteaConfig;
30
31 const apiBase = normalizeApiServerUrl(
32 process.env.KANEO_API_URL || "http://localhost:1337",
33 );
34
35 return {
36 id: integration.id,
37 projectId: integration.projectId,
38 baseUrl: config.baseUrl,
39 repositoryOwner: config.repositoryOwner,
40 repositoryName: config.repositoryName,
41 maskedAccessToken: maskToken(config.accessToken),
42 webhookUrl: `${apiBase.replace(/\/$/, "")}/gitea-integration/webhook/${integration.id}`,
43 webhookSecret: config.webhookSecret ?? "",
44 branchPattern: config.branchPattern || defaultGiteaConfig.branchPattern,
45 commentTaskLinkOnGiteaIssue: config.commentTaskLinkOnGiteaIssue !== false,
46 isActive: integration.isActive,
47 createdAt: integration.createdAt,
48 updatedAt: integration.updatedAt,
49 };
50}
51
52export default getGiteaIntegration;