diff --git a/keyserver/src/creators/thread-creator.js b/keyserver/src/creators/thread-creator.js --- a/keyserver/src/creators/thread-creator.js +++ b/keyserver/src/creators/thread-creator.js @@ -51,6 +51,7 @@ recalculateThreadPermissions, commitMembershipChangeset, getChangesetCommitResultForExistingThread, + type MembershipChangeset, } from '../updaters/thread-permission-updaters.js'; import { joinThread } from '../updaters/thread-updaters.js'; import RelationshipChangeset from '../utils/relationship-changeset.js'; @@ -328,16 +329,12 @@ await dbQuery(query); } - let initialMemberPromise; - if (initialMemberIDs) { - initialMemberPromise = changeRole(id, initialMemberIDs, null, { - setNewMembersToUnread: true, - }); - } - let ghostMemberPromise; - if (ghostMemberIDs) { - ghostMemberPromise = changeRole(id, ghostMemberIDs, -1); - } + const initialMemberPromise: Promise = initialMemberIDs + ? changeRole(id, initialMemberIDs, null, { setNewMembersToUnread: true }) + : Promise.resolve(undefined); + const ghostMemberPromise: Promise = ghostMemberIDs + ? changeRole(id, ghostMemberIDs, -1) + : Promise.resolve(undefined); const [ creatorChangeset, diff --git a/keyserver/src/updaters/thread-permission-updaters.js b/keyserver/src/updaters/thread-permission-updaters.js --- a/keyserver/src/updaters/thread-permission-updaters.js +++ b/keyserver/src/updaters/thread-permission-updaters.js @@ -68,7 +68,7 @@ +oldRole: string, }; type MembershipRow = MembershipRowToSave | MembershipRowToDelete; -type Changeset = { +export type MembershipChangeset = { +membershipRows: MembershipRow[], +relationshipChangeset: RelationshipChangeset, }; @@ -90,7 +90,7 @@ userIDs: $ReadOnlyArray, role: string | -1 | 0 | null, options?: ChangeRoleOptions, -): Promise { +): Promise { const intent = role === -1 || role === 0 ? 'leave' : 'join'; const setNewMembersToUnread = options?.setNewMembersToUnread && intent === 'join'; @@ -415,7 +415,7 @@ }; async function updateDescendantPermissions( initialChangedAncestor: ChangedAncestor, -): Promise { +): Promise { const membershipRows = []; const relationshipChangeset = new RelationshipChangeset(); @@ -708,7 +708,7 @@ }; async function recalculateThreadPermissions( threadID: string, -): Promise { +): Promise { const threadQuery = SQL` SELECT type, depth, parent_thread_id, containing_thread_id FROM threads @@ -1069,7 +1069,7 @@ }; async function commitMembershipChangeset( viewer: Viewer, - changeset: Changeset, + changeset: MembershipChangeset, { changedThreadIDs = new Set(), calendarQuery,