refactor: share thread binding id parser

This commit is contained in:
Peter Steinberger
2026-03-07 20:04:44 +00:00
parent 95fe282a17
commit 30d091b2fb
4 changed files with 67 additions and 36 deletions

View File

@@ -1,4 +1,5 @@
import { Routes } from "discord-api-types/v10";
import { resolveThreadBindingConversationIdFromBindingId } from "../../channels/thread-binding-id.js";
import { logVerbose } from "../../globals.js";
import {
registerSessionBindingAdapter,
@@ -157,22 +158,6 @@ function toSessionBindingRecord(
};
}
function resolveThreadIdFromBindingId(params: {
accountId: string;
bindingId?: string;
}): string | undefined {
const bindingId = params.bindingId?.trim();
if (!bindingId) {
return undefined;
}
const prefix = `${params.accountId}:`;
if (!bindingId.startsWith(prefix)) {
return undefined;
}
const threadId = bindingId.slice(prefix.length).trim();
return threadId || undefined;
}
export function createThreadBindingManager(
params: {
accountId?: string;
@@ -617,7 +602,10 @@ export function createThreadBindingManager(
return binding ? toSessionBindingRecord(binding, { idleTimeoutMs, maxAgeMs }) : null;
},
touch: (bindingId, at) => {
const threadId = resolveThreadIdFromBindingId({ accountId, bindingId });
const threadId = resolveThreadBindingConversationIdFromBindingId({
accountId,
bindingId,
});
if (!threadId) {
return;
}
@@ -631,7 +619,7 @@ export function createThreadBindingManager(
});
return removed.map((entry) => toSessionBindingRecord(entry, { idleTimeoutMs, maxAgeMs }));
}
const threadId = resolveThreadIdFromBindingId({
const threadId = resolveThreadBindingConversationIdFromBindingId({
accountId,
bindingId: input.bindingId,
});