Skip to content

Commit 154259f

Browse files
authored
Merge pull request #144 from odefun/feat/lark-git-userid-x100b56d
fix: keep Lark git settings bound to the acting user
2 parents 98ce6a8 + 79a15bb commit 154259f

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

packages/ims/lark/client.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -304,11 +304,12 @@ async function sendMessage(
304304
});
305305
}
306306

307-
async function sendSettingsCard(channelId: string, threadId: string): Promise<string | undefined> {
307+
async function sendSettingsCard(channelId: string, threadId: string, userId = ""): Promise<string | undefined> {
308308
const routeThreadId = threadId || "";
309309
return sendLarkSettingsCard({
310310
channelId,
311311
threadId: routeThreadId,
312+
userId,
312313
sendInteractive: (card) =>
313314
sendLarkMessage({
314315
channelId,
@@ -775,7 +776,9 @@ async function processLarkCardAction(payload: unknown): Promise<void> {
775776
envelope.event?.operator?.open_id,
776777
envelope.event?.operator?.user_id,
777778
envelope.open_id,
778-
envelope.user_id
779+
envelope.user_id,
780+
pickValueField(value, "user_id"),
781+
pickValueField(value, "userId")
779782
);
780783

781784
if (
@@ -1020,7 +1023,7 @@ async function processLarkCardAction(payload: unknown): Promise<void> {
10201023
});
10211024

10221025
if (!card) {
1023-
await sendSettingsCard(channelId, "");
1026+
await sendSettingsCard(channelId, "", userId);
10241027
return;
10251028
}
10261029

@@ -1136,7 +1139,7 @@ async function processLarkIncomingEvent(event: LarkIncomingEvent): Promise<void>
11361139
topLevelMessage,
11371140
isMentioned,
11381141
});
1139-
await sendSettingsCard(channelId, "");
1142+
await sendSettingsCard(channelId, "", senderOpenId);
11401143
return;
11411144
}
11421145

packages/ims/lark/settings.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function getLocalSettingsUrl(): string {
3939
return `http://${getWebHost()}:${getWebPort()}/`;
4040
}
4141

42-
function buildSettingsLauncherCard(channelId: string, threadId: string): Record<string, unknown> {
42+
function buildSettingsLauncherCard(channelId: string, threadId: string, userId: string): Record<string, unknown> {
4343
return {
4444
config: {
4545
wide_screen_mode: true,
@@ -54,7 +54,7 @@ function buildSettingsLauncherCard(channelId: string, threadId: string): Record<
5454
elements: [
5555
{
5656
tag: "markdown",
57-
content: `Choose which settings page to open.\n\nChannel: \`${channelId}\``,
57+
content: `Choose which settings page to open.\n\nChannel: \`${channelId}\`\nUser: \`${userId || "(unknown)"}\``,
5858
},
5959
{
6060
tag: "action",
@@ -69,6 +69,7 @@ function buildSettingsLauncherCard(channelId: string, threadId: string): Record<
6969
action: item.action,
7070
channelId,
7171
threadId,
72+
userId,
7273
},
7374
})),
7475
},
@@ -237,6 +238,7 @@ export function buildLarkSettingsDetailCard(params: {
237238
action: "set_general_settings",
238239
channelId,
239240
threadId,
241+
userId,
240242
},
241243
behaviors: [
242244
{
@@ -245,6 +247,7 @@ export function buildLarkSettingsDetailCard(params: {
245247
action: "set_general_settings",
246248
channelId,
247249
threadId,
250+
userId,
248251
},
249252
},
250253
],
@@ -267,7 +270,7 @@ export function buildLarkSettingsDetailCard(params: {
267270
behaviors: [
268271
{
269272
type: "callback",
270-
value: { action: "open_settings_launcher", channelId, threadId },
273+
value: { action: "open_settings_launcher", channelId, threadId, userId },
271274
},
272275
],
273276
},
@@ -322,6 +325,7 @@ export function buildLarkSettingsDetailCard(params: {
322325
workingDirectory: cwd === "(not set)" ? "" : cwd,
323326
baseBranch,
324327
channelSystemMessage: systemMessage === "(none)" ? "" : systemMessage,
328+
userId,
325329
};
326330

327331
return buildCardV2("turquoise", "Channel setting", [
@@ -434,6 +438,7 @@ export function buildLarkSettingsDetailCard(params: {
434438
githubToken,
435439
githubName,
436440
githubEmail,
441+
userId,
437442
};
438443
return buildCardV2("violet", "GitHub info", [
439444
...(notice
@@ -450,7 +455,7 @@ export function buildLarkSettingsDetailCard(params: {
450455
elements: [
451456
{
452457
tag: "markdown",
453-
content: "GitHub",
458+
content: `Setting git information for user ${userId || "(unknown)"}`,
454459
},
455460
{
456461
tag: "markdown",
@@ -510,19 +515,21 @@ export function buildLarkSettingsDetailCard(params: {
510515
export async function sendLarkSettingsCard(params: {
511516
channelId: string;
512517
threadId: string;
518+
userId: string;
513519
sendInteractive: (card: Record<string, unknown>) => Promise<string | undefined>;
514520
sendText: (text: string) => Promise<string | undefined>;
515521
logEvent: (message: string, payload: Record<string, unknown>) => void;
516522
}): Promise<string | undefined> {
517-
const { channelId, threadId, sendInteractive, sendText, logEvent } = params;
523+
const { channelId, threadId, userId, sendInteractive, sendText, logEvent } = params;
518524
const settingsUrl = getLocalSettingsUrl();
519525
logEvent("Lark settings UI launcher triggered", {
520526
channelId,
521527
threadId,
528+
userId,
522529
settingsUrl,
523530
});
524531

525-
const card = buildSettingsLauncherCard(channelId, threadId);
532+
const card = buildSettingsLauncherCard(channelId, threadId, userId);
526533

527534
try {
528535
const messageId = await sendInteractive(card as unknown as Record<string, unknown>);

0 commit comments

Comments
 (0)