issue: https://linear.app/comm/issue/ENG-5990/add-setconnectionissue-action
In this stack I will be replacing logouts dispatched from the socket with seting this new connectionIssue filed. This is because we don't want to log the user out of the app if we can't connect to one keyserver. We also don't want to log the user out of this keyserver, because that would result in the client removing the keyserver from the store. Instead, we decided to store information about the problem that the client is having with communicating with the keyserver.
See the discussion in ENG-5808 for more details. See ENG-5913 for an explanation of why it takes those values.
Details
Details
flow
Diff Detail
Diff Detail
- Repository
- rCOMM Comm
- Lint
No Lint Coverage - Unit
No Test Coverage
Event Timeline
lib/types/socket-types.js | ||
---|---|---|
499 ↗ | (On Diff #34872) | Wondering how convenient it is. In some reducers, it might be easier to set connectionIssue: null, which would require having ?ConnectionIssue type, but up to you. |
We definitely should return something from this lambda since otherwise it is useless to assign it to variable.
If we find that we don't have permissions then just calling await this.requestAndroidNotificationsPermission(); would result in a prompt asking for notifications permissions. However if the user grants those permissions then hasPermissions is still falsy (since promise returned nothing), so deviceToken will be set to null. Nevertheless permissions are actually granted byt the OS, so the state on the device and keyserver would heal itself on next render.
This differential fixes this case so that if user grants permissions correct state is achieved immediately without need for additional re-render to heal the state.