From 4f64e4ed554e83857994a18868bd7c6b1a138682 Mon Sep 17 00:00:00 2001 From: icleitoncosta Date: Wed, 30 Oct 2024 13:11:33 -0300 Subject: [PATCH] feat: Added WPP.chat.setNotes function --- src/chat/functions/setNotes.ts | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/chat/functions/setNotes.ts diff --git a/src/chat/functions/setNotes.ts b/src/chat/functions/setNotes.ts new file mode 100644 index 0000000000..f5a2478e55 --- /dev/null +++ b/src/chat/functions/setNotes.ts @@ -0,0 +1,69 @@ +/*! + * Copyright 2022 WPPConnect Team + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { assertGetChat } from '../../assert'; +import { isBusiness } from '../../profile'; +import { WPPError } from '../../util'; +import { NoteModel, Wid } from '../../whatsapp'; +import { + addOrEditNoteAction, + retrieveOnlyNoteForChatJid, +} from '../../whatsapp/functions/addOrEditNoteAction'; + +/** + * Set notes for a contact + * Only when are connected with business device + * @example + * ```javascript + * WPP.chat.setNotes('[number]@c.us', 'Text for your notes'); + * ``` + * @category Chat + */ +export async function setNotes( + chatId: string | Wid, + content: string +): Promise { + const chat = assertGetChat(chatId); + if (!isBusiness()) { + throw new WPPError( + 'connected_device_not_is_business', + `Connected device not is business account` + ); + } else if (!content) { + throw new WPPError( + 'missing_content_for_notes', + `Missing content for notes` + ); + } else if (chat.isGroup) { + throw new WPPError( + 'can_not_set_notes_for_groups', + `You can not set notes for groups. ChatId: ${chatId}` + ); + } + const existsNote = await retrieveOnlyNoteForChatJid(chat.id.toJid()); + await addOrEditNoteAction( + { + actionType: existsNote ? 'edit' : 'add', + chatJid: chat.id.toJid(), + content, + createdAt: Math.floor(Date.now() / 1000), + id: existsNote?.id, + noteType: 'unstructured', + }, + true + ); + return await retrieveOnlyNoteForChatJid(chat.id.toJid()); +}