Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/updaters/thread-updaters.js
Show First 20 Lines • Show All 883 Lines • ▼ Show 20 Lines | ): Promise<void> { | ||||
const pinTimeValue = action === 'pin' ? Date.now() : null; | const pinTimeValue = action === 'pin' ? Date.now() : null; | ||||
const togglePinQuery = SQL` | const togglePinQuery = SQL` | ||||
UPDATE messages | UPDATE messages | ||||
SET pinned = ${pinnedValue}, pin_time = ${pinTimeValue} | SET pinned = ${pinnedValue}, pin_time = ${pinTimeValue} | ||||
WHERE id = ${messageID} AND thread = ${threadID} | WHERE id = ${messageID} AND thread = ${threadID} | ||||
`; | `; | ||||
await dbQuery(togglePinQuery); | |||||
const messageData = { | const messageData = { | ||||
type: messageTypes.TOGGLE_PIN, | type: messageTypes.TOGGLE_PIN, | ||||
threadID, | threadID, | ||||
targetMessageID: messageID, | targetMessageID: messageID, | ||||
action, | action, | ||||
pinnedContent: getPinnedContentFromMessage(targetMessage), | pinnedContent: getPinnedContentFromMessage(targetMessage), | ||||
creatorID: viewer.userID, | creatorID: viewer.userID, | ||||
time: Date.now(), | time: Date.now(), | ||||
}; | }; | ||||
await createMessages(viewer, [messageData]); | let updateThreadQuery; | ||||
if (action === 'pin') { | |||||
updateThreadQuery = SQL` | |||||
UPDATE threads | |||||
SET pinned_count = pinned_count + 1 | |||||
WHERE id = ${threadID} | |||||
`; | |||||
} else { | |||||
updateThreadQuery = SQL` | |||||
UPDATE threads | |||||
SET pinned_count = pinned_count - 1 | |||||
WHERE id = ${threadID} | |||||
`; | |||||
} | |||||
const [{ threadInfos: serverThreadInfos }] = await Promise.all([ | |||||
fetchServerThreadInfos(SQL`t.id = ${threadID}`), | |||||
dbQuery(togglePinQuery), | |||||
dbQuery(updateThreadQuery), | |||||
createMessages(viewer, [messageData]), | |||||
]); | |||||
const time = Date.now(); | |||||
const updates = []; | |||||
for (const member of serverThreadInfos[threadID].members) { | |||||
updates.push({ | |||||
userID: member.id, | |||||
time, | |||||
threadID, | |||||
type: updateTypes.UPDATE_THREAD, | |||||
}); | |||||
} | |||||
await createUpdates(updates); | |||||
} | } | ||||
export { | export { | ||||
updateRole, | updateRole, | ||||
removeMembers, | removeMembers, | ||||
leaveThread, | leaveThread, | ||||
updateThread, | updateThread, | ||||
joinThread, | joinThread, | ||||
updateThreadMembers, | updateThreadMembers, | ||||
toggleMessagePinForThread, | toggleMessagePinForThread, | ||||
}; | }; |