Skip to content

Commit

Permalink
feat: add label feature (#955)
Browse files Browse the repository at this point in the history
Co-authored-by: 刘建辉 <[email protected]>
  • Loading branch information
jianhuihi and 刘建辉 authored Sep 22, 2024
1 parent 9e4e211 commit 6ff9455
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/Socket/chats.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
*/
Expand Down Expand Up @@ -1024,6 +1036,7 @@ export const makeChatsSocket = (config: SocketConfig) => {
resyncAppState,
chatModify,
cleanDirtyBits,
addLabel,
addChatLabel,
removeChatLabel,
addMessageLabel,
Expand Down
3 changes: 3 additions & 0 deletions src/Types/Chat.ts
Original file line number Diff line number Diff line change
@@ -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'
Expand Down Expand Up @@ -90,6 +91,8 @@ export type ChatModification =
lastMessages: LastMessageList
}
| { delete: true, lastMessages: LastMessageList }
// Label
| { addLabel: LabelActionBody }
// Label assosiation
| { addChatLabel: ChatLabelAssociationActionBody }
| { removeChatLabel: ChatLabelAssociationActionBody }
Expand Down
12 changes: 12 additions & 0 deletions src/Types/Label.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
15 changes: 15 additions & 0 deletions src/Utils/chat-utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand Down

0 comments on commit 6ff9455

Please sign in to comment.