大家在使用 GMail 的时候,有没有想过在会话列表里面,多个会话参与人是按什么原则显示出来的呢?
我们并没有去反向 GMail 的代码,只是按我们对会话阅读行为的理解,并参考了一下 GMail 的显示样式,定出如下规则:
- 后端把该会话的所有参与者地址都返回JS,分成两组:第一组是会话第一封信到第一封未读的发件人,第二组是第一封未读到最后一封的发件人。排序为按时间排序,并排重;第二组有可能还携带信件是否已读的标记。剩下的处理都在前端js完成
- 如果只有一组,则可以按一个固定的策略显示
- 如果已读的第一个和未读的第一个发件人不同
- 显示已读的第一个,即会话的发起者。跟随一个省略标记
- 否则只显示省略标记
- 然后显示未读邮件的第一个,即未读的最新的发件人。
- 剩下的未读邮件发件人尽量全部显示出来 (如果开发这个功能有障碍,那就先只显示最新的一个人好了)
- 如果不能完全显示,则尽量显示最新收到的邮件发件人;别忘了再增加一个省略标记
- 为了尽量在这里展示更多的发件人信息,规则如下
- 只显示 First Name,即:"Yingbo Qiu" <qiuyingbo@…>,只会显示 Yingbo
- 没有 Name 的,只显示地址前缀,即: <qiuyingbo@…>,只显示 qiuyingbo
- 示例
- Yingbo ... Xiaoyu, Jichuan, Yuan (全部已读)
- Yingbo ... Xiaoyu, Jichuan, Yuan (全部未读)
- ...Xiaoyu ... Jichuan, Yuan (会话的发起者也是 Xiaoyu,和第一个未读一致)
- Yingbo ... Xiaoyu .. Jichuan, Yuan (混合了已读和未读)
- Yingbo ... Xiaoyu ..Jichuan,Yuan (第二组中,Jichuan 信件已读。。。这种情况概率很小,一开始可以考虑不实现该特性;甚至让第二组返回的时候,只返回未读信件的发件人列表)
最新评论