summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDuda Dornelles <ddornell@thoughtworks.com>2014-10-16 14:59:49 +0200
committerDuda Dornelles <ddornell@thoughtworks.com>2014-10-16 14:59:56 +0200
commit5a0425986800bf03de8c49dc00f45d86d3b365ee (patch)
tree967bdd7868d67adaf1967f9616ef6a1702d5fa6f
parent2871fd91a844e007cbf821b51f6bba16cf727abb (diff)
for #95, make sure that the tag list is also refreshed when the mail list is refreshed, since there can be new unread mails and we need to update the count
-rw-r--r--web-ui/app/js/dispatchers/left_pane_dispatcher.js8
-rw-r--r--web-ui/app/js/mail_list/ui/mail_list.js3
-rw-r--r--web-ui/app/js/tags/data/tags.js2
-rw-r--r--web-ui/app/js/tags/ui/tag_list.js3
-rw-r--r--web-ui/test/spec/dispatchers/left_pane_dispatcher.spec.js4
-rw-r--r--web-ui/test/spec/mail_list/ui/mail_list.spec.js15
6 files changed, 25 insertions, 10 deletions
diff --git a/web-ui/app/js/dispatchers/left_pane_dispatcher.js b/web-ui/app/js/dispatchers/left_pane_dispatcher.js
index 0ceb3790..21898dca 100644
--- a/web-ui/app/js/dispatchers/left_pane_dispatcher.js
+++ b/web-ui/app/js/dispatchers/left_pane_dispatcher.js
@@ -29,8 +29,8 @@ define(
function leftPaneDispatcher() {
var initialized = false;
- this.refreshTagList = function () {
- this.trigger(document, events.tags.want, { caller: this.$node });
+ this.refreshTagList = function (ev, data) {
+ this.trigger(document, events.tags.want, { caller: this.$node, skipMailListRefresh: data.skipMailListRefresh });
};
this.loadTags = function (ev, data) {
@@ -39,7 +39,7 @@ define(
this.selectTag = function (ev, data) {
var tag = (data && data.tag) || urlParams.getTag();
- this.trigger(document, events.ui.tag.select, { tag: tag });
+ this.trigger(document, events.ui.tag.select, { tag: tag, skipMailListRefresh: data.skipMailListRefresh });
};
this.pushUrlState = function (ev, data) {
@@ -60,7 +60,7 @@ define(
this.on(document, events.dispatchers.tags.refreshTagList, this.refreshTagList);
this.on(document, events.ui.tags.loaded, this.selectTag);
this.on(document, events.ui.tag.selected, this.pushUrlState);
- this.trigger(document, events.tags.want, { caller: this.$node } );
+ this.trigger(document, events.tags.want, { caller: this.$node });
});
}
}
diff --git a/web-ui/app/js/mail_list/ui/mail_list.js b/web-ui/app/js/mail_list/ui/mail_list.js
index 1f915a57..7b518320 100644
--- a/web-ui/app/js/mail_list/ui/mail_list.js
+++ b/web-ui/app/js/mail_list/ui/mail_list.js
@@ -100,6 +100,9 @@ define(
};
this.refreshMailList = function (ev, data) {
+ if (ev) { // triggered by the event, so we need to refresh the tag list
+ this.trigger(document, events.dispatchers.tags.refreshTagList, { skipMailListRefresh: true });
+ }
resetMailList();
renderMails(data.mails);
};
diff --git a/web-ui/app/js/tags/data/tags.js b/web-ui/app/js/tags/data/tags.js
index 97dd12a6..4a1e6af0 100644
--- a/web-ui/app/js/tags/data/tags.js
+++ b/web-ui/app/js/tags/data/tags.js
@@ -40,7 +40,7 @@ define(['flight/lib/component', 'page/events', 'mixins/with_feature_toggle'], fu
function sendTagsBackTo(on, params) {
return function(data) {
data.push(DataTags.all);
- on.trigger(params.caller, events.tags.received, {tags: data});
+ on.trigger(params.caller, events.tags.received, {tags: data, skipMailListRefresh: params.skipMailListRefresh});
};
}
diff --git a/web-ui/app/js/tags/ui/tag_list.js b/web-ui/app/js/tags/ui/tag_list.js
index b5b4d555..850a5fab 100644
--- a/web-ui/app/js/tags/ui/tag_list.js
+++ b/web-ui/app/js/tags/ui/tag_list.js
@@ -92,10 +92,9 @@ define(
}.bind(this));
};
-
this.loadTagList = function(ev, data) {
this.renderTagList(_.sortBy(data.tags, tagOrder));
- this.trigger(document, events.ui.tags.loaded, { tag: this.attr.currentTag });
+ this.trigger(document, events.ui.tags.loaded, { tag: this.attr.currentTag, skipMailListRefresh: data.skipMailListRefresh});
};
this.saveTag = function(ev, data) {
diff --git a/web-ui/test/spec/dispatchers/left_pane_dispatcher.spec.js b/web-ui/test/spec/dispatchers/left_pane_dispatcher.spec.js
index 86b54a48..935bb917 100644
--- a/web-ui/test/spec/dispatchers/left_pane_dispatcher.spec.js
+++ b/web-ui/test/spec/dispatchers/left_pane_dispatcher.spec.js
@@ -47,7 +47,7 @@ describeComponent('dispatchers/left_pane_dispatcher', function () {
it('asks for more tags when refreshTagList is fired', function () {
var tagWantEvent = spyOnEvent(document, Pixelated.events.tags.want);
- $(document).trigger(Pixelated.events.dispatchers.tags.refreshTagList);
+ $(document).trigger(Pixelated.events.dispatchers.tags.refreshTagList, {});
expect(tagWantEvent).toHaveBeenTriggeredOn(document);
});
@@ -63,7 +63,7 @@ describeComponent('dispatchers/left_pane_dispatcher', function () {
it('on tags loaded selects the inbox tag if no data is provided', function () {
var selectTagEvent = spyOnEvent(document, Pixelated.events.ui.tag.select);
- $(document).trigger(Pixelated.events.ui.tags.loaded);
+ $(document).trigger(Pixelated.events.ui.tags.loaded, {});
expect(selectTagEvent).toHaveBeenTriggeredOnAndWith(document, { tag: 'inbox' });
});
diff --git a/web-ui/test/spec/mail_list/ui/mail_list.spec.js b/web-ui/test/spec/mail_list/ui/mail_list.spec.js
index 11993ba1..9c01c6af 100644
--- a/web-ui/test/spec/mail_list/ui/mail_list.spec.js
+++ b/web-ui/test/spec/mail_list/ui/mail_list.spec.js
@@ -166,11 +166,14 @@ describeComponent('mail_list/ui/mail_list', function () {
});
- it('should render all mails sent in ui:mails:show event', function () {
+ it('should render all mails sent in ui:mails:show event but shouldnt refresh the tags', function () {
+ var refreshTagListEvent = spyOnEvent(document, Pixelated.events.dispatchers.tags.refreshTagList);
+
this.component.$node.trigger(Pixelated.events.mails.available, { mails: mailList });
matchMail(mailList[0], this.component.$node);
matchMail(mailList[1], this.component.$node);
+ expect(refreshTagListEvent).not.toHaveBeenTriggeredOn(document);
});
it('should select the current email when mails are available', function () {
@@ -259,6 +262,16 @@ describeComponent('mail_list/ui/mail_list', function () {
});
});
+ describe('refreshing the mail list', function () {
+ it('also refreshes the tag list but skips the next mail list refresh', function () {
+ var tagListRefreshEvent = spyOnEvent(document, Pixelated.events.dispatchers.tags.refreshTagList);
+
+ $(document).trigger(Pixelated.events.mails.availableForRefresh, { mails: []});
+
+ expect(tagListRefreshEvent).toHaveBeenTriggeredOnAndWith(document, { skipMailListRefresh: true});
+ });
+ });
+
function createMail(subject, from, ident, date) {
var mail = Pixelated.testData().parsedMail.simpleTextPlain;