summaryrefslogtreecommitdiff
path: root/web-ui/app/js/mail_list/ui/mail_item_factory.js
blob: 0a20e58cbebb6fca5cb43e2e215a4a0de62e8de5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'use strict';

define(
  [
    'mail_list/ui/mail_items/generic_mail_item',
    'mail_list/ui/mail_items/draft_item',
    'mail_list/ui/mail_items/sent_item'
  ],
  function (GenericMailItem, DraftItem, SentItem) {

    var MAIL_ITEM_TYPE = {
      'drafts': DraftItem,
      'sent': SentItem
    };

    var createAndAttach = function (nodeToAttachTo, mail, currentMailIdent, currentTag, isChecked) {
      var mailItemContainer = $('<li>', { id: 'mail-' + mail.ident});
      nodeToAttachTo.append(mailItemContainer);

      var mailToCreate;
      if(currentTag === 'all'){
        mailToCreate = detectMailType(mail);
      } else {
        mailToCreate = MAIL_ITEM_TYPE[currentTag] || GenericMailItem;
      }
      mailToCreate.attachTo(mailItemContainer, {
        mail: mail,
        selected: mail.ident === currentMailIdent,
        tag: currentTag,
        isChecked: isChecked
      });

    };

    var detectMailType = function(mail) {
      if(_.include(mail.tags, 'drafts')) {
        return MAIL_ITEM_TYPE['drafts'];
      } else if(_.include(mail.tags, 'sent')) {
        return MAIL_ITEM_TYPE['sent'];
      } else {
        return GenericMailItem;
      };
    };

    return {
      createAndAttach: createAndAttach
    };
  }
);