Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/updaters/thread-updaters.js
Show All 19 Lines | import { | ||||
type ChangeThreadSettingsResult, | type ChangeThreadSettingsResult, | ||||
type RemoveMembersRequest, | type RemoveMembersRequest, | ||||
type LeaveThreadRequest, | type LeaveThreadRequest, | ||||
type LeaveThreadResult, | type LeaveThreadResult, | ||||
type UpdateThreadRequest, | type UpdateThreadRequest, | ||||
type ServerThreadJoinRequest, | type ServerThreadJoinRequest, | ||||
type ThreadJoinResult, | type ThreadJoinResult, | ||||
type ToggleMessagePinRequest, | type ToggleMessagePinRequest, | ||||
type ToggleMessagePinResult, | |||||
threadPermissions, | threadPermissions, | ||||
threadTypes, | threadTypes, | ||||
} from 'lib/types/thread-types.js'; | } from 'lib/types/thread-types.js'; | ||||
import { updateTypes } from 'lib/types/update-types.js'; | import { updateTypes } from 'lib/types/update-types.js'; | ||||
import { ServerError } from 'lib/utils/errors.js'; | import { ServerError } from 'lib/utils/errors.js'; | ||||
import { promiseAll } from 'lib/utils/promises.js'; | import { promiseAll } from 'lib/utils/promises.js'; | ||||
import { firstLine } from 'lib/utils/string-utils.js'; | import { firstLine } from 'lib/utils/string-utils.js'; | ||||
▲ Show 20 Lines • Show All 821 Lines • ▼ Show 20 Lines | async function updateThreadMembers(viewer: Viewer) { | ||||
} | } | ||||
await createUpdates(updateDatas); | await createUpdates(updateDatas); | ||||
} | } | ||||
async function toggleMessagePinForThread( | async function toggleMessagePinForThread( | ||||
viewer: Viewer, | viewer: Viewer, | ||||
request: ToggleMessagePinRequest, | request: ToggleMessagePinRequest, | ||||
): Promise<void> { | ): Promise<ToggleMessagePinResult> { | ||||
const { messageID, action } = request; | const { messageID, action } = request; | ||||
const targetMessage = await fetchMessageInfoByID(viewer, messageID); | const targetMessage = await fetchMessageInfoByID(viewer, messageID); | ||||
if (!targetMessage) { | if (!targetMessage) { | ||||
throw new ServerError('invalid_parameters'); | throw new ServerError('invalid_parameters'); | ||||
} | } | ||||
const { threadID } = targetMessage; | const { threadID } = targetMessage; | ||||
Show All 39 Lines | updateThreadQuery = SQL` | ||||
WHERE id = ${threadID} | WHERE id = ${threadID} | ||||
`; | `; | ||||
} | } | ||||
const [{ threadInfos: serverThreadInfos }] = await Promise.all([ | const [{ threadInfos: serverThreadInfos }] = await Promise.all([ | ||||
fetchServerThreadInfos(SQL`t.id = ${threadID}`), | fetchServerThreadInfos(SQL`t.id = ${threadID}`), | ||||
dbQuery(togglePinQuery), | dbQuery(togglePinQuery), | ||||
dbQuery(updateThreadQuery), | dbQuery(updateThreadQuery), | ||||
createMessages(viewer, [messageData]), | |||||
]); | ]); | ||||
const newMessageInfos = await createMessages(viewer, [messageData]); | |||||
const time = Date.now(); | const time = Date.now(); | ||||
const updates = []; | const updates = []; | ||||
for (const member of serverThreadInfos[threadID].members) { | for (const member of serverThreadInfos[threadID].members) { | ||||
updates.push({ | updates.push({ | ||||
userID: member.id, | userID: member.id, | ||||
time, | time, | ||||
threadID, | threadID, | ||||
type: updateTypes.UPDATE_THREAD, | type: updateTypes.UPDATE_THREAD, | ||||
}); | }); | ||||
} | } | ||||
await createUpdates(updates); | await createUpdates(updates); | ||||
return { | |||||
newMessageInfos, | |||||
threadID, | |||||
}; | |||||
} | } | ||||
export { | export { | ||||
updateRole, | updateRole, | ||||
removeMembers, | removeMembers, | ||||
leaveThread, | leaveThread, | ||||
updateThread, | updateThread, | ||||
joinThread, | joinThread, | ||||
updateThreadMembers, | updateThreadMembers, | ||||
toggleMessagePinForThread, | toggleMessagePinForThread, | ||||
}; | }; |