Switch to Baileys multi-file auth with latest rc
This commit is contained in:
@@ -38,7 +38,7 @@ const baileys = (await import(
|
||||
"@whiskeysockets/baileys"
|
||||
)) as unknown as typeof import("@whiskeysockets/baileys") & {
|
||||
makeWASocket: ReturnType<typeof vi.fn>;
|
||||
useSingleFileAuthState: ReturnType<typeof vi.fn>;
|
||||
useMultiFileAuthState: ReturnType<typeof vi.fn>;
|
||||
fetchLatestBaileysVersion: ReturnType<typeof vi.fn>;
|
||||
makeCacheableSignalKeyStore: ReturnType<typeof vi.fn>;
|
||||
};
|
||||
@@ -51,8 +51,8 @@ describe("provider-web", () => {
|
||||
Symbol.for("warelay:lastSocket")
|
||||
] = recreated.lastSocket;
|
||||
baileys.makeWASocket.mockImplementation(recreated.mod.makeWASocket);
|
||||
baileys.useSingleFileAuthState.mockImplementation(
|
||||
recreated.mod.useSingleFileAuthState,
|
||||
baileys.useMultiFileAuthState.mockImplementation(
|
||||
recreated.mod.useMultiFileAuthState,
|
||||
);
|
||||
baileys.fetchLatestBaileysVersion.mockImplementation(
|
||||
recreated.mod.fetchLatestBaileysVersion,
|
||||
@@ -69,17 +69,17 @@ describe("provider-web", () => {
|
||||
it("creates WA socket with QR handler", async () => {
|
||||
await createWaSocket(true, false);
|
||||
const makeWASocket = baileys.makeWASocket as ReturnType<typeof vi.fn>;
|
||||
expect(makeWASocket).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ printQRInTerminal: false }),
|
||||
);
|
||||
const sock = getLastSocket();
|
||||
const saveCreds = (
|
||||
await baileys.useSingleFileAuthState.mock.results[0].value
|
||||
).saveState;
|
||||
// trigger creds.update listener
|
||||
sock.ev.emit("creds.update", {});
|
||||
expect(saveCreds).toHaveBeenCalled();
|
||||
});
|
||||
expect(makeWASocket).toHaveBeenCalledWith(
|
||||
expect.objectContaining({ printQRInTerminal: false }),
|
||||
);
|
||||
const sock = getLastSocket();
|
||||
const saveCreds = (
|
||||
await baileys.useMultiFileAuthState.mock.results[0].value
|
||||
).saveCreds;
|
||||
// trigger creds.update listener
|
||||
sock.ev.emit("creds.update", {});
|
||||
expect(saveCreds).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("waits for connection open", async () => {
|
||||
const ev = new EventEmitter();
|
||||
|
||||
@@ -7,22 +7,22 @@ import {
|
||||
fetchLatestBaileysVersion,
|
||||
makeCacheableSignalKeyStore,
|
||||
makeWASocket,
|
||||
useSingleFileAuthState,
|
||||
useMultiFileAuthState,
|
||||
} from "@whiskeysockets/baileys";
|
||||
import pino from "pino";
|
||||
import qrcode from "qrcode-terminal";
|
||||
import { danger, info, logVerbose, success } from "./globals.js";
|
||||
import { ensureDir, jidToE164, toWhatsappJid } from "./utils.js";
|
||||
|
||||
const WA_WEB_AUTH_FILE = path.join(
|
||||
const WA_WEB_AUTH_DIR = path.join(
|
||||
os.homedir(),
|
||||
".warelay",
|
||||
"credentials.json",
|
||||
"credentials",
|
||||
);
|
||||
|
||||
export async function createWaSocket(printQr: boolean, verbose: boolean) {
|
||||
await ensureDir(path.dirname(WA_WEB_AUTH_FILE));
|
||||
const { state, saveState } = await useSingleFileAuthState(WA_WEB_AUTH_FILE);
|
||||
await ensureDir(WA_WEB_AUTH_DIR);
|
||||
const { state, saveCreds } = await useMultiFileAuthState(WA_WEB_AUTH_DIR);
|
||||
const { version } = await fetchLatestBaileysVersion();
|
||||
const logger = pino({ level: verbose ? "info" : "silent" });
|
||||
const sock = makeWASocket({
|
||||
@@ -38,7 +38,7 @@ export async function createWaSocket(printQr: boolean, verbose: boolean) {
|
||||
markOnlineOnConnect: false,
|
||||
});
|
||||
|
||||
sock.ev.on("creds.update", saveState);
|
||||
sock.ev.on("creds.update", saveCreds);
|
||||
sock.ev.on(
|
||||
"connection.update",
|
||||
(update: Partial<import("@whiskeysockets/baileys").ConnectionState>) => {
|
||||
@@ -168,7 +168,7 @@ export async function loginWeb(
|
||||
}
|
||||
}
|
||||
|
||||
export { WA_WEB_AUTH_FILE };
|
||||
export { WA_WEB_AUTH_DIR };
|
||||
|
||||
export function webAuthExists() {
|
||||
return fs
|
||||
|
||||
@@ -13,7 +13,7 @@ export type MockBaileysModule = {
|
||||
fetchLatestBaileysVersion: ReturnType<typeof vi.fn>;
|
||||
makeCacheableSignalKeyStore: ReturnType<typeof vi.fn>;
|
||||
makeWASocket: ReturnType<typeof vi.fn>;
|
||||
useSingleFileAuthState: ReturnType<typeof vi.fn>;
|
||||
useMultiFileAuthState: ReturnType<typeof vi.fn>;
|
||||
jidToE164?: (jid: string) => string | null;
|
||||
proto?: unknown;
|
||||
};
|
||||
@@ -39,9 +39,9 @@ export function createMockBaileys(): { mod: MockBaileysModule; lastSocket: () =>
|
||||
fetchLatestBaileysVersion: vi.fn().mockResolvedValue({ version: [1, 2, 3] }),
|
||||
makeCacheableSignalKeyStore: vi.fn((keys: unknown) => keys),
|
||||
makeWASocket,
|
||||
useSingleFileAuthState: vi.fn(async () => ({
|
||||
useMultiFileAuthState: vi.fn(async () => ({
|
||||
state: { creds: {}, keys: {} },
|
||||
saveState: vi.fn(),
|
||||
saveCreds: vi.fn(),
|
||||
})),
|
||||
jidToE164: (jid: string) => jid.replace(/@.*$/, "").replace(/^/, "+"),
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user