HomePhabricator
Diffusion Comm bd71cfe7d833

[lib][native] Have createBoundServerCallsSelector take keyserverID in first

Description

[lib][native] Have createBoundServerCallsSelector take keyserverID in first

Summary:
We have two createBoundServerCallsSelectors currently: the original in call-keyserver-endpoint-provider.react.js (formerly in action-utils.js), and a second in lib/utils/keyserver-call.js`. The purpose of this diff is to set the groundwork to unify these two.

Currently, the original createBoundServerCallsSelector takes in the actionFunc first, and then returns a selector that takes an object of params that includes keyserverID. This makes it impossible to use in the second case, since in that case we want a separate selector for each keyserver.

This diff updates the original createBoundServerCallsSelector to make it possible to use in keyserver-call.js.

In later diffs, we'll further unify the logic in keyserver-call.js into call-keyserver-endpoint-provider.react.js.

NOTE: I wasn't sure if the paramOverride passed to useServerCall is supposed to support overriding keyserverID. I removed the support for this, but I can bring it back if desired.

Depends on D10681

Test Plan:
I tested this stack using the following procedure:

  1. I tested primarily on native
    1. I compiled a dev build and deployed it to an iOS simulator
    2. I created a brand new account on my local keyserver using the iOS app
    3. I ran Redux dev tools: cd native && yarn redux-devtools
    4. I added a 30s sleep at the start of resolveKeyserverSessionInvalidation
    5. I made KeyserverConnectionsHandler return null so that the socket wouldn’t automatically recover the session prior to my testing
    6. I killed the app
    7. I deleted all of the test user’s cookie
    8. I then opened the app again and navigated to a chat and sent two messages
    9. By following the Redux monitor, I was able to see that the keyserver session invalidation recovery was successful, and both messages were eventually sent after the 30s sleep concluded
  2. On web, we don’t support keyserver session invalidation. However, I tested to make sure that the web app still loaded after my changes

Reviewers: tomek, inka, atul

Reviewed By: tomek

Differential Revision: https://phab.comm.dev/D10682

Details

Provenance
ashoatAuthored on Jan 11 2024, 10:23 AM
Reviewer
tomek
Differential Revision
D10682: [lib][native] Have createBoundServerCallsSelector take keyserverID in first
Parents
rCOMM7f546eb9c1d8: [lib] Track session recovery on a per-keyserver basis
Branches
Unknown
Tags
Unknown