diff --git a/keyserver/src/updaters/thread-updaters.js b/keyserver/src/updaters/thread-updaters.js --- a/keyserver/src/updaters/thread-updaters.js +++ b/keyserver/src/updaters/thread-updaters.js @@ -889,8 +889,6 @@ WHERE id = ${messageID} AND thread = ${threadID} `; - await dbQuery(togglePinQuery); - const messageData = { type: messageTypes.TOGGLE_PIN, threadID, @@ -901,7 +899,39 @@ 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 {