Page MenuHomePhorge

D12764.1765133237.diff
No OneTemporary

Size
1 KB
Referenced Files
None
Subscribers
None

D12764.1765133237.diff

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

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)

Event Timeline