diff --git a/src/utils/proto-helpers.ts b/src/utils/proto-helpers.ts new file mode 100644 index 0000000000..39504c9e2b --- /dev/null +++ b/src/utils/proto-helpers.ts @@ -0,0 +1,8 @@ +import { WAProto as proto } from 'baileys'; + +export function deserializeAppStateSyncKey(type: string, value: unknown): unknown { + if (type === 'app-state-sync-key' && value) { + return proto.Message.AppStateSyncKeyData.fromObject(value); + } + return value; +} diff --git a/src/utils/use-multi-file-auth-state-prisma.ts b/src/utils/use-multi-file-auth-state-prisma.ts index d090780234..3764f52ee2 100644 --- a/src/utils/use-multi-file-auth-state-prisma.ts +++ b/src/utils/use-multi-file-auth-state-prisma.ts @@ -4,6 +4,7 @@ import { CacheConf, configService } from '@config/env.config'; import { Logger } from '@config/logger.config'; import { INSTANCE_DIR } from '@config/path.config'; import { AuthenticationState, BufferJSON, initAuthCreds, WAProto as proto } from 'baileys'; +import { deserializeAppStateSyncKey } from './proto-helpers'; import fs from 'fs/promises'; import path from 'path'; @@ -181,9 +182,7 @@ export default async function useMultiFileAuthStatePrisma( await Promise.all( ids.map(async (id) => { let value = await readData(`${type}-${id}`); - if (type === 'app-state-sync-key' && value) { - value = proto.Message.AppStateSyncKeyData.create(value); - } + value = deserializeAppStateSyncKey(type, value); data[id] = value; }), diff --git a/src/utils/use-multi-file-auth-state-provider-files.ts b/src/utils/use-multi-file-auth-state-provider-files.ts index eecc3100e5..6781ed4dbe 100644 --- a/src/utils/use-multi-file-auth-state-provider-files.ts +++ b/src/utils/use-multi-file-auth-state-provider-files.ts @@ -37,6 +37,7 @@ import { ProviderFiles } from '@api/provider/sessions'; import { Logger } from '@config/logger.config'; import { AuthenticationCreds, AuthenticationState, BufferJSON, initAuthCreds, proto, SignalDataTypeMap } from 'baileys'; +import { deserializeAppStateSyncKey } from './proto-helpers'; import { isNotEmpty } from 'class-validator'; export type AuthState = { @@ -115,9 +116,7 @@ export class AuthStateProvider { await Promise.all( ids.map(async (id) => { let value = await readData(`${type}-${id}`); - if (type === 'app-state-sync-key' && value) { - value = proto.Message.AppStateSyncKeyData.create(value); - } + value = deserializeAppStateSyncKey(type, value); data[id] = value; }), diff --git a/src/utils/use-multi-file-auth-state-redis-db.ts b/src/utils/use-multi-file-auth-state-redis-db.ts index e0981c700c..4da4b5f0cd 100644 --- a/src/utils/use-multi-file-auth-state-redis-db.ts +++ b/src/utils/use-multi-file-auth-state-redis-db.ts @@ -1,6 +1,7 @@ import { CacheService } from '@api/services/cache.service'; import { Logger } from '@config/logger.config'; import { AuthenticationCreds, AuthenticationState, initAuthCreds, proto, SignalDataTypeMap } from 'baileys'; +import { deserializeAppStateSyncKey } from './proto-helpers'; export async function useMultiFileAuthStateRedisDb( instanceName: string, @@ -60,9 +61,7 @@ export async function useMultiFileAuthStateRedisDb( await Promise.all( ids.map(async (id) => { let value = await readData(`${type}-${id}`); - if (type === 'app-state-sync-key' && value) { - value = proto.Message.AppStateSyncKeyData.create(value); - } + value = deserializeAppStateSyncKey(type, value); data[id] = value; }),