refactor(msteams): share credential prompt

This commit is contained in:
Peter Steinberger
2026-02-15 19:21:31 +00:00
parent 824901083b
commit 699136f89a

View File

@@ -63,6 +63,32 @@ function looksLikeGuid(value: string): boolean {
return /^[0-9a-fA-F-]{16,}$/.test(value); 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: { async function promptMSTeamsAllowFrom(params: {
cfg: OpenClawConfig; cfg: OpenClawConfig;
prompter: WizardPrompter; prompter: WizardPrompter;
@@ -251,24 +277,7 @@ export const msteamsOnboardingAdapter: ChannelOnboardingAdapter = {
}, },
}; };
} else { } else {
appId = String( ({ appId, appPassword, tenantId } = await promptMSTeamsCredentials(prompter));
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();
} }
} else if (hasConfigCreds) { } else if (hasConfigCreds) {
const keep = await prompter.confirm({ const keep = await prompter.confirm({
@@ -276,44 +285,10 @@ export const msteamsOnboardingAdapter: ChannelOnboardingAdapter = {
initialValue: true, initialValue: true,
}); });
if (!keep) { if (!keep) {
appId = String( ({ appId, appPassword, tenantId } = await promptMSTeamsCredentials(prompter));
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();
} }
} else { } else {
appId = String( ({ appId, appPassword, tenantId } = await promptMSTeamsCredentials(prompter));
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();
} }
if (appId && appPassword && tenantId) { if (appId && appPassword && tenantId) {