Multi-Server Support
In-progress
Important Links
Goals
Currently users on the Mobile app have no way to access multiple servers like they do on the Desktop app. This feature would provide users with the following:
Access to different servers
Allow for adding, viewing, editing, removing servers
Easily switch between servers
Team Sidebar previous updates
The design work for multi-server support is dependent on the work done for Team Sidebar.
The Servers List
Above the new Team Sidebar is a new button to access servers (see screens below). Tapping this slides down the main navigation and reveal the server list.
Gestures
Tapping on the Server Button will reveal the Server List
Once open, swiping up or tapping on the Home content will slide it back up and hide the Server List
Servers Button (top left)
Servers List
Servers List - Scrolling
Servers List Transition
Note on localization for the Servers List
Use the language from the current active server for this screen.
In case of EMM provider prevents the user from having more than one server
Onboarding Tutorial
When a user launches the server sheet for the first time, he will see instructions that highlight actions that can be done to a server. This will help us to show where the contextual swipe can be used. Tutorial can be dismissed by a tap or any other interaction on a scrimmed surface.
Servers Icon Button
Badges on Servers Icon
Badges on the Servers icon behave similarly to the badges on the current hamburger menu icon in that they display an aggregate of all servers (except the current one). For example, if Server A has 2 mentions, Server B has 3 mentions and Server C has 4 mentions, the total aggregate number shown on the Servers Icon Button is 7.
States
Default | Unreads | Mentions | 99+ Mentions | Add Server |
---|---|---|---|---|
|
|
|
|
Server List Items
Each Server List Item shows:
Display Name (as entered by the user)
Fallbacks for Server Names: Since existing users do not have to name their server, a fallback name of “Default Server” will be used. This will also apply to cases where a default
serverUrl
is set for apps managed by EMM providers (see App configuration docs).
Server URL (strips out
https://
)Mention or unread badges (if applicable)
The authentication status: displays an alert icon denoting session expiry or logged out
Server List Item States
Default
| Active Server
|
Logged Out | Unreads
|
Mentions
| Mentions (99+)
|
Actions Open
|
|
Server List Item Interactions
Tapping on the main area of the item
If session is active, select this server and transition to the view for that server
If session is logged out, open up a log in modal to authenticate, then once authenticated, close the modal and transition to the channel sidebar view for that server
Swiping Left on a Server List Item will also open the actions for that server
Edit
Tapping this option will open up the Server Settings Modal where users can edit the URL and name of the server.
If the URL changes, users will have to authenticate again (and we should expire the session of the previous server)
If it’s just a simple display name change, no authentication is needed. (Display names must be unique for the server list)
Log out
A confirmation alert displays to confirm the user wants to logout
Once log out completes:
The Server Item is indicated as logged out
If there are other servers with an active session, switch to the last viewed server
If there are other servers, but none have an active session, the authentication modal opens prepopulated with the last viewed server
If there are no other servers in the user’s Serve List, bump users to the login screen for this server that was just logged out.
Remove
A warning alert shows to confirm the removal
If confirmed, user is logged out and the server is removed from the list. Also removes associated data.
Then the server is removed from the list and the app altogether
Once the removal completes:
If there are other servers with an active session, switch to the last viewed server
If there are other servers, but none have an active session, the authentication modal opens prepopulated with the last viewed server
If there are no other servers in the user’s Serve List, bump users to ‘add your first server' screen
Adding Servers
Adding the First Server
If no previous server has been added, the app begins on the Add Server Screen. See this page for more details.
Adding Subsequent Servers
As noted above, at the bottom of the Servers List, an option to “Add a Server” displays as part of the list.
Tapping this option will open a modal with the details to add a server. This will behave the same as Adding the First Server, but with some stylistic differences.
Display Name for Existing Users' Servers
For existing users, we will migrate their current server to the Server List with a fallback display name since Display Name is a new field for servers. A fallback name of “Default Server” will be used. This will also apply to cases where a default serverUrl
is set for apps managed by EMM providers
Other areas impacted by Multi-Server Support
Hamburger Icon Badge Count
The number shown on the hamburger menu icon should match the added up number of mention badges displayed in the sidebar menu that includes:
any channel-specific mentions
any mention number displayed on any team sidebar item
the number displayed on the servers icon
App Icon Badge Count
The Badge Count on the Homescreen App Icon should be an aggregate total of all mentions on all servers
Recent Emojis
These work across servers and are stored at the device level. (as per current behavior).
User’s Status Across Servers
Similar to how the desktop operates, if you’re in the app, the user’s status is set to online on all servers that have active sessions. Unless you’ve manually chosen a status (other than online) on a particular server, then that status is permanently set and will be respected for that server.
Future consideration: An easy way for users to change status across all servers in one action.
Multi-Server Support for Share Extensions
We will need to update the share extensions to include the server selection in addition to the existing team/channel selection
In-App Notifications
Should be shown from other servers if you’re viewing a different server. These will need to include the server name somehow. Otherewise, these follow the existing behavior.
Push Notifications
To be confirmed whether we include the server name.
Session Expiry Notification: include the url or server name as part of the body of the message.
Permalinks
Need to document this flow…
If you have a permalink to a server that you’re logged in to but not currently view, we should redirect to change your current server on the app.
If you don’t have the server that the link points to, should we add the option to add the server? I think we need to alert the user that they don’t have the server configured - do you want to add it?
Deep Linking
If you’re coming from a deep link in email notification, go to the server in the app if you have it configured. Otherwise prompt the user to add the server (like above).