function toMessageSidPart(value?: string | number | null ): string {
if (typeof value === "string" ) {
return value.trim();
}
if (typeof value === "number" && Number.isFinite(value)) {
return String(Math.trunc(value));
}
return "" ;
}
export function parseZalouserMessageSidFull(
value?: string | number | null ,
): { msgId: string; cliMsgId: string } | null {
const raw = toMessageSidPart(value);
if (!raw) {
return null ;
}
const [msgIdPart, cliMsgIdPart] = raw.split(":" ).map((entry) => entry.trim());
if (!msgIdPart || !cliMsgIdPart) {
return null ;
}
return { msgId: msgIdPart, cliMsgId: cliMsgIdPart };
}
export function resolveZalouserReactionMessageIds(params: {
messageId?: string;
cliMsgId?: string;
currentMessageId?: string | number;
}): { msgId: string; cliMsgId: string } | null {
const explicitMessageId = toMessageSidPart(params.messageId);
const explicitCliMsgId = toMessageSidPart(params.cliMsgId);
if (explicitMessageId && explicitCliMsgId) {
return { msgId: explicitMessageId, cliMsgId: explicitCliMsgId };
}
const parsedFromCurrent = parseZalouserMessageSidFull(params.currentMessageId);
if (parsedFromCurrent) {
return parsedFromCurrent;
}
const currentRaw = toMessageSidPart(params.currentMessageId);
if (!currentRaw) {
return null ;
}
if (explicitMessageId && !explicitCliMsgId) {
return { msgId: explicitMessageId, cliMsgId: currentRaw };
}
if (!explicitMessageId && explicitCliMsgId) {
return { msgId: currentRaw, cliMsgId: explicitCliMsgId };
}
return { msgId: currentRaw, cliMsgId: currentRaw };
}
export function formatZalouserMessageSidFull(params: {
msgId?: string | null ;
cliMsgId?: string | null ;
}): string | undefined {
const msgId = toMessageSidPart(params.msgId);
const cliMsgId = toMessageSidPart(params.cliMsgId);
if (!msgId && !cliMsgId) {
return undefined;
}
if (msgId && cliMsgId) {
return `${msgId}:${cliMsgId}`;
}
return msgId || cliMsgId || undefined;
}
export function resolveZalouserMessageSid(params: {
msgId?: string | null ;
cliMsgId?: string | null ;
fallback?: string | null ;
}): string | undefined {
const msgId = toMessageSidPart(params.msgId);
const cliMsgId = toMessageSidPart(params.cliMsgId);
if (msgId || cliMsgId) {
return msgId || cliMsgId;
}
return toMessageSidPart(params.fallback) || undefined;
}
Messung V0.5 in Prozent C=100 H=95 G=97
¤ Dauer der Verarbeitung: 0.12 Sekunden
(vorverarbeitet am 2026-05-26)
¤
*© Formatika GbR, Deutschland