Page MenuHomePhabricator

[lib] Replace createBoundServerCallsSelector with createCallSingleKeyserverEndpointSelector
ClosedPublic

Authored by ashoat on Jan 17 2024, 8:58 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sat, Oct 26, 7:43 PM
Unknown Object (File)
Tue, Oct 22, 4:59 PM
Unknown Object (File)
Tue, Oct 22, 4:59 PM
Unknown Object (File)
Tue, Oct 22, 4:57 PM
Unknown Object (File)
Sun, Oct 13, 11:47 PM
Unknown Object (File)
Sep 5 2024, 11:53 PM
Unknown Object (File)
Sep 5 2024, 11:53 PM
Unknown Object (File)
Sep 5 2024, 11:52 PM
Subscribers
None

Details

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 continue setting the groundwork to unify these two.

One core difference is that the original createBoundServerCallsSelector returns a bound server call directly, but the second one can't do this. That is because the second one needs a collection of CallServerEndpoints to generate the bound server call.

As such, this diff replaces the original createBoundServerCallsSelector with createCallSingleKeyserverEndpointSelector. Additionally, it updates the return of the "original" to match the second.

Arguably, the second createBoundServerCallsSelector should have had this name from the start, as it better reflects what is returned.

An additional benefit of this change is that we're able to reuse the same bound CallServerEndpoints for multiple server calls, instead of needing a separate selector for each server call.

Depends on D10682

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

Diff Detail

Repository
rCOMM Comm
Lint
Lint Not Applicable
Unit
Tests Not Applicable