I’m puzzled by the decision to implement Fake UI on a native app.
We’ve discussed about improving the user experience on the mattermost client native app and now I have this unnecessary render flashing in my face everytime I switch channels.
You should rethink this.
The objective is to always have the message list displayed(when available) as soon as the user selects a channel. No intermediates slowing the process.
It should be something like this.
User select a channel.
Display Channel Panel (plain white).
Add a Loading Icon in the channel panel.
Check if there are messages already downloaded in the client and display those messages in the channel panel (use fade in or slide from left to right animation). (notice the loading icon is still spinning at the bottom of the message list).
Query the server for new or modified messages starting from the latest message already in the client. In short we are going to sync messages from server to client.
Once the server response arrives containing all the modifications, update the message list (can use slide in animations to add the new messages and flip for modified messages and slide out for deleted messages).
Hide Loading Icon.