Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F32210864
D12764.1765133237.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D12764.1765133237.diff
View Options
diff --git a/lib/hooks/latest-message-edit.js b/lib/hooks/latest-message-edit.js
new file mode 100644
--- /dev/null
+++ b/lib/hooks/latest-message-edit.js
@@ -0,0 +1,57 @@
+// @flow
+
+import * as React from 'react';
+
+import { messageTypes } from '../types/message-types-enum.js';
+import type { RawMessageInfo } from '../types/message-types.js';
+import { getConfig } from '../utils/config.js';
+import { translateClientDBMessageInfoToRawMessageInfo } from '../utils/message-ops-utils.js';
+
+function useGetLatestMessageEdit(): (
+ messageID: string,
+) => Promise<?RawMessageInfo> {
+ const { getRelatedMessages } = getConfig().sqliteAPI;
+ return React.useCallback(
+ async (messageID: string) => {
+ const relatedDBMessages = await getRelatedMessages(messageID);
+ const relatedMessages = relatedDBMessages.map(
+ translateClientDBMessageInfoToRawMessageInfo,
+ );
+
+ // First, get the original message, which should be the last
+ // since the results are sorted on time
+ const originalMessage = relatedMessages.pop();
+ if (!originalMessage) {
+ return undefined;
+ }
+
+ if (originalMessage.id !== messageID) {
+ console.log('last related message is not original message');
+ return undefined;
+ }
+
+ // Edits are only supported for text messages
+ if (originalMessage.type !== messageTypes.TEXT) {
+ return originalMessage;
+ }
+
+ // Next, get the latest edit, if there is one
+ let editedOriginalMessage = originalMessage;
+ for (const relatedMessage of relatedMessages) {
+ if (relatedMessage.type !== messageTypes.EDIT_MESSAGE) {
+ continue;
+ }
+ editedOriginalMessage = {
+ ...originalMessage,
+ text: relatedMessage.text,
+ };
+ break;
+ }
+
+ return editedOriginalMessage;
+ },
+ [getRelatedMessages],
+ );
+}
+
+export { useGetLatestMessageEdit };
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Dec 7, 6:47 PM (16 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5845513
Default Alt Text
D12764.1765133237.diff (1 KB)
Attached To
Mode
D12764: [lib] Introduce useGetLatestMessageEdit
Attached
Detach File
Event Timeline
Log In to Comment