kaneo (minimalist kanban) fork to experiment adding a tangled integration github.com/usekaneo/kaneo
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at cd7cada2f86b4e866a15b4323bb8d6d7ab5bba8b 66 lines 1.8 kB view raw
1import { 2 createExternalLink, 3 findExternalLinkByTaskAndType, 4} from "../../github/services/link-manager"; 5import { 6 formatIssueBody, 7 formatIssueTitle, 8 getLabelsForIssue, 9} from "../../github/utils/format"; 10import type { PluginContext, TaskCreatedEvent } from "../../types"; 11import type { GiteaConfig } from "../config"; 12import { createGiteaClient } from "../utils/gitea-api"; 13import { addLabelsToIssueGitea } from "../utils/labels"; 14 15export async function handleTaskCreated( 16 event: TaskCreatedEvent, 17 context: PluginContext, 18): Promise<void> { 19 const config = context.config as GiteaConfig; 20 if (!config.baseUrl || !config.accessToken) { 21 return; 22 } 23 24 const { repositoryOwner, repositoryName } = config; 25 26 const existingLink = await findExternalLinkByTaskAndType( 27 event.taskId, 28 context.integrationId, 29 "issue", 30 ); 31 32 if (existingLink) { 33 return; 34 } 35 36 try { 37 const client = createGiteaClient(config); 38 const createdIssue = await client.createIssue( 39 repositoryOwner, 40 repositoryName, 41 { 42 title: formatIssueTitle(event.title), 43 body: formatIssueBody(event.description, event.taskId), 44 }, 45 ); 46 47 await createExternalLink({ 48 taskId: event.taskId, 49 integrationId: context.integrationId, 50 resourceType: "issue", 51 externalId: createdIssue.number.toString(), 52 url: createdIssue.html_url, 53 title: createdIssue.title, 54 metadata: { 55 state: createdIssue.state, 56 createdFrom: "kaneo", 57 lastOutboundStateSyncAt: Date.now(), 58 }, 59 }); 60 61 const labels = getLabelsForIssue(event.priority, event.status); 62 await addLabelsToIssueGitea(config, createdIssue.number, labels); 63 } catch (error) { 64 console.error("Failed to create Gitea issue:", error); 65 } 66}