feat: add label feature (#955)

Co-authored-by: 刘建辉 <liujianhui@gongchang.com>
This commit is contained in:
建辉
2024-09-22 19:48:17 +08:00
committed by GitHub
parent 9e4e211751
commit 6ff945502d
4 changed files with 43 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import { makeMutex } from '../Utils/make-mutex'
import processMessage from '../Utils/process-message'
import { BinaryNode, getBinaryNodeChild, getBinaryNodeChildren, jidNormalizedUser, reduceBinaryNodeToDictionary, S_WHATSAPP_NET } from '../WABinary'
import { makeSocket } from './socket'
import { Label, LabelActionBody } from '../Types/Label'
const MAX_SYNC_ATTEMPTS = 2
@@ -804,6 +805,17 @@ export const makeChatsSocket = (config: SocketConfig) => {
}, jid)
}
/**
* Adds label
*/
const addLabel = (jid: string, labels: LabelActionBody) => {
return chatModify({
addLabel: {
...labels
}
}, jid)
}
/**
* Adds label for the chats
*/
@@ -1024,6 +1036,7 @@ export const makeChatsSocket = (config: SocketConfig) => {
resyncAppState,
chatModify,
cleanDirtyBits,
addLabel,
addChatLabel,
removeChatLabel,
addMessageLabel,

View File

@@ -1,6 +1,7 @@
import type { proto } from '../../WAProto'
import type { AccountSettings } from './Auth'
import type { BufferedEventData } from './Events'
import type { LabelActionBody } from './Label'
import type { ChatLabelAssociationActionBody } from './LabelAssociation'
import type { MessageLabelAssociationActionBody } from './LabelAssociation'
import type { MinimalMessage } from './Message'
@@ -90,6 +91,8 @@ export type ChatModification =
lastMessages: LastMessageList
}
| { delete: true, lastMessages: LastMessageList }
// Label
| { addLabel: LabelActionBody }
// Label assosiation
| { addChatLabel: ChatLabelAssociationActionBody }
| { removeChatLabel: ChatLabelAssociationActionBody }

View File

@@ -11,6 +11,18 @@ export interface Label {
predefinedId?: string
}
export interface LabelActionBody {
id: string
/** Label name */
name?: string
/** Label color ID */
color?: number
/** Is label has been deleted */
deleted?: boolean
/** WhatsApp has 5 predefined labels (New customer, New order & etc) */
predefinedId?: number
}
/** WhatsApp has 20 predefined colors */
export enum LabelColor {
Color1 = 0,

View File

@@ -620,6 +620,21 @@ export const chatModificationToAppPatch = (
apiVersion: 1,
operation: OP.SET,
}
} else if('addLabel' in mod) {
patch = {
syncAction: {
labelEditAction: {
name: mod.addLabel.name,
color: mod.addLabel.color,
predefinedId : mod.addLabel.predefinedId,
deleted: mod.addLabel.deleted
}
},
index: ['label_edit', mod.addLabel.id],
type: 'regular',
apiVersion: 3,
operation: OP.SET,
}
} else if('addChatLabel' in mod) {
patch = {
syncAction: {