'use strict'; define( [ 'flight/lib/component', 'components/mustache/mustache', 'app/data', 'app/templates' ], function(defineComponent, Mustache, dataStore, templates) { return defineComponent(moveTo); function moveTo() { this.defaultAttrs({ dataStore: dataStore }); this.serveAvailableFolders = function(ev, data) { this.trigger("dataMoveToItemsServed", { markup: this.renderFolderSelector(this.getOtherFolders(data.folder)) }) }; this.renderFolderSelector = function(items) { return Mustache.render(templates.moveToSelector, {moveToItems: items}); }; this.moveItems = function(ev, data) { var itemsToMoveIds = data.itemIds this.attr.dataStore.mail.forEach(function(item) { if (itemsToMoveIds.indexOf(item.id) > -1) { item.folders = [data.toFolder]; } }); this.trigger('dataMailItemsRefreshRequested', {folder: data.fromFolder}); }; this.getOtherFolders = function(folder) { return this.attr.dataStore.folders.filter(function(e) {return e != folder}); }; this.after("initialize", function() { this.on("uiAvailableFoldersRequested", this.serveAvailableFolders); this.on("uiMoveItemsRequested", this.moveItems); }); } } );