diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-13 22:48:31 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2013-04-13 22:48:31 +0200 |
commit | ce7cd121f42b093569d7a31fac3bcd5837429cff (patch) | |
tree | 5cbe7751eb4c53cffd0ea1cbd61be4104e212462 /js | |
parent | 0fa0fb22c72653de35eb3ff8b9ffcf833a96e901 (diff) |
fix import scoping issue that caused feeds not to be imported at times, set created folders to be opened by default
Diffstat (limited to 'js')
-rw-r--r-- | js/app/controllers/settingscontroller.coffee | 1 | ||||
-rw-r--r-- | js/app/services/bl/folderbl.coffee | 24 | ||||
-rw-r--r-- | js/app/services/models/feedmodel.coffee | 2 | ||||
-rw-r--r-- | js/public/app.js | 52 | ||||
-rw-r--r-- | js/tests/services/bl/folderblSpec.coffee | 3 |
5 files changed, 50 insertions, 32 deletions
diff --git a/js/app/controllers/settingscontroller.coffee b/js/app/controllers/settingscontroller.coffee index d573e1213..3c6a7771e 100644 --- a/js/app/controllers/settingscontroller.coffee +++ b/js/app/controllers/settingscontroller.coffee @@ -34,6 +34,7 @@ angular.module('News').controller 'SettingsController', try FolderBl.import(fileContent) catch error + console.error error $scope.error = true ]
\ No newline at end of file diff --git a/js/app/services/bl/folderbl.coffee b/js/app/services/bl/folderbl.coffee index abba97054..42c1d9752 100644 --- a/js/app/services/bl/folderbl.coffee +++ b/js/app/services/bl/folderbl.coffee @@ -132,18 +132,24 @@ ItemModel, ShowAll, _ExistsError, OPMLParser)-> _importElement: (opml, parentFolderId) -> for item in opml.getItems() if item.isFolder() - try - @create item.getName(), (data) => - @_importElement(item, data.folders[0].id) - catch error - if error instanceof _ExistsError - folder = @_folderModel.getByName(item.getName()) - @open(folder.id) - @_importElement(item, folder.id) + do (item) => + try + @create item.getName(), (data) => + @_importElement(item, data.folders[0].id) + catch error + if error instanceof _ExistsError + folder = @_folderModel.getByName(item.getName()) + @open(folder.id) + @_importElement(item, folder.id) + else + console.info error else try - @_feedBl.create(item.getUrl(), parentFolderId) + do (item) => + @_feedBl.create(item.getUrl(), parentFolderId) catch error + if not error instanceof _ExistsError + console.info error return new FolderBl(FolderModel, FeedBl, ShowAll, ActiveFeed, Persistence, diff --git a/js/app/services/models/feedmodel.coffee b/js/app/services/models/feedmodel.coffee index 405ea2651..e0006e8d2 100644 --- a/js/app/services/models/feedmodel.coffee +++ b/js/app/services/models/feedmodel.coffee @@ -41,6 +41,8 @@ angular.module('News').factory '_FeedModel', if data.faviconLink == null data.faviconLink = 'url(' + @_utils.imagePath('news', 'rss.svg') + ')' + else + data.faviconLink = 'url(' + data.faviconLink + ')' ### We want to add a feed on the client side before we have an id from the server. Once the server returns diff --git a/js/public/app.js b/js/public/app.js index 358b1dacc..04dfaaf79 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -468,6 +468,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return FolderBl["import"](fileContent); } catch (_error) { error = _error; + console.error(error); return $scope.error = true; } }; @@ -993,7 +994,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. }; FolderBl.prototype._importElement = function(opml, parentFolderId) { - var error, folder, item, _i, _len, _ref, _results, + var error, item, _i, _len, _ref, _results, _this = this; _ref = opml.getItems(); @@ -1001,26 +1002,37 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. for (_i = 0, _len = _ref.length; _i < _len; _i++) { item = _ref[_i]; if (item.isFolder()) { + _results.push((function(item) { + var error, folder; + + try { + return _this.create(item.getName(), function(data) { + return _this._importElement(item, data.folders[0].id); + }); + } catch (_error) { + error = _error; + if (error instanceof _ExistsError) { + folder = _this._folderModel.getByName(item.getName()); + _this.open(folder.id); + return _this._importElement(item, folder.id); + } else { + return console.info(error); + } + } + })(item)); + } else { try { - _results.push(this.create(item.getName(), function(data) { - return _this._importElement(item, data.folders[0].id); - })); + _results.push((function(item) { + return _this._feedBl.create(item.getUrl(), parentFolderId); + })(item)); } catch (_error) { error = _error; - if (error instanceof _ExistsError) { - folder = this._folderModel.getByName(item.getName()); - this.open(folder.id); - _results.push(this._importElement(item, folder.id)); + if (!error instanceof _ExistsError) { + _results.push(console.info(error)); } else { _results.push(void 0); } } - } else { - try { - _results.push(this._feedBl.create(item.getUrl(), parentFolderId)); - } catch (_error) { - error = _error; - } } } return _results; @@ -1455,6 +1467,8 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. } if (data.faviconLink === null) { data.faviconLink = 'url(' + this._utils.imagePath('news', 'rss.svg') + ')'; + } else { + data.faviconLink = 'url(' + data.faviconLink + ')'; } /* We want to add a feed on the client side before @@ -1933,7 +1947,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. (function() { - angular.module('News').factory('_OPMLParser', function() { + angular.module('News').factory('OPMLParser', function() { var Feed, Folder, OPMLParser; Feed = (function() { @@ -2018,7 +2032,7 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return OPMLParser; })(); - return OPMLParser; + return new OPMLParser(); }); }).call(this); @@ -2577,12 +2591,6 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. } ]); - angular.module('News').factory('OPMLParser', [ - '_OPMLParser', function(_OPMLParser) { - return new _OPMLParser(); - } - ]); - }).call(this); // Generated by CoffeeScript 1.6.2 diff --git a/js/tests/services/bl/folderblSpec.coffee b/js/tests/services/bl/folderblSpec.coffee index 8bb40033d..49f68634f 100644 --- a/js/tests/services/bl/folderblSpec.coffee +++ b/js/tests/services/bl/folderblSpec.coffee @@ -273,12 +273,13 @@ describe 'FolderBl', -> </head> <body> <outline text="Design" title="Design" /> + <outline text="test" title="test"></outline> </body> </opml>' @FolderBl.import(xml) - expect(@persistence.createFolder).toHaveBeenCalledWith('Design', 0, + expect(@persistence.createFolder).toHaveBeenCalledWith('test', 0, jasmine.any(Function)) expect(@persistence.createFeed).not.toHaveBeenCalled() |