issue: https://linear.app/comm/issue/ENG-4459/refactor-urlprefix-field
1. `urlPrefixSelector` returns `state.urlPrefix` if `urlPrefix` is not present in the `keyserverStore` as a hack, because the migration will be written in the next diff. This hack should also be undone in the next diff.
2. `useServerCall` will need to take the id of the keyserver as an argument. `serverCallState` will also take this id as an argument. But the `urlPrefix` for the keyserver with this id might not be found int the `keyserverStore` (most likely because the keyserver with this id is not present in the `keyserverStore` at all). I'm currently using an invariant to check this, but me might want to reconsider how this should be handled in the multikeyserver world
3. In `ConnectedLoggedOutModal` I'm checking with an invariant if `urlPrefix` was found. It makes sense as long as we are connected only to one keyserver, becuase we know the value is set. In multikeyserver world `ConnectedLoggedOutModal` won't be using `urlPrefix`, becuse it won't make sense for it to be getting a new cookie from any of the keyservers. So this code will be removed and the invariant with it.
4. In `SQLiteDataHandler` I'm checking with an invariant if `urlPrefix` was found. `urlPrefix` is used there to get a new cookie from the keyserver - log the user back and populate the db with data in case of a migartion failure (see https://linear.app/comm/issue/ENG-2071/clear-database-on migration-failure). A new cookie will need to be fetched for all keyservers in the future. (@kamil does this sound right?)
5. In `ConnectedCustomServerModal` I'm checking with an invariant if `urlPrefix` was found. `urlPrefix` is used there to check whether the typed in url is different from the one we are connected to. In the future we will need to check if it matches any of the keyservers we are connected to, so we will not need this invariant.
6. `ConnectedDevTools`: same as `ConnectedCustomServerModal`. Additionally, the `ServerIcon` won't be present in the multikeyserver world, because we will be connected to all keyservers on the list.
7. `openSocketSelector` and `Socket` (both web and native):
Currently we have a single Socket component that is rendered in the `Root` component. I'm guessing that once we have multiple keyservers we will have a list of `Sockets` rendered, and we will be adding and removing items from this list when we connect and disconnect from servers. I'm guessing that the client wanting to connect to a keyserver will ask the identity service for the url of the keyserver it wants to connect to, and then try to open a socket. So I think it would make sense if `Socket` (and `openSocketSelector`) took the `urlPrefix` as an argument. Alternatively it can thake the `id` of the keyserver and use a selector to fetch the `urlPrefix`. In this case we will need to handle the possibility, that the `urlPrefix` will be undefined.
To make sure all of these are adressed at some point, I will create issues / write comments on linear. I will track this in https://linear.app/comm/issue/ENG-4651/document-changes-that-need-to-be-done-mentioned-in-d8814