@warriorteam/redai-zalo-sdk
Version:
Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account v3.0, ZNS with Full Type Safety, Consultation Service, Broadcast Service, Group Messaging with List APIs, Social APIs, Enhanced Article Management, Promotion Service v3.0 with Multip
192 lines • 6.73 kB
JavaScript
;
/**
* Type guard utilities for Zalo SDK webhook events
*
* This file provides type-safe functions to check webhook event types
* and narrow down TypeScript types for better development experience.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.isUserSendGroupTextEvent = isUserSendGroupTextEvent;
exports.isUserSendGroupImageEvent = isUserSendGroupImageEvent;
exports.isUserSendGroupVideoEvent = isUserSendGroupVideoEvent;
exports.isUserSendGroupAudioEvent = isUserSendGroupAudioEvent;
exports.isUserSendGroupFileEvent = isUserSendGroupFileEvent;
exports.isUserGroupMessageEvent = isUserGroupMessageEvent;
exports.isOASendTextEvent = isOASendTextEvent;
exports.isOASendImageEvent = isOASendImageEvent;
exports.isOASendFileEvent = isOASendFileEvent;
exports.isOASendStickerEvent = isOASendStickerEvent;
exports.isOASendGifEvent = isOASendGifEvent;
exports.isOASendGroupTextEvent = isOASendGroupTextEvent;
exports.isOASendGroupImageEvent = isOASendGroupImageEvent;
exports.isOASendGroupFileEvent = isOASendGroupFileEvent;
exports.isOASendGroupStickerEvent = isOASendGroupStickerEvent;
exports.isOASendGroupGifEvent = isOASendGroupGifEvent;
exports.isOAMessageEvent = isOAMessageEvent;
exports.isUserMessageEvent = isUserMessageEvent;
exports.hasAttachments = hasAttachments;
exports.isFromGroup = isFromGroup;
exports.isFromPersonal = isFromPersonal;
const webhook_1 = require("../types/webhook");
/**
* Check if event is a user sending text message to group
*/
function isUserSendGroupTextEvent(event) {
return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_TEXT;
}
/**
* Check if event is a user sending image message to group
*/
function isUserSendGroupImageEvent(event) {
return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_IMAGE;
}
/**
* Check if event is a user sending video message to group
*/
function isUserSendGroupVideoEvent(event) {
return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_VIDEO;
}
/**
* Check if event is a user sending audio message to group
*/
function isUserSendGroupAudioEvent(event) {
return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_AUDIO;
}
/**
* Check if event is a user sending file to group
*/
function isUserSendGroupFileEvent(event) {
return event.event_name === webhook_1.WebhookEventName.USER_SEND_GROUP_FILE;
}
/**
* Check if event is any user group message event
*/
function isUserGroupMessageEvent(event) {
return [
webhook_1.WebhookEventName.USER_SEND_GROUP_TEXT,
webhook_1.WebhookEventName.USER_SEND_GROUP_IMAGE,
webhook_1.WebhookEventName.USER_SEND_GROUP_VIDEO,
webhook_1.WebhookEventName.USER_SEND_GROUP_AUDIO,
webhook_1.WebhookEventName.USER_SEND_GROUP_FILE,
].includes(event.event_name);
}
// ===== OA MESSAGE TYPE GUARDS =====
/**
* Check if event is OA sending text message to user
*/
function isOASendTextEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_TEXT;
}
/**
* Check if event is OA sending image message to user
*/
function isOASendImageEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_IMAGE;
}
/**
* Check if event is OA sending file to user
*/
function isOASendFileEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_FILE;
}
/**
* Check if event is OA sending sticker to user
*/
function isOASendStickerEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_STICKER;
}
/**
* Check if event is OA sending GIF to user
*/
function isOASendGifEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_GIF;
}
// ===== OA GROUP MESSAGE TYPE GUARDS =====
/**
* Check if event is OA sending text message to group
*/
function isOASendGroupTextEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_TEXT;
}
/**
* Check if event is OA sending image to group
*/
function isOASendGroupImageEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_IMAGE;
}
/**
* Check if event is OA sending file to group
*/
function isOASendGroupFileEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_FILE;
}
/**
* Check if event is OA sending sticker to group
*/
function isOASendGroupStickerEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_STICKER;
}
/**
* Check if event is OA sending GIF to group
*/
function isOASendGroupGifEvent(event) {
return event.event_name === webhook_1.WebhookEventName.OA_SEND_GROUP_GIF;
}
// ===== COMBINED TYPE GUARDS =====
/**
* Check if event is any OA message event (personal or group)
*/
function isOAMessageEvent(event) {
return [
webhook_1.WebhookEventName.OA_SEND_TEXT,
webhook_1.WebhookEventName.OA_SEND_IMAGE,
webhook_1.WebhookEventName.OA_SEND_FILE,
webhook_1.WebhookEventName.OA_SEND_STICKER,
webhook_1.WebhookEventName.OA_SEND_GIF,
webhook_1.WebhookEventName.OA_SEND_GROUP_TEXT,
webhook_1.WebhookEventName.OA_SEND_GROUP_IMAGE,
webhook_1.WebhookEventName.OA_SEND_GROUP_FILE,
webhook_1.WebhookEventName.OA_SEND_GROUP_STICKER,
webhook_1.WebhookEventName.OA_SEND_GROUP_GIF,
].includes(event.event_name);
}
/**
* Check if event is any user message event (personal or group)
*/
function isUserMessageEvent(event) {
return [
webhook_1.WebhookEventName.USER_SEND_TEXT,
webhook_1.WebhookEventName.USER_SEND_IMAGE,
webhook_1.WebhookEventName.USER_SEND_AUDIO,
webhook_1.WebhookEventName.USER_SEND_VIDEO,
webhook_1.WebhookEventName.USER_SEND_FILE,
webhook_1.WebhookEventName.USER_SEND_STICKER,
webhook_1.WebhookEventName.USER_SEND_LOCATION,
webhook_1.WebhookEventName.USER_SEND_GROUP_TEXT,
webhook_1.WebhookEventName.USER_SEND_GROUP_VIDEO,
webhook_1.WebhookEventName.USER_SEND_GROUP_AUDIO,
webhook_1.WebhookEventName.USER_SEND_GROUP_FILE,
].includes(event.event_name);
}
/**
* Check if event has message attachments
*/
function hasAttachments(event) {
if ('message' in event && event.message && 'attachments' in event.message) {
return Array.isArray(event.message.attachments) && event.message.attachments.length > 0;
}
return false;
}
/**
* Check if event is from a group context
*/
function isFromGroup(event) {
return 'group_id' in event || event.event_name.includes('group');
}
/**
* Check if event is from a personal context
*/
function isFromPersonal(event) {
return !isFromGroup(event);
}
//# sourceMappingURL=type-guards.js.map