summaryrefslogtreecommitdiffstats
path: root/js/controller
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2016-04-08 19:34:45 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2016-04-08 19:34:45 +0200
commit1c4c9992417ccadf51a7425d70cafb12f0405a21 (patch)
tree906f4df89a4190c199096c56b12b637b1fd9583c /js/controller
parenta9d463a1313f0beb23c7e7653e5bbdfa1fbe167f (diff)
Fix #924
Diffstat (limited to 'js/controller')
-rw-r--r--js/controller/SettingsController.js125
1 files changed, 66 insertions, 59 deletions
diff --git a/js/controller/SettingsController.js b/js/controller/SettingsController.js
index e9d93a1eb..2bb932aa8 100644
--- a/js/controller/SettingsController.js
+++ b/js/controller/SettingsController.js
@@ -8,76 +8,83 @@
* @copyright Bernhard Posselt 2014
*/
app.controller('SettingsController',
-function ($route, $q, SettingsResource, ItemResource, OPMLParser,
- OPMLImporter, Publisher) {
- 'use strict';
+ function ($route, $q, SettingsResource, ItemResource, OPMLParser,
+ OPMLImporter, Publisher) {
+ 'use strict';
+ this.isOPMLImporting = false;
+ this.isArticlesImporting = false;
+ this.opmlImportError = false;
+ this.articleImportError = false;
+ this.opmlImportEmptyError = false;
+ var self = this;
- this.isOPMLImporting = false;
- this.isArticlesImporting = false;
- this.opmlImportError = false;
- this.articleImportError = false;
+ var set = function (key, value) {
+ SettingsResource.set(key, value);
- var set = function (key, value) {
- SettingsResource.set(key, value);
+ if (['showAll', 'oldestFirst', 'compact'].indexOf(key) >= 0) {
+ $route.reload();
+ }
+ };
- if (['showAll', 'oldestFirst', 'compact'].indexOf(key) >= 0) {
- $route.reload();
- }
- };
+ this.toggleSetting = function (key) {
+ set(key, !this.getSetting(key));
+ };
- this.toggleSetting = function (key) {
- set(key, !this.getSetting(key));
- };
+ this.getSetting = function (key) {
+ return SettingsResource.get(key);
+ };
- this.getSetting = function (key) {
- return SettingsResource.get(key);
- };
+ this.importOPML = function (content) {
+ self.opmlImportError = false;
+ self.opmlImportEmptyError = false;
+ self.articleImportError = false;
- this.importOPML = function (content) {
- this.opmlImportError = false;
- this.articleImportError = false;
+ try {
+ this.isOPMLImporting = false;
+ var parsedContent = OPMLParser.parse(content);
- try {
- this.isOPMLImporting = false;
- var parsedContent = OPMLParser.parse(content);
+ var jobSize = 5;
- var self = this;
- var jobSize = 5;
+ if (parsedContent.folders.length === 0 &&
+ parsedContent.feeds.length === 0) {
+ self.opmlImportEmptyError = true;
+ } else {
+ OPMLImporter.importFolders(parsedContent)
+ .then(function (feedQueue) {
+ return OPMLImporter.importFeedQueue(feedQueue,
+ jobSize);
+ }).finally(function () {
+ self.isOPMLImporting = false;
+ });
+ }
- OPMLImporter.importFolders(parsedContent)
- .then(function (feedQueue) {
- return OPMLImporter.importFeedQueue(feedQueue, jobSize);
- }).finally(function () {
- self.isOPMLImporting = false;
- });
+ } catch (error) {
+ this.opmlImportError = true;
+ console.error(error);
+ this.isOPMLImporting = false;
+ }
+ };
- } catch (error) {
- console.error(error);
- this.isOPMLImporting = false;
- this.opmlImportError = true;
- }
- };
-
- this.importArticles = function (content) {
- this.opmlImportError = false;
- this.articleImportError = false;
+ this.importArticles = function (content) {
+ this.opmlImportError = false;
+ this.articleImportError = false;
- try {
- this.isArticlesImporting = true;
- var articles = JSON.parse(content);
+ try {
+ this.isArticlesImporting = true;
+ var articles = JSON.parse(content);
- var self = this;
- ItemResource.importArticles(articles).success(function (data) {
- Publisher.publishAll(data);
- }).finally(function () {
- self.isArticlesImporting = false;
- });
+ var self = this;
+ ItemResource.importArticles(articles).success(function (data) {
+ Publisher.publishAll(data);
+ }).finally(function () {
+ self.isArticlesImporting = false;
+ });
- } catch (error) {
- console.error(error);
- this.articleImportError = true;
- this.isArticlesImporting = false;
- }
- };
+ } catch (error) {
+ console.error(error);
+ this.articleImportError = true;
+ this.isArticlesImporting = false;
+ }
+ };
-}); \ No newline at end of file
+ }); \ No newline at end of file