Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32508948
D9865.1767091528.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D9865.1767091528.diff
View Options
diff --git a/keyserver/src/fetchers/message-fetchers.js b/keyserver/src/fetchers/message-fetchers.js
--- a/keyserver/src/fetchers/message-fetchers.js
+++ b/keyserver/src/fetchers/message-fetchers.js
@@ -141,7 +141,7 @@
collapseQuery.append(SQL`ORDER BY m.time DESC, m.id DESC`);
const [collapseResult] = await dbQuery(collapseQuery);
- const rowsByUser = new Map();
+ const rowsByUser = new Map<string, Array<MessageSQLResultRow>>();
for (const row of collapseResult) {
const user = row.user.toString();
const currentRowsForUser = rowsByUser.get(user);
@@ -158,7 +158,13 @@
for (const message of messages) {
const { rawMessageInfo, rows } = message;
const [row] = rows;
- const info = usersToCollapseKeysToInfo[row.user][row.collapse_key];
+ const userID = row.user.toString();
+ const collapseKey = row.collapse_key;
+ invariant(
+ collapseKey !== null && collapseKey !== undefined,
+ 'We expect all collapseQuery results to match on a collapseKey',
+ );
+ const info = usersToCollapseKeysToInfo[userID][collapseKey];
info.existingMessageInfos.push(rawMessageInfo);
}
}
@@ -178,20 +184,39 @@
return usersToCollapsableNotifInfo;
}
+type MessageSQLResultRow = {
+ +id: ?number,
+ +threadID: ?number,
+ +content: ?string,
+ +time: ?number,
+ +type: ?number,
+ +creatorID: ?number,
+ +targetMessageID: ?number,
+ +subthread_permissions: ?string,
+ +user: number,
+ +collapse_key: ?string,
+ +uploadID: ?number,
+ +uploadType: ?number,
+ +uploadSecret: ?string,
+ +uploadExtra: ?string,
+};
type MessageSQLResult = $ReadOnlyArray<{
- rawMessageInfo: RawMessageInfo,
- rows: $ReadOnlyArray<Object>,
+ +rawMessageInfo: RawMessageInfo,
+ +rows: $ReadOnlyArray<MessageSQLResultRow>,
}>;
function parseMessageSQLResult(
- rows: $ReadOnlyArray<Object>,
+ rows: $ReadOnlyArray<MessageSQLResultRow>,
derivedMessages: $ReadOnlyMap<
string,
RawComposableMessageInfo | RawRobotextMessageInfo,
>,
viewer?: Viewer,
): MessageSQLResult {
- const rowsByID = new Map();
+ const rowsByID = new Map<string, Array<MessageSQLResultRow>>();
for (const row of rows) {
+ if (!row.id) {
+ continue;
+ }
const id = row.id.toString();
const currentRowsForID = rowsByID.get(id);
if (currentRowsForID) {
@@ -345,7 +370,7 @@
const [result] = await dbQuery(query);
const derivedMessages = await fetchDerivedMessages(result, viewer);
- const messages = await parseMessageSQLResult(result, derivedMessages, viewer);
+ const messages = parseMessageSQLResult(result, derivedMessages, viewer);
const rawMessageInfos = [];
const threadToMessageCount = new Map<string, number>();
@@ -569,7 +594,7 @@
`);
const [result] = await dbQuery(query);
const derivedMessages = await fetchDerivedMessages(result, viewer);
- const messages = await parseMessageSQLResult(result, derivedMessages, viewer);
+ const messages = parseMessageSQLResult(result, derivedMessages, viewer);
const rawMessageInfos = [];
let currentThreadID = null;
@@ -765,7 +790,7 @@
fetchMessageRowsByIDs([...requiredIDs]),
fetchLatestEditMessageContentByIDs([...requiredIDs]),
]);
- const messages = await parseMessageSQLResult(result, new Map(), viewer);
+ const messages = parseMessageSQLResult(result, new Map(), viewer);
for (const message of messages) {
let { rawMessageInfo } = message;
@@ -915,7 +940,7 @@
if (resultRows.length === 0) {
return [];
}
- const SQLResult = await parseMessageSQLResult(resultRows, messages, viewer);
+ const SQLResult = parseMessageSQLResult(resultRows, messages, viewer);
return SQLResult.map(item => item.rawMessageInfo);
}
@@ -923,7 +948,7 @@
rows: $ReadOnlyArray<Object>,
viewer?: Viewer,
): Promise<$ReadOnlyArray<RawMessageInfo>> {
- const parsedResults = await parseMessageSQLResult(rows, new Map(), viewer);
+ const parsedResults = parseMessageSQLResult(rows, new Map(), viewer);
const rawMessageInfoMap = new Map<
string,
RawComposableMessageInfo | RawRobotextMessageInfo,
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Dec 30, 10:45 AM (4 m, 52 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5867011
Default Alt Text
D9865.1767091528.diff (4 KB)
Attached To
Mode
D9865: [Flow202][keyserver][skip-ci] [16/x] Address type errors in message-fetchers.js
Attached
Detach File
Event Timeline
Log In to Comment