Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/creators/thread-creator.js
Show All 27 Lines | |||||
import createIDs from './id-creator.js'; | import createIDs from './id-creator.js'; | ||||
import createMessages from './message-creator.js'; | import createMessages from './message-creator.js'; | ||||
import { | import { | ||||
createInitialRolesForNewThread, | createInitialRolesForNewThread, | ||||
getRolePermissionBlobs, | getRolePermissionBlobs, | ||||
} from './role-creator.js'; | } from './role-creator.js'; | ||||
import type { UpdatesForCurrentSession } from './update-creator.js'; | import type { UpdatesForCurrentSession } from './update-creator.js'; | ||||
import { dbQuery, SQL } from '../database/database.js'; | import { dbQuery, SQL } from '../database/database.js'; | ||||
import { fetchMessageInfoByID } from '../fetchers/message-fetchers.js'; | import { | ||||
fetchLatestEditMessageContentByID, | |||||
fetchMessageInfoByID, | |||||
} from '../fetchers/message-fetchers.js'; | |||||
import { | import { | ||||
determineThreadAncestry, | determineThreadAncestry, | ||||
personalThreadQuery, | personalThreadQuery, | ||||
} from '../fetchers/thread-fetchers.js'; | } from '../fetchers/thread-fetchers.js'; | ||||
import { | import { | ||||
checkThreadPermission, | checkThreadPermission, | ||||
validateCandidateMembers, | validateCandidateMembers, | ||||
} from '../fetchers/thread-permission-fetchers.js'; | } from '../fetchers/thread-permission-fetchers.js'; | ||||
▲ Show 20 Lines • Show All 371 Lines • ▼ Show 20 Lines | messageDatas.push({ | ||||
}, | }, | ||||
}); | }); | ||||
} else { | } else { | ||||
invariant(parentThreadID, 'parentThreadID should be set for sidebar'); | invariant(parentThreadID, 'parentThreadID should be set for sidebar'); | ||||
if (!sourceMessage || sourceMessage.type === messageTypes.SIDEBAR_SOURCE) { | if (!sourceMessage || sourceMessage.type === messageTypes.SIDEBAR_SOURCE) { | ||||
throw new ServerError('invalid_parameters'); | throw new ServerError('invalid_parameters'); | ||||
} | } | ||||
let editedSourceMessage = sourceMessage; | |||||
if (sourceMessageID && sourceMessage.type === messageTypes.TEXT) { | |||||
const editMessageContent = await fetchLatestEditMessageContentByID( | |||||
sourceMessageID, | |||||
); | |||||
if (editMessageContent) { | |||||
editedSourceMessage = { | |||||
...sourceMessage, | |||||
text: editMessageContent.text, | |||||
}; | |||||
} | |||||
} | |||||
messageDatas.push( | messageDatas.push( | ||||
{ | { | ||||
type: messageTypes.SIDEBAR_SOURCE, | type: messageTypes.SIDEBAR_SOURCE, | ||||
threadID: id, | threadID: id, | ||||
creatorID: viewer.userID, | creatorID: viewer.userID, | ||||
time, | time, | ||||
sourceMessage, | sourceMessage: editedSourceMessage, | ||||
}, | }, | ||||
{ | { | ||||
type: messageTypes.CREATE_SIDEBAR, | type: messageTypes.CREATE_SIDEBAR, | ||||
threadID: id, | threadID: id, | ||||
creatorID: viewer.userID, | creatorID: viewer.userID, | ||||
time, | time, | ||||
sourceMessageAuthorID: sourceMessage.creatorID, | sourceMessageAuthorID: sourceMessage.creatorID, | ||||
initialThreadState: { | initialThreadState: { | ||||
▲ Show 20 Lines • Show All 70 Lines • Show Last 20 Lines |