mirror of
https://github.com/moltbot/moltbot.git
synced 2026-04-23 22:55:24 +00:00
76 lines
2.9 KiB
TypeScript
76 lines
2.9 KiB
TypeScript
import { getChannelSetupWizardAdapter } from "./channel-setup/registry.js";
|
|
import type { ChannelSetupWizardAdapter } from "./channel-setup/types.js";
|
|
import type { ChannelChoice } from "./onboard-types.js";
|
|
|
|
type ChannelSetupWizardAdapterPatch = Partial<
|
|
Pick<
|
|
ChannelSetupWizardAdapter,
|
|
| "afterConfigWritten"
|
|
| "configure"
|
|
| "configureInteractive"
|
|
| "configureWhenConfigured"
|
|
| "getStatus"
|
|
>
|
|
>;
|
|
|
|
type PatchedSetupAdapterFields = {
|
|
afterConfigWritten?: ChannelSetupWizardAdapter["afterConfigWritten"];
|
|
configure?: ChannelSetupWizardAdapter["configure"];
|
|
configureInteractive?: ChannelSetupWizardAdapter["configureInteractive"];
|
|
configureWhenConfigured?: ChannelSetupWizardAdapter["configureWhenConfigured"];
|
|
getStatus?: ChannelSetupWizardAdapter["getStatus"];
|
|
};
|
|
|
|
export function patchChannelSetupWizardAdapter(
|
|
channel: ChannelChoice,
|
|
patch: ChannelSetupWizardAdapterPatch,
|
|
): () => void {
|
|
const adapter = getChannelSetupWizardAdapter(channel);
|
|
if (!adapter) {
|
|
throw new Error(`missing setup adapter for ${channel}`);
|
|
}
|
|
|
|
const previous: PatchedSetupAdapterFields = {};
|
|
|
|
if (Object.prototype.hasOwnProperty.call(patch, "getStatus")) {
|
|
previous.getStatus = adapter.getStatus;
|
|
adapter.getStatus = patch.getStatus ?? adapter.getStatus;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "afterConfigWritten")) {
|
|
previous.afterConfigWritten = adapter.afterConfigWritten;
|
|
adapter.afterConfigWritten = patch.afterConfigWritten;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "configure")) {
|
|
previous.configure = adapter.configure;
|
|
adapter.configure = patch.configure ?? adapter.configure;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "configureInteractive")) {
|
|
previous.configureInteractive = adapter.configureInteractive;
|
|
adapter.configureInteractive = patch.configureInteractive;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "configureWhenConfigured")) {
|
|
previous.configureWhenConfigured = adapter.configureWhenConfigured;
|
|
adapter.configureWhenConfigured = patch.configureWhenConfigured;
|
|
}
|
|
|
|
return () => {
|
|
if (Object.prototype.hasOwnProperty.call(patch, "getStatus")) {
|
|
adapter.getStatus = previous.getStatus!;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "afterConfigWritten")) {
|
|
adapter.afterConfigWritten = previous.afterConfigWritten;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "configure")) {
|
|
adapter.configure = previous.configure!;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "configureInteractive")) {
|
|
adapter.configureInteractive = previous.configureInteractive;
|
|
}
|
|
if (Object.prototype.hasOwnProperty.call(patch, "configureWhenConfigured")) {
|
|
adapter.configureWhenConfigured = previous.configureWhenConfigured;
|
|
}
|
|
};
|
|
}
|
|
|
|
export const patchChannelOnboardingAdapter = patchChannelSetupWizardAdapter;
|