35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import type { ChannelMessageActionName } from "./types.js";
|
|
|
|
export type BlueBubblesActionSpec = {
|
|
gate: string;
|
|
groupOnly?: boolean;
|
|
unsupportedOnMacOS26?: boolean;
|
|
};
|
|
|
|
export const BLUEBUBBLES_ACTIONS = {
|
|
react: { gate: "reactions" },
|
|
edit: { gate: "edit", unsupportedOnMacOS26: true },
|
|
unsend: { gate: "unsend" },
|
|
reply: { gate: "reply" },
|
|
sendWithEffect: { gate: "sendWithEffect" },
|
|
renameGroup: { gate: "renameGroup", groupOnly: true },
|
|
setGroupIcon: { gate: "setGroupIcon", groupOnly: true },
|
|
addParticipant: { gate: "addParticipant", groupOnly: true },
|
|
removeParticipant: { gate: "removeParticipant", groupOnly: true },
|
|
leaveGroup: { gate: "leaveGroup", groupOnly: true },
|
|
sendAttachment: { gate: "sendAttachment" },
|
|
} as const satisfies Partial<Record<ChannelMessageActionName, BlueBubblesActionSpec>>;
|
|
|
|
const BLUEBUBBLES_ACTION_SPECS = BLUEBUBBLES_ACTIONS as Record<
|
|
keyof typeof BLUEBUBBLES_ACTIONS,
|
|
BlueBubblesActionSpec
|
|
>;
|
|
|
|
export const BLUEBUBBLES_ACTION_NAMES = Object.keys(
|
|
BLUEBUBBLES_ACTIONS,
|
|
) as (keyof typeof BLUEBUBBLES_ACTIONS)[];
|
|
|
|
export const BLUEBUBBLES_GROUP_ACTIONS = new Set<ChannelMessageActionName>(
|
|
BLUEBUBBLES_ACTION_NAMES.filter((action) => BLUEBUBBLES_ACTION_SPECS[action]?.groupOnly),
|
|
);
|