Skip to content

Commit 8f2015b

Browse files
committed
fix: status change message
1 parent 97e7376 commit 8f2015b

2 files changed

Lines changed: 78 additions & 70 deletions

File tree

src/handlers/projectStatusChange.ts

Lines changed: 8 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { Octokit } from 'octokit';
22
import { MattermostClient, MattermostMessage } from '../utils/mattermost.js';
3+
import { getColorEmoji } from '../utils/color.js';
34

45
interface ProjectV2ItemContent {
56
title: string;
@@ -67,73 +68,6 @@ const projectNumberToMattermostChannel: Record<number, string> = {
6768
4: 'information',
6869
}
6970

70-
const colorToEmoji: Record<string, string> = {
71-
RED: '🔴',
72-
GREEN: '🟢',
73-
BLUE: '🔵',
74-
YELLOW: '🟡',
75-
PURPLE: '🟣',
76-
PINK: '💗',
77-
ORANGE: '🟠',
78-
GRAY: '⚫',
79-
WHITE: '⚪',
80-
CYAN: '🔷',
81-
LIME: '💚',
82-
BROWN: '🟤',
83-
TEAL: '🔹',
84-
INDIGO: '🔸',
85-
VIOLET: '🔺',
86-
BLACK: '⚫',
87-
MAGENTA: '💜',
88-
AQUA: '💠',
89-
LAVENDER: '💜',
90-
MAROON: '🟤',
91-
OLIVE: '🟢',
92-
NAVY: '🔵',
93-
CRIMSON: '🔴',
94-
GOLD: '🟡',
95-
SILVER: '⚪',
96-
TURQUOISE: '🔷',
97-
CORAL: '🔸',
98-
TOMATO: '🔴',
99-
CHOCOLATE: '🟤',
100-
SLATE: '⚫',
101-
STEEL: '⚪',
102-
PLUM: '🟣',
103-
SALMON: '🔸',
104-
PERIWINKLE: '🔷',
105-
MINT: '💚',
106-
LEMON: '🟡',
107-
PEACH: '🔸',
108-
ROSE: '💗',
109-
LILAC: '💜',
110-
AUBURN: '🟤',
111-
CERULEAN: '🔵',
112-
VERMILION: '🔴',
113-
AQUAMARINE: '💠',
114-
BURGUNDY: '🟤',
115-
COBALT: '🔵',
116-
EMERALD: '💚',
117-
GARNET: '🔴',
118-
JADE: '💚',
119-
JASPER: '🟤',
120-
LAPIS: '🔵',
121-
MAUVE: '💜',
122-
OCHRE: '🟡',
123-
RUBY: '🔴',
124-
SAPPHIRE: '🔵',
125-
SCARLET: '🔴',
126-
TAN: '🟤',
127-
TAUPE: '⚫',
128-
TOPAZ: '💠',
129-
ULTRAMARINE: '🔵',
130-
VERDIGRIS: '💚',
131-
VIRIDIAN: '💚',
132-
WHEAT: '🟡',
133-
ZINC: '⚪',
134-
ZIRCON: '💠',
135-
};
136-
13771
export async function handleProjectStatusChange(
13872
payload: unknown,
13973
octokit: Octokit,
@@ -160,8 +94,8 @@ export async function handleProjectStatusChange(
16094
const newStatus = changes.field_value.to?.name || '未知狀態';
16195
const oldColor = changes.field_value.from?.color || '';
16296
const newColor = changes.field_value.to?.color || '';
163-
const oldEmoji = colorToEmoji[oldColor] || '⚪';
164-
const newEmoji = colorToEmoji[newColor] || '⚪';
97+
const oldEmoji = getColorEmoji(oldColor);
98+
const newEmoji = getColorEmoji(newColor);
16599

166100
// 使用 GraphQL API 獲取項目內容
167101
const response = await octokit.graphql<GraphQLResponse>(`
@@ -189,9 +123,13 @@ export async function handleProjectStatusChange(
189123
const title = content?.title || '未知標題';
190124
const url = content?.url || '';
191125

126+
const statusChangeText = oldStatus === '未知狀態'
127+
? `status set to ${newEmoji} ${newStatus}`
128+
: `status changed from ${oldEmoji} ${oldStatus} to ${newEmoji} ${newStatus}`;
129+
192130
const message: MattermostMessage = {
193131
channel,
194-
text: `Issue [${title}](${url}) status changed from ${oldEmoji}${oldStatus} to ${newEmoji}${newStatus} by [${typedPayload.sender.login}](${typedPayload.sender.html_url}) \n`
132+
text: `Issue [${title}](${url}) ${statusChangeText} by [${typedPayload.sender.login}](${typedPayload.sender.html_url}) \n`
195133
};
196134

197135
await mattermost.sendMessage(message);

src/utils/color.ts

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
export const colorToEmoji: Record<string, string> = {
2+
RED: '🔴',
3+
GREEN: '🟢',
4+
BLUE: '🔵',
5+
YELLOW: '🟡',
6+
PURPLE: '🟣',
7+
PINK: '💗',
8+
ORANGE: '🟠',
9+
GRAY: '⚫',
10+
WHITE: '⚪',
11+
CYAN: '🔷',
12+
LIME: '💚',
13+
BROWN: '🟤',
14+
TEAL: '🔹',
15+
INDIGO: '🔸',
16+
VIOLET: '🔺',
17+
BLACK: '⚫',
18+
MAGENTA: '💜',
19+
AQUA: '💠',
20+
LAVENDER: '💜',
21+
MAROON: '🟤',
22+
OLIVE: '🟢',
23+
NAVY: '🔵',
24+
CRIMSON: '🔴',
25+
GOLD: '🟡',
26+
SILVER: '⚪',
27+
TURQUOISE: '🔷',
28+
CORAL: '🔸',
29+
TOMATO: '🔴',
30+
CHOCOLATE: '🟤',
31+
SLATE: '⚫',
32+
STEEL: '⚪',
33+
PLUM: '🟣',
34+
SALMON: '🔸',
35+
PERIWINKLE: '🔷',
36+
MINT: '💚',
37+
LEMON: '🟡',
38+
PEACH: '🔸',
39+
ROSE: '💗',
40+
LILAC: '💜',
41+
AUBURN: '🟤',
42+
CERULEAN: '🔵',
43+
VERMILION: '🔴',
44+
AQUAMARINE: '💠',
45+
BURGUNDY: '🟤',
46+
COBALT: '🔵',
47+
EMERALD: '💚',
48+
GARNET: '🔴',
49+
JADE: '💚',
50+
JASPER: '🟤',
51+
LAPIS: '🔵',
52+
MAUVE: '💜',
53+
OCHRE: '🟡',
54+
RUBY: '🔴',
55+
SAPPHIRE: '🔵',
56+
SCARLET: '🔴',
57+
TAN: '🟤',
58+
TAUPE: '⚫',
59+
TOPAZ: '💠',
60+
ULTRAMARINE: '🔵',
61+
VERDIGRIS: '💚',
62+
VIRIDIAN: '💚',
63+
WHEAT: '🟡',
64+
ZINC: '⚪',
65+
ZIRCON: '💠',
66+
};
67+
68+
export function getColorEmoji(color: string): string {
69+
return colorToEmoji[color] || '⚪';
70+
}

0 commit comments

Comments
 (0)