diff --git a/src/d2m/actions/close-poll.js b/src/d2m/actions/poll-end.js similarity index 97% rename from src/d2m/actions/close-poll.js rename to src/d2m/actions/poll-end.js index d97b7b4..55a4aec 100644 --- a/src/d2m/actions/close-poll.js +++ b/src/d2m/actions/poll-end.js @@ -13,8 +13,8 @@ const api = sync.require("../../matrix/api") const registerUser = sync.require("./register-user") /** @type {import("./create-room")} */ const createRoom = sync.require("../actions/create-room") -/** @type {import("./add-or-remove-vote.js")} */ -const vote = sync.require("../actions/add-or-remove-vote") +/** @type {import("./poll-vote")} */ +const vote = sync.require("../actions/poll-vote") /** @type {import("../../m2d/converters/poll-components")} */ const pollComponents = sync.require("../../m2d/converters/poll-components") /** @type {import("../../m2d/actions/channel-webhook")} */ @@ -64,7 +64,7 @@ async function getAllVotesOnAnswer(channelID, messageID, answerID){ * @param {typeof import("../../../test/data.js")["poll_close"]} closeMessage * @param {DiscordTypes.APIGuild} guild */ -async function closePoll(closeMessage, guild){ +async function endPoll(closeMessage, guild){ const pollCloseObject = closeMessage.embeds[0] const pollMessageID = closeMessage.message_reference.message_id @@ -148,4 +148,4 @@ async function closePoll(closeMessage, guild){ } } -module.exports.closePoll = closePoll +module.exports.endPoll = endPoll diff --git a/src/d2m/actions/add-or-remove-vote.js b/src/d2m/actions/poll-vote.js similarity index 100% rename from src/d2m/actions/add-or-remove-vote.js rename to src/d2m/actions/poll-vote.js diff --git a/src/d2m/actions/send-message.js b/src/d2m/actions/send-message.js index b8b0cda..3fb8d20 100644 --- a/src/d2m/actions/send-message.js +++ b/src/d2m/actions/send-message.js @@ -17,8 +17,8 @@ const registerPkUser = sync.require("./register-pk-user") const registerWebhookUser = sync.require("./register-webhook-user") /** @type {import("../actions/create-room")} */ const createRoom = sync.require("../actions/create-room") -/** @type {import("../actions/close-poll")} */ -const closePoll = sync.require("../actions/close-poll") +/** @type {import("../actions/poll-end")} */ +const pollEnd = sync.require("../actions/poll-end") /** @type {import("../../discord/utils")} */ const dUtils = sync.require("../../discord/utils") /** @type {import("../../m2d/actions/channel-webhook")} */ @@ -103,7 +103,7 @@ async function sendMessage(message, channel, guild, row) { } if (message.type === DiscordTypes.MessageType.PollResult) { // We might need to send a message to Discord (if there were any Matrix-side votes). - const detailedResultsMessage = await closePoll.closePoll(message, guild) + const detailedResultsMessage = await pollEnd.endPoll(message, guild) if (detailedResultsMessage) { const threadParent = select("channel_room", "thread_parent", {channel_id: message.channel_id}).pluck().get() const channelID = threadParent ? threadParent : message.channel_id diff --git a/src/d2m/event-dispatcher.js b/src/d2m/event-dispatcher.js index 599db49..e8c20a6 100644 --- a/src/d2m/event-dispatcher.js +++ b/src/d2m/event-dispatcher.js @@ -32,8 +32,8 @@ const speedbump = sync.require("./actions/speedbump") const retrigger = sync.require("./actions/retrigger") /** @type {import("./actions/set-presence")} */ const setPresence = sync.require("./actions/set-presence") -/** @type {import("./actions/add-or-remove-vote")} */ -const vote = sync.require("./actions/add-or-remove-vote") +/** @type {import("./actions/poll-vote")} */ +const vote = sync.require("./actions/poll-vote") /** @type {import("../m2d/event-dispatcher")} */ const matrixEventDispatcher = sync.require("../m2d/event-dispatcher") /** @type {import("../discord/interactions/matrix-info")} */ diff --git a/src/discord/interactions/poll.js b/src/discord/interactions/poll.js index 94ecb4c..0a4689d 100644 --- a/src/discord/interactions/poll.js +++ b/src/discord/interactions/poll.js @@ -12,8 +12,8 @@ const api = sync.require("../../matrix/api") const utils = sync.require("../../matrix/utils") /** @type {import("../../m2d/converters/poll-components")} */ const pollComponents = sync.require("../../m2d/converters/poll-components") -/** @type {import("../../d2m/actions/add-or-remove-vote")} */ -const vote = sync.require("../../d2m/actions/add-or-remove-vote") +/** @type {import("../../d2m/actions/poll-vote")} */ +const vote = sync.require("../../d2m/actions/poll-vote") /** * @param {DiscordTypes.APIMessageComponentButtonInteraction} interaction @@ -34,7 +34,7 @@ async function* _interact({data, message, member, user}, {api}) { const maxSelections = pollRow.max_selections const alreadySelected = select("poll_vote", "matrix_option", {discord_or_matrix_user_id: userID, message_id: message.id}).pluck().all() - + // Show modal (if no capacity or if requested) if (data.custom_id === "POLL_VOTE" || (maxSelections > 1 && alreadySelected.length === maxSelections)) { const options = select("poll_option", ["matrix_option", "option_text", "seq"], {message_id: message.id}, "ORDER BY seq").all().map(option => ({ @@ -91,7 +91,7 @@ async function* _interact({data, message, member, user}, {api}) { db.prepare("INSERT OR IGNORE INTO poll_vote (discord_or_matrix_user_id, message_id, matrix_option) VALUES (?, ?, ?)").run(userID, message.id, option) } })() - + // Update counts on message yield {createInteractionResponse: { type: DiscordTypes.InteractionResponseType.UpdateMessage, @@ -105,7 +105,7 @@ async function* _interact({data, message, member, user}, {api}) { const optionPrefix = "POLL_OPTION#" // we use a prefix to prevent someone from sending a Matrix poll that intentionally collides with other elements of the embed const matrixOption = select("poll_option", "matrix_option", {matrix_option: data.custom_id.substring(optionPrefix.length), message_id: message.id}).pluck().get() assert(matrixOption) - + // Remove a vote if (alreadySelected.includes(matrixOption)) { db.prepare("DELETE FROM poll_vote WHERE discord_or_matrix_user_id = ? AND message_id = ? AND matrix_option = ?").run(userID, message.id, matrixOption)