( threadInfo: ThreadInfo, )
| 623 | +numMessagesToFetch?: ?number, |
| 624 | }; |
| 625 | function useFetchMessages( |
| 626 | threadInfo: ThreadInfo, |
| 627 | ): (options?: ?FetchMessagesOptions) => Promise<void> { |
| 628 | const oldestMessageServerID = useOldestMessageServerID(threadInfo.id); |
| 629 | const callFetchMessagesBeforeCursor = useFetchMessagesBeforeCursor(); |
| 630 | const callFetchMostRecentMessages = useFetchMostRecentMessages(); |
| 631 | const dispatchActionPromise = useDispatchActionPromise(); |
| 632 | const farcasterMessageFetching = useFarcasterMessageFetching(); |
| 633 | |
| 634 | React.useEffect(() => { |
| 635 | registerFetchKey(fetchMessagesBeforeCursorActionTypes); |
| 636 | registerFetchKey(fetchMostRecentMessagesActionTypes); |
| 637 | }, []); |
| 638 | |
| 639 | const threadID = threadInfo.id; |
| 640 | const messageIDs = useSelector( |
| 641 | state => state.messageStore.threads[threadID]?.messageIDs, |
| 642 | ); |
| 643 | |
| 644 | return React.useCallback( |
| 645 | async (options?: ?FetchMessagesOptions) => { |
| 646 | const numMessagesToFetch = options?.numMessagesToFetch; |
| 647 | |
| 648 | await threadSpecs[threadInfo.type].protocol().fetchMessages( |
| 649 | { |
| 650 | numMessagesToFetch, |
| 651 | threadID, |
| 652 | currentNumberOfFetchedMessages: messageIDs?.length ?? 0, |
| 653 | oldestMessageServerID, |
| 654 | }, |
| 655 | { |
| 656 | fetchMessagesFromDB, |
| 657 | keyserverFetchMessagesBeforeCursor: callFetchMessagesBeforeCursor, |
| 658 | keyserverFetchMostRecentMessages: callFetchMostRecentMessages, |
| 659 | dispatchActionPromise, |
| 660 | farcasterMessageFetching, |
| 661 | }, |
| 662 | ); |
| 663 | }, |
| 664 | [ |
| 665 | callFetchMessagesBeforeCursor, |
| 666 | callFetchMostRecentMessages, |
| 667 | dispatchActionPromise, |
| 668 | farcasterMessageFetching, |
| 669 | messageIDs?.length, |
| 670 | oldestMessageServerID, |
| 671 | threadID, |
| 672 | threadInfo.type, |
| 673 | ], |
| 674 | ); |
| 675 | } |
| 676 | |
| 677 | export { |
| 678 | robotextForMessageInfo, |
no test coverage detected