feat: add toggle to download history

This commit is contained in:
Adhiraj Singh
2022-05-22 17:23:30 +05:30
parent 85a58fbc10
commit 9a39a46398
4 changed files with 27 additions and 12 deletions

View File

@@ -43,6 +43,7 @@ const BASE_CONNECTION_CONFIG: CommonSocketConfig<any> = {
export const DEFAULT_CONNECTION_CONFIG: SocketConfig = {
...BASE_CONNECTION_CONFIG,
downloadHistory: true,
linkPreviewImageThumbnailWidth: 192,
getMessage: async() => undefined
}

View File

@@ -13,7 +13,8 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
const {
logger,
treatCiphertextMessagesAsReal,
retryRequestDelayMs
retryRequestDelayMs,
downloadHistory
} = config
const sock = makeChatsSocket(config)
const {
@@ -149,7 +150,15 @@ export const makeMessagesRecvSocket = (config: SocketConfig) => {
// process message and emit events
const newEvents = await processMessage(
msg,
{ historyCache, meId, accountSettings: authState.creds.accountSettings, keyStore: authState.keys, logger, treatCiphertextMessagesAsReal }
{
downloadHistory,
historyCache,
meId,
accountSettings: authState.creds.accountSettings,
keyStore: authState.keys,
logger,
treatCiphertextMessagesAsReal
}
)
// send ack for history message

View File

@@ -18,6 +18,8 @@ import { CommonSocketConfig } from './Socket'
export type MessageRetryMap = { [msgId: string]: number }
export type SocketConfig = CommonSocketConfig<AuthenticationState> & {
/** By default true, should history messages be downloaded and processed */
downloadHistory: boolean
/** provide a cache to store a user's device list */
userDevicesCache?: NodeCache
/**

View File

@@ -6,6 +6,7 @@ import { areJidsSameUser, jidNormalizedUser } from '../WABinary'
type ProcessMessageContext = {
historyCache: Set<string>
downloadHistory: boolean
meId: string
keyStore: SignalKeyStoreWithTransaction
accountSettings: AccountSettings
@@ -22,7 +23,7 @@ const MSG_MISSED_CALL_TYPES = new Set([
const processMessage = async(
message: proto.IWebMessageInfo,
{ historyCache, meId, keyStore, accountSettings, logger, treatCiphertextMessagesAsReal }: ProcessMessageContext
{ downloadHistory, historyCache, meId, keyStore, accountSettings, logger, treatCiphertextMessagesAsReal }: ProcessMessageContext
) => {
const map: Partial<BaileysEventMap<any>> = { }
@@ -59,18 +60,20 @@ const processMessage = async(
logger?.info({ histNotification, id: message.key.id }, 'got history notification')
const { chats, contacts, messages, isLatest } = await downloadAndProcessHistorySyncNotification(histNotification, historyCache)
if(downloadHistory) {
const { chats, contacts, messages, isLatest } = await downloadAndProcessHistorySyncNotification(histNotification, historyCache)
if(chats.length) {
map['chats.set'] = { chats, isLatest }
}
if(chats.length) {
map['chats.set'] = { chats, isLatest }
}
if(messages.length) {
map['messages.set'] = { messages, isLatest }
}
if(messages.length) {
map['messages.set'] = { messages, isLatest }
}
if(contacts.length) {
map['contacts.set'] = { contacts }
if(contacts.length) {
map['contacts.set'] = { contacts }
}
}
break