mirror of
https://github.com/cheveguerra/whatsapp-web.js.git
synced 2026-04-19 20:19:14 +00:00
Merge branch 'fix-buttons-list' of https://github.com/pedroslopez/whatsapp-web.js into fix-buttons-list
This commit is contained in:
32
.github/workflows/release.yml
vendored
Normal file
32
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: release
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
release_type:
|
||||||
|
description: "`alpha`, `alpha-minor`, `alpha-major` release?"
|
||||||
|
required: true
|
||||||
|
default: "alpha"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: ${{ github.repository == 'pedroslopez/whatsapp-web.js' }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.RELEASE_GITHUB_TOKEN }}
|
||||||
|
- run: git config --global user.email "hello@wwebjs.dev"
|
||||||
|
- run: git config --global user.name "WWebJS Bot"
|
||||||
|
- name: Bump version and publish to NPM
|
||||||
|
id: publish
|
||||||
|
run: ./tools/publish ${{ github.event.inputs.release_type }}
|
||||||
|
env:
|
||||||
|
NPM_TOKEN: ${{ secrets.RELEASE_NPM_TOKEN }}
|
||||||
|
- name: Create GitHub Release
|
||||||
|
id: create_release
|
||||||
|
uses: ncipollo/release-action@v1
|
||||||
|
with:
|
||||||
|
prerelease: ${{ steps.publish.outputs.PRERELEASE }}
|
||||||
|
generateReleaseNotes: true
|
||||||
|
tag: v${{ steps.publish.outputs.NEW_VERSION }}
|
||||||
@@ -195,6 +195,7 @@ client.on('message', async msg => {
|
|||||||
client.interface.openChatWindowAt(quotedMsg.id._serialized);
|
client.interface.openChatWindowAt(quotedMsg.id._serialized);
|
||||||
}
|
}
|
||||||
} else if (msg.body === '!buttons') {
|
} else if (msg.body === '!buttons') {
|
||||||
|
// Limited to 5 buttons per message and limited to 3 buttons for each kind, in this case the third quick reply button will be removed
|
||||||
let button = new Buttons(
|
let button = new Buttons(
|
||||||
'Button body',
|
'Button body',
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "whatsapp-web.js",
|
"name": "whatsapp-web.js",
|
||||||
"version": "1.17.1",
|
"version": "1.18.0-alpha.1",
|
||||||
"description": "Library for interacting with the WhatsApp Web API ",
|
"description": "Library for interacting with the WhatsApp Web API ",
|
||||||
"main": "./index.js",
|
"main": "./index.js",
|
||||||
"typings": "./index.d.ts",
|
"typings": "./index.d.ts",
|
||||||
|
|||||||
@@ -989,7 +989,13 @@ class Client extends EventEmitter {
|
|||||||
*/
|
*/
|
||||||
async getCommonGroups(contactId) {
|
async getCommonGroups(contactId) {
|
||||||
const commonGroups = await this.pupPage.evaluate(async (contactId) => {
|
const commonGroups = await this.pupPage.evaluate(async (contactId) => {
|
||||||
const contact = window.Store.Contact.get(contactId);
|
let contact = window.Store.Contact.get(contactId);
|
||||||
|
if (!contact) {
|
||||||
|
const wid = window.Store.WidFactory.createUserWid(contactId);
|
||||||
|
const chatConstructor = window.Store.Contact.getModelsArray().find(c=>!c.isGroup).constructor;
|
||||||
|
contact = new chatConstructor({id: wid});
|
||||||
|
}
|
||||||
|
|
||||||
if (contact.commonGroups) {
|
if (contact.commonGroups) {
|
||||||
return contact.commonGroups.serialize();
|
return contact.commonGroups.serialize();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -178,9 +178,9 @@ class RemoteAuth extends BaseAuthStrategy {
|
|||||||
await fs.promises.rm(dirElement, {
|
await fs.promises.rm(dirElement, {
|
||||||
recursive: true,
|
recursive: true,
|
||||||
force: true
|
force: true
|
||||||
});
|
}).catch(() => {});
|
||||||
} else {
|
} else {
|
||||||
await fs.promises.unlink(dirElement);
|
await fs.promises.unlink(dirElement).catch(() => {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,10 +70,10 @@ class Buttons {
|
|||||||
* @returns {FormattedButtonSpec[]}
|
* @returns {FormattedButtonSpec[]}
|
||||||
*/
|
*/
|
||||||
_format(buttons){
|
_format(buttons){
|
||||||
// Limit the buttons (max 3 of regular and 2 of special buttons)
|
// Limit the buttons (max 3 of regular and 3 of special buttons) 5 buttons total at the same time
|
||||||
const templateButtons = buttons.filter(button => button.url || button.number).slice(0,2);
|
const templateButtons = buttons.filter(button => button.url || button.number).slice(0,3);
|
||||||
const regularButtons = buttons.filter(button => !button.url && !button.number).slice(0,3);
|
const regularButtons = buttons.filter(button => !button.url && !button.number).slice(0,3);
|
||||||
buttons = templateButtons.concat(regularButtons);
|
buttons = templateButtons.concat(regularButtons).slice(0,5);
|
||||||
|
|
||||||
return buttons.map((button, index) => {
|
return buttons.map((button, index) => {
|
||||||
if (button.url && button.number && button.id) throw 'Only pick one of the following (url/number/id)';
|
if (button.url && button.number && button.id) throw 'Only pick one of the following (url/number/id)';
|
||||||
@@ -100,7 +100,7 @@ class Buttons {
|
|||||||
index,
|
index,
|
||||||
quickReplyButton: {
|
quickReplyButton: {
|
||||||
displayText: button.body,
|
displayText: button.body,
|
||||||
id: button.id || index
|
id: button.id || `${index}`
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -222,6 +222,14 @@ exports.ExposeStore = (moduleRaidStr) => {
|
|||||||
};
|
};
|
||||||
delete proto.templateMessage;
|
delete proto.templateMessage;
|
||||||
}
|
}
|
||||||
|
if (proto.buttonsMessage) {
|
||||||
|
proto.viewOnceMessage = {
|
||||||
|
message: {
|
||||||
|
buttonsMessage: proto.buttonsMessage,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
delete proto.buttonsMessage;
|
||||||
|
}
|
||||||
if (proto.listMessage) {
|
if (proto.listMessage) {
|
||||||
proto.viewOnceMessage = {
|
proto.viewOnceMessage = {
|
||||||
message: {
|
message: {
|
||||||
@@ -348,7 +356,6 @@ exports.LoadUtils = () => {
|
|||||||
|
|
||||||
window.WWebJS.prepareMessageButtons = (buttonsOptions) => {
|
window.WWebJS.prepareMessageButtons = (buttonsOptions) => {
|
||||||
const returnObject = {};
|
const returnObject = {};
|
||||||
|
|
||||||
if (!buttonsOptions.buttons) {
|
if (!buttonsOptions.buttons) {
|
||||||
return returnObject;
|
return returnObject;
|
||||||
}
|
}
|
||||||
@@ -397,7 +404,7 @@ exports.LoadUtils = () => {
|
|||||||
returnObject.isDynamicReplyButtonsMsg = true;
|
returnObject.isDynamicReplyButtonsMsg = true;
|
||||||
|
|
||||||
returnObject.dynamicReplyButtons = buttonsOptions.buttons.map((button, index) => ({
|
returnObject.dynamicReplyButtons = buttonsOptions.buttons.map((button, index) => ({
|
||||||
buttonId: button.index || `${index}`,
|
buttonId: button.quickReplyButton.id.toString() || `${index}`,
|
||||||
buttonText: {displayText: button.quickReplyButton?.displayText},
|
buttonText: {displayText: button.quickReplyButton?.displayText},
|
||||||
type: 1,
|
type: 1,
|
||||||
}));
|
}));
|
||||||
|
|||||||
80
tools/publish
Executable file
80
tools/publish
Executable file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
cd '..'
|
||||||
|
|
||||||
|
BRANCH=`git rev-parse --abbrev-ref HEAD`
|
||||||
|
RELEASE_MODE=$1
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "-----> CHECK INPUTS"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
if [[ "$RELEASE_MODE" == "alpha" ]]
|
||||||
|
then
|
||||||
|
PRERELEASE='true'
|
||||||
|
VERSION_ARGS="prerelease --preid alpha"
|
||||||
|
DIST_TAG="next"
|
||||||
|
elif [[ "$RELEASE_MODE" == "alpha-minor" ]]
|
||||||
|
then
|
||||||
|
PRERELEASE='true'
|
||||||
|
VERSION_ARGS="preminor --preid alpha"
|
||||||
|
DIST_TAG="next"
|
||||||
|
elif [[ "$RELEASE_MODE" == "alpha-major" ]]
|
||||||
|
then
|
||||||
|
PRERELEASE='true'
|
||||||
|
VERSION_ARGS="premajor --preid alpha"
|
||||||
|
DIST_TAG="next"
|
||||||
|
else
|
||||||
|
echo 'Release Mode required'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f ~/.npmrc ]; then
|
||||||
|
echo "Found existing .npmrc"
|
||||||
|
else
|
||||||
|
if [[ -z "$NPM_TOKEN" ]];then
|
||||||
|
echo "No NPM_TOKEN or ~/.npmrc, exiting.."
|
||||||
|
exit 1;
|
||||||
|
else
|
||||||
|
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
echo "Publishing as NPM user: `npm whoami`"
|
||||||
|
|
||||||
|
if [[ $BRANCH != 'main' ]]; then
|
||||||
|
echo "Not on 'main' branch. Exiting"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $(git status -s) ]]; then
|
||||||
|
echo "There are uncommitted changes on this branch. Exiting..."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "-----> BUMP VERSION"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
npm version $VERSION_ARGS || exit 1
|
||||||
|
git push && git push --tags || exit 1
|
||||||
|
|
||||||
|
NEW_VERSION=`cat package.json | jq -r .version`
|
||||||
|
echo "New Version: $NEW_VERSION"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "-----> PUSH TO NPM"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
npm publish --tag $DIST_TAG
|
||||||
|
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "-----> Done!"
|
||||||
|
echo "Version $NEW_VERSION published to $DIST_TAG tag"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "::set-output name=NEW_VERSION::$NEW_VERSION"
|
||||||
|
echo "::set-output name=PRERELEASE::$PRERELEASE"
|
||||||
|
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user