Files
openclaw/extensions/nextcloud-talk/src/approval-auth.ts
2026-04-07 22:24:32 +01:00

28 lines
1.0 KiB
TypeScript

import {
createResolvedApproverActionAuthAdapter,
resolveApprovalApprovers,
} from "openclaw/plugin-sdk/approval-auth-runtime";
import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";
import { resolveNextcloudTalkAccount } from "./accounts.js";
import type { CoreConfig } from "./types.js";
function normalizeNextcloudTalkApproverId(value: string | number): string | undefined {
return normalizeOptionalLowercaseString(
String(value)
.trim()
.replace(/^(nextcloud-talk|nc-talk|nc):/i, ""),
);
}
export const nextcloudTalkApprovalAuth = createResolvedApproverActionAuthAdapter({
channelLabel: "Nextcloud Talk",
resolveApprovers: ({ cfg, accountId }) => {
const account = resolveNextcloudTalkAccount({ cfg: cfg as CoreConfig, accountId });
return resolveApprovalApprovers({
allowFrom: account.config.allowFrom,
normalizeApprover: normalizeNextcloudTalkApproverId,
});
},
normalizeSenderId: (value) => normalizeNextcloudTalkApproverId(value),
});