From 699136f89a6e01ff3d36653538a643c16bae8207 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 19:21:31 +0000 Subject: [PATCH] refactor(msteams): share credential prompt --- extensions/msteams/src/onboarding.ts | 83 ++++++++++------------------ 1 file changed, 29 insertions(+), 54 deletions(-) diff --git a/extensions/msteams/src/onboarding.ts b/extensions/msteams/src/onboarding.ts index d950bd2db08..191a2631a91 100644 --- a/extensions/msteams/src/onboarding.ts +++ b/extensions/msteams/src/onboarding.ts @@ -63,6 +63,32 @@ function looksLikeGuid(value: string): boolean { return /^[0-9a-fA-F-]{16,}$/.test(value); } +async function promptMSTeamsCredentials(prompter: WizardPrompter): Promise<{ + appId: string; + appPassword: string; + tenantId: string; +}> { + const appId = String( + await prompter.text({ + message: "Enter MS Teams App ID", + validate: (value) => (value?.trim() ? undefined : "Required"), + }), + ).trim(); + const appPassword = String( + await prompter.text({ + message: "Enter MS Teams App Password", + validate: (value) => (value?.trim() ? undefined : "Required"), + }), + ).trim(); + const tenantId = String( + await prompter.text({ + message: "Enter MS Teams Tenant ID", + validate: (value) => (value?.trim() ? undefined : "Required"), + }), + ).trim(); + return { appId, appPassword, tenantId }; +} + async function promptMSTeamsAllowFrom(params: { cfg: OpenClawConfig; prompter: WizardPrompter; @@ -251,24 +277,7 @@ export const msteamsOnboardingAdapter: ChannelOnboardingAdapter = { }, }; } else { - appId = String( - await prompter.text({ - message: "Enter MS Teams App ID", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - appPassword = String( - await prompter.text({ - message: "Enter MS Teams App Password", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - tenantId = String( - await prompter.text({ - message: "Enter MS Teams Tenant ID", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); + ({ appId, appPassword, tenantId } = await promptMSTeamsCredentials(prompter)); } } else if (hasConfigCreds) { const keep = await prompter.confirm({ @@ -276,44 +285,10 @@ export const msteamsOnboardingAdapter: ChannelOnboardingAdapter = { initialValue: true, }); if (!keep) { - appId = String( - await prompter.text({ - message: "Enter MS Teams App ID", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - appPassword = String( - await prompter.text({ - message: "Enter MS Teams App Password", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - tenantId = String( - await prompter.text({ - message: "Enter MS Teams Tenant ID", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); + ({ appId, appPassword, tenantId } = await promptMSTeamsCredentials(prompter)); } } else { - appId = String( - await prompter.text({ - message: "Enter MS Teams App ID", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - appPassword = String( - await prompter.text({ - message: "Enter MS Teams App Password", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); - tenantId = String( - await prompter.text({ - message: "Enter MS Teams Tenant ID", - validate: (value) => (value?.trim() ? undefined : "Required"), - }), - ).trim(); + ({ appId, appPassword, tenantId } = await promptMSTeamsCredentials(prompter)); } if (appId && appPassword && tenantId) {