refactor(line): share source info parsing

This commit is contained in:
Peter Steinberger
2026-02-15 16:57:58 +00:00
parent c906121ad3
commit 1ab5fcc325
3 changed files with 18 additions and 26 deletions

View File

@@ -20,6 +20,7 @@ import {
} from "../pairing/pairing-store.js";
import { firstDefined, isSenderAllowed, normalizeAllowFromWithStore } from "./bot-access.js";
import {
getLineSourceInfo,
buildLineMessageContext,
buildLinePostbackContext,
type LineInboundContext,
@@ -40,28 +41,6 @@ export interface LineHandlerContext {
processMessage: (ctx: LineInboundContext) => Promise<void>;
}
type LineSourceInfo = {
userId?: string;
groupId?: string;
roomId?: string;
isGroup: boolean;
};
function getSourceInfo(source: EventSource): LineSourceInfo {
const userId =
source.type === "user"
? source.userId
: source.type === "group"
? source.userId
: source.type === "room"
? source.userId
: undefined;
const groupId = source.type === "group" ? source.groupId : undefined;
const roomId = source.type === "room" ? source.roomId : undefined;
const isGroup = source.type === "group" || source.type === "room";
return { userId, groupId, roomId, isGroup };
}
function resolveLineGroupConfig(params: {
config: ResolvedLineAccount["config"];
groupId?: string;
@@ -129,7 +108,7 @@ async function shouldProcessLineEvent(
context: LineHandlerContext,
): Promise<boolean> {
const { cfg, account } = context;
const { userId, groupId, roomId, isGroup } = getSourceInfo(event.source);
const { userId, groupId, roomId, isGroup } = getLineSourceInfo(event.source);
const senderId = userId ?? "";
const storeAllowFrom = await readChannelAllowFromStore("line").catch(() => []);