wechaty-puppet
Version:
Abstract Puppet for Wechaty
80 lines • 3.07 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.sayableTypes = exports.sayablePayloads = void 0;
/* eslint-disable sort-keys */
const typesafe_actions_1 = require("typesafe-actions");
const message_js_1 = require("./message.js");
const payloadContact = (contactId) => ({ contactId });
const payloadFilebox = (filebox) => ({ filebox });
const payloadText = (text, mentions = []) => ({ text, mentions });
/**
* expand/merge the payload altogether
*/
const payloadLocation = (locationPayload) => ({ ...locationPayload });
const payloadMiniProgram = (miniProgramPayload) => ({ ...miniProgramPayload });
const payloadUrlLink = (urlLinkPayload) => ({ ...urlLinkPayload });
const payloadPost = (postPayload) => ({ ...postPayload });
/**
* using `types` as a static typed string name list for `createAction`
*
* Huan(202201): if we remove the `(() => ({}))()`, then the typing will fail.
* FIXME: remove the `(() => ({}))()` after we fix the issue.
*/
const sayableTypes = (() => ({
...Object.keys(message_js_1.MessageType)
.filter(k => isNaN(Number(k)))
.reduce((acc, cur) => ({
...acc,
[cur]: cur,
}), {}),
}))();
exports.sayableTypes = sayableTypes;
/**
* Simple data
*/
const contact = (0, typesafe_actions_1.createAction)(sayableTypes.Contact, payloadContact)();
const text = (0, typesafe_actions_1.createAction)(sayableTypes.Text, payloadText)();
// (conversationId: string, text: string, mentionIdList?: string[]) => ({ conversationId, mentionIdList, text }
/**
* FileBoxs
*/
const attatchment = (0, typesafe_actions_1.createAction)(sayableTypes.Attachment, payloadFilebox)();
const audio = (0, typesafe_actions_1.createAction)(sayableTypes.Audio, payloadFilebox)();
const emoticon = (0, typesafe_actions_1.createAction)(sayableTypes.Emoticon, payloadFilebox)();
const image = (0, typesafe_actions_1.createAction)(sayableTypes.Image, payloadFilebox)();
const video = (0, typesafe_actions_1.createAction)(sayableTypes.Video, payloadFilebox)();
/**
* Payload data
*/
const location = (0, typesafe_actions_1.createAction)(sayableTypes.Location, payloadLocation)();
const miniProgram = (0, typesafe_actions_1.createAction)(sayableTypes.MiniProgram, payloadMiniProgram)();
const url = (0, typesafe_actions_1.createAction)(sayableTypes.Url, payloadUrlLink)();
const post = (0, typesafe_actions_1.createAction)(sayableTypes.Post, payloadPost)();
/**
* Huan(202201): Recursive type references
* @link https://github.com/microsoft/TypeScript/pull/33050#issuecomment-1002455128
*/
const sayablePayloadsNoPost = {
attatchment,
audio,
contact,
emoticon,
image,
location,
miniProgram,
text,
url,
video,
};
/**
*
* Huan(202201): Recursive type references
* @link https://github.com/microsoft/TypeScript/pull/33050#issuecomment-1002455128
* @link https://github.com/wechaty/puppet/issues/180
*/
const sayablePayloads = {
...sayablePayloadsNoPost,
post,
};
exports.sayablePayloads = sayablePayloads;
//# sourceMappingURL=sayable.js.map
;