Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/fetchers/message-fetchers.js
Show All 29 Lines | import { | ||||
SQL, | SQL, | ||||
mergeOrConditions, | mergeOrConditions, | ||||
mergeAndConditions, | mergeAndConditions, | ||||
} from '../database/database'; | } from '../database/database'; | ||||
import type { SQLStatementType } from '../database/types'; | import type { SQLStatementType } from '../database/types'; | ||||
import type { PushInfo } from '../push/send'; | import type { PushInfo } from '../push/send'; | ||||
import type { Viewer } from '../session/viewer'; | import type { Viewer } from '../session/viewer'; | ||||
import { creationString, localIDFromCreationString } from '../utils/idempotent'; | import { creationString, localIDFromCreationString } from '../utils/idempotent'; | ||||
import { mediaFromRow } from './upload-fetchers'; | import { | ||||
constructMediaFromMediaMessageContentsAndUploadRows, | |||||
mediaFromRow, | |||||
} from './upload-fetchers'; | |||||
export type CollapsableNotifInfo = { | export type CollapsableNotifInfo = { | ||||
collapseKey: ?string, | collapseKey: ?string, | ||||
existingMessageInfos: RawMessageInfo[], | existingMessageInfos: RawMessageInfo[], | ||||
newMessageInfos: RawMessageInfo[], | newMessageInfos: RawMessageInfo[], | ||||
}; | }; | ||||
export type FetchCollapsableNotifsResult = { | export type FetchCollapsableNotifsResult = { | ||||
[userID: string]: CollapsableNotifInfo[], | [userID: string]: CollapsableNotifInfo[], | ||||
▲ Show 20 Lines • Show All 176 Lines • ▼ Show 20 Lines | const rows = rawRows.map(row => ({ | ||||
...row, | ...row, | ||||
subthread_permissions: JSON.parse(row.subthread_permissions), | subthread_permissions: JSON.parse(row.subthread_permissions), | ||||
})); | })); | ||||
const type = mostRecentRowType(rows); | const type = mostRecentRowType(rows); | ||||
const messageSpec = messageSpecs[type]; | const messageSpec = messageSpecs[type]; | ||||
if (type === messageTypes.IMAGES || type === messageTypes.MULTIMEDIA) { | if (type === messageTypes.IMAGES || type === messageTypes.MULTIMEDIA) { | ||||
const media = rows.filter(row => row.uploadID).map(mediaFromRow); | let media; | ||||
if (type === messageTypes.MULTIMEDIA) { | |||||
const mediaMessageContents = JSON.parse(rows[0].content); | |||||
media = constructMediaFromMediaMessageContentsAndUploadRows( | |||||
mediaMessageContents, | |||||
rows, | |||||
); | |||||
} else { | |||||
media = rows.filter(row => row.uploadID).map(mediaFromRow); | |||||
} | |||||
const [row] = rows; | const [row] = rows; | ||||
const localID = localIDFromCreationString(viewer, row.creation); | const localID = localIDFromCreationString(viewer, row.creation); | ||||
invariant( | invariant( | ||||
messageSpec.rawMessageInfoFromServerDBRow, | messageSpec.rawMessageInfoFromServerDBRow, | ||||
`multimedia message spec should have rawMessageInfoFromServerDBRow`, | `multimedia message spec should have rawMessageInfoFromServerDBRow`, | ||||
); | ); | ||||
return messageSpec.rawMessageInfoFromServerDBRow(row, { | return messageSpec.rawMessageInfoFromServerDBRow(row, { | ||||
media, | media, | ||||
▲ Show 20 Lines • Show All 479 Lines • Show Last 20 Lines |