Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import { ChannelsStatusSnapshot } from "../types.ts";
import type { ChannelsState } from "./channels.types.ts";
import {
formatMissingOperatorReadScopeMessage,
isMissingOperatorReadScopeError,
} from "./scope-errors.ts";
export type { ChannelsState };
export async function loadChannels(state: ChannelsState, probe: boolean) {
if (!state.client || !state.connected) {
return;
}
if (state.channelsLoading) {
return;
}
state.channelsLoading = true;
state.channelsError = null;
try {
const res = await state.client.request<ChannelsStatusSnapshot | null>("channels.status", {
probe,
timeoutMs: 8000,
});
state.channelsSnapshot = res;
state.channelsLastSuccess = Date.now();
} catch (err) {
if (isMissingOperatorReadScopeError(err)) {
state.channelsSnapshot = null;
state.channelsError = formatMissingOperatorReadScopeMessage("channel status");
} else {
state.channelsError = String(err);
}
} finally {
state.channelsLoading = false;
}
}
export async function startWhatsAppLogin(state: ChannelsState, force: boolean) {
if (!state.client || !state.connected || state.whatsappBusy) {
return;
}
state.whatsappBusy = true;
try {
const res = await state.client.request<{
message?: string;
qrDataUrl?: string;
connected?: boolean;
}>("web.login.start", {
force,
timeoutMs: 30000,
});
state.whatsappLoginMessage = res.message ?? null;
state.whatsappLoginQrDataUrl = res.qrDataUrl ?? null;
state.whatsappLoginConnected = typeof res.connected === "boolean" ? res.connected : null;
} catch (err) {
state.whatsappLoginMessage = String(err);
state.whatsappLoginQrDataUrl = null;
state.whatsappLoginConnected = null;
} finally {
state.whatsappBusy = false;
}
}
export async function waitWhatsAppLogin(state: ChannelsState) {
if (!state.client || !state.connected || state.whatsappBusy) {
return;
}
state.whatsappBusy = true;
try {
const res = await state.client.request<{
message?: string;
connected?: boolean;
qrDataUrl?: string;
}>("web.login.wait", {
timeoutMs: 120000,
currentQrDataUrl: state.whatsappLoginQrDataUrl ?? undefined,
});
state.whatsappLoginMessage = res.message ?? null;
state.whatsappLoginConnected = res.connected ?? null;
if (res.qrDataUrl) {
state.whatsappLoginQrDataUrl = res.qrDataUrl;
} else if (res.connected) {
state.whatsappLoginQrDataUrl = null;
}
} catch (err) {
state.whatsappLoginMessage = String(err);
state.whatsappLoginConnected = null;
} finally {
state.whatsappBusy = false;
}
}
export async function logoutWhatsApp(state: ChannelsState) {
if (!state.client || !state.connected || state.whatsappBusy) {
return;
}
state.whatsappBusy = true;
try {
await state.client.request("channels.logout", { channel: "whatsapp" });
state.whatsappLoginMessage = "Logged out.";
state.whatsappLoginQrDataUrl = null;
state.whatsappLoginConnected = null;
} catch (err) {
state.whatsappLoginMessage = String(err);
} finally {
state.whatsappBusy = false;
}
}
¤ Dauer der Verarbeitung: 0.22 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland