import { db, getWorkerUtils } from "@link-stack/bridge-common"; import * as signalApi from "@link-stack/signal-api"; const { Configuration, MessagesApi } = signalApi; const fetchSignalMessagesTask = async (): Promise => { const worker = await getWorkerUtils(); const rows = await db.selectFrom("SignalBot").selectAll().execute(); const config = new Configuration({ basePath: process.env.BRIDGE_SIGNAL_URL, }); const messagesClient = new MessagesApi(config); for (const row of rows) { const { id, phoneNumber: number } = row; const messages = await messagesClient.v1ReceiveNumberGet({ number }); for (const msg of messages) { const { envelope } = msg as any; const { source, sourceUuid, dataMessage } = envelope; const message = dataMessage?.message; const rawTimestamp = dataMessage?.timestamp; const timestamp = new Date(rawTimestamp); const messageId = `${sourceUuid}-${rawTimestamp}`; const attachment = undefined; const mimeType = undefined; const filename = undefined; if (source !== number && message) { await worker.addJob("signal/receive-signal-message", { token: id, to: number, from: source, messageId, message, sentAt: timestamp.toISOString(), attachment, filename, mimeType, }); } } } }; export default fetchSignalMessagesTask;