闪电邮箱会话功能第一弹:显示发件人策略

大家在使用 GMail 的时候,有没有想过在会话列表里面,多个会话参与人是按什么原则显示出来的呢?

我们并没有去反向 GMail 的代码,只是按我们对会话阅读行为的理解,并参考了一下 GMail 的显示样式,定出如下规则:

  1. 后端把该会话的所有参与者地址都返回JS,分成两组:第一组是会话第一封信到第一封未读的发件人,第二组是第一封未读到最后一封的发件人。排序为按时间排序,并排重;第二组有可能还携带信件是否已读的标记。剩下的处理都在前端js完成
    • 如果只有一组,则可以按一个固定的策略显示
  2. 如果已读的第一个和未读的第一个发件人不同
    • 显示已读的第一个,即会话的发起者。跟随一个省略标记
    • 否则只显示省略标记
  3. 然后显示未读邮件的第一个,即未读的最新的发件人。
    • 剩下的未读邮件发件人尽量全部显示出来 (如果开发这个功能有障碍,那就先只显示最新的一个人好了)
    • 如果不能完全显示,则尽量显示最新收到的邮件发件人;别忘了再增加一个省略标记
  4. 为了尽量在这里展示更多的发件人信息,规则如下
    • 只显示 First Name,即:"Yingbo Qiu" <qiuyingbo@…>,只会显示 Yingbo
    • 没有 Name 的,只显示地址前缀,即: <qiuyingbo@…>,只显示 qiuyingbo
  5. 示例
    • Yingbo ... Xiaoyu, Jichuan, Yuan (全部已读)
    • Yingbo ... Xiaoyu, Jichuan, Yuan (全部未读)
    • ...Xiaoyu ... Jichuan, Yuan (会话的发起者也是 Xiaoyu,和第一个未读一致)
    • Yingbo ... Xiaoyu .. Jichuan, Yuan (混合了已读和未读)
    • Yingbo ... Xiaoyu ..Jichuan,Yuan (第二组中,Jichuan 信件已读。。。这种情况概率很小,一开始可以考虑不实现该特性;甚至让第二组返回的时候,只返回未读信件的发件人列表)
Topic: 商业 技术