(message: RedisMessage)
| 598 | }; |
| 599 | |
| 600 | async processRedisMessage(message: RedisMessage) { |
| 601 | if (message.type === redisMessageTypes.START_SUBSCRIPTION) { |
| 602 | this.ws.terminate(); |
| 603 | } else if (message.type === redisMessageTypes.NEW_UPDATES) { |
| 604 | const { viewer } = this; |
| 605 | invariant(viewer, 'should be set'); |
| 606 | if (message.ignoreSession && message.ignoreSession === viewer.session) { |
| 607 | return; |
| 608 | } |
| 609 | const rawUpdateInfos = message.updates; |
| 610 | this.redisPromiseResolver.add( |
| 611 | (async () => { |
| 612 | const { updateInfos, userInfos } = |
| 613 | await fetchUpdateInfosWithRawUpdateInfos(rawUpdateInfos, { |
| 614 | viewer, |
| 615 | }); |
| 616 | if (updateInfos.length === 0) { |
| 617 | console.warn( |
| 618 | 'could not get any UpdateInfos from redisMessageTypes.NEW_UPDATES', |
| 619 | ); |
| 620 | return null; |
| 621 | } |
| 622 | this.markActivityOccurred(); |
| 623 | return { |
| 624 | type: serverSocketMessageTypes.UPDATES, |
| 625 | payload: { |
| 626 | updatesResult: { |
| 627 | currentAsOf: mostRecentUpdateTimestamp([...updateInfos], 0), |
| 628 | newUpdates: updateInfos, |
| 629 | }, |
| 630 | userInfos: values(userInfos), |
| 631 | }, |
| 632 | }; |
| 633 | })(), |
| 634 | ); |
| 635 | } else if (message.type === redisMessageTypes.NEW_MESSAGES) { |
| 636 | const { viewer } = this; |
| 637 | invariant(viewer, 'should be set'); |
| 638 | const rawMessageInfos = message.messages; |
| 639 | const messageFetchResult = getMessageFetchResultFromRedisMessages( |
| 640 | viewer, |
| 641 | rawMessageInfos, |
| 642 | ); |
| 643 | if (messageFetchResult.rawMessageInfos.length === 0) { |
| 644 | console.warn( |
| 645 | 'could not get any rawMessageInfos from ' + |
| 646 | 'redisMessageTypes.NEW_MESSAGES', |
| 647 | ); |
| 648 | return; |
| 649 | } |
| 650 | this.redisPromiseResolver.add( |
| 651 | (async () => { |
| 652 | this.markActivityOccurred(); |
| 653 | return { |
| 654 | type: serverSocketMessageTypes.MESSAGES, |
| 655 | payload: { |
| 656 | messagesResult: { |
| 657 | rawMessageInfos: messageFetchResult.rawMessageInfos, |
no test coverage detected