Skip to main content
Glama
GroupManageParticipants.js6.38 kB
export default { name: 'ManageGroupParticipants', data() { return { loading: false, group: '', action: 'add', // add, remove, promote, demote participants: ['', ''], }; }, computed: { group_id() { return `${this.group}${window.TYPEGROUP}`; }, }, methods: { openModal() { $('#modalGroupAddParticipant').modal({ onApprove: function() { return false; }, }).modal('show'); }, isValidForm() { if ( this.participants.length < 1 || this.participants.every(p => this.isEmpty(p)) ) { return false; } return true; }, // Helper to determine if participant value is empty isEmpty(value) { const str = String(value?.jid ?? value).trim(); return !str; }, handleAddParticipant() { this.participants.push(''); }, handleDeleteParticipant(index) { this.participants.splice(index, 1); }, async handleSubmit() { if (!this.isValidForm() || this.loading) { return; } try { let response = await this.submitApi(); showSuccessInfo(response); $('#modalGroupAddParticipant').modal('hide'); } catch (err) { showErrorInfo(err); } }, async submitApi() { this.loading = true; try { const payload = { group_id: this.group_id, // convert participant become list of string participants: this.participants .filter(p => !this.isEmpty(p)) .map(p => `${p?.jid ?? p}`), }; let response; switch (this.action) { case 'add': response = await window.http.post(`/group/participants`, payload); break; case 'remove': response = await window.http.post(`/group/participants/remove`, payload); break; case 'promote': response = await window.http.post(`/group/participants/promote`, payload); break; case 'demote': response = await window.http.post(`/group/participants/demote`, payload); break; } this.handleReset(); return response.data.message; } catch (error) { if (error.response) { throw new Error(error.response.data.message); } throw new Error(error.message); } finally { this.loading = false; } }, handleReset() { this.group = ''; this.action = 'add'; this.participants = ['', '']; }, }, template: ` <div class="green card" @click="openModal" style="cursor: pointer"> <div class="content"> <a class="ui green right ribbon label">Group</a> <div class="header">Manage Participants</div> <div class="description"> Add/Remove/Promote/Demote Participants </div> </div> </div> <!-- Modal AccountGroup --> <div class="ui small modal" id="modalGroupAddParticipant"> <i class="close icon"></i> <div class="header"> Manage Participants </div> <div class="content"> <form class="ui form"> <div class="field"> <label>Group ID</label> <input v-model="group" type="text" placeholder="12036322888236XXXX..." aria-label="Group Name"> <input :value="group_id" disabled aria-label="whatsapp_id"> </div> <div class="field"> <label>Participants</label> <div style="display: flex; flex-direction: column; gap: 5px"> <div class="ui action input" :key="index" v-for="(participant, index) in participants"> <input type="number" placeholder="Phone Int Number (6289...)" v-model="participants[index]" aria-label="list participant"> <button class="ui button" @click="handleDeleteParticipant(index)" type="button"> <i class="minus circle icon"></i> </button> </div> <div class="field" style="display: flex; flex-direction: column; gap: 3px"> <div> <button class="mini ui primary button" @click="handleAddParticipant" type="button"> <i class="plus icon"></i> Option </button> </div> </div> </div> </div> <div class="field"> <label>Action</label> <select v-model="action" class="ui dropdown" aria-label="Action"> <option value="add">Add to group</option> <option value="remove">Remove from group</option> <option value="promote">Promote to admin</option> <option value="demote">Demote from admin</option> </select> </div> </form> </div> <div class="actions"> <button class="ui approve positive right labeled icon button" :class="{'loading': this.loading, 'disabled': !this.isValidForm() || this.loading}" @click.prevent="handleSubmit" type="button"> Submit <i class="send icon"></i> </button> </div> </div> `, };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/samihalawa/whatsapp-go-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server