diff options
Diffstat (limited to 'js-old/controller/SettingsController.js')
-rw-r--r-- | js-old/controller/SettingsController.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/js-old/controller/SettingsController.js b/js-old/controller/SettingsController.js new file mode 100644 index 000000000..2f8a1107c --- /dev/null +++ b/js-old/controller/SettingsController.js @@ -0,0 +1,86 @@ +/** + * Nextcloud - News + * + * This file is licensed under the Affero General Public License version 3 or + * later. See the COPYING file. + * + * @author Bernhard Posselt <dev@bernhard-posselt.com> + * @copyright Bernhard Posselt 2014 + */ +app.controller('SettingsController', 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; + + var set = function (key, value) { + SettingsResource.set(key, value); + + if (['showAll', 'oldestFirst', 'compact'].indexOf(key) >= 0) { + $route.reload(); + } + }; + + this.toggleSetting = function (key) { + set(key, !this.getSetting(key)); + }; + + this.getSetting = function (key) { + return SettingsResource.get(key); + }; + + this.importOPML = function (fileContent) { + self.opmlImportError = false; + self.opmlImportEmptyError = false; + self.articleImportError = false; + + try { + this.isOPMLImporting = false; + var parsedContent = OPMLParser.parse(fileContent); + + 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; + }); + } + + } catch (error) { + this.opmlImportError = true; + console.error(error); + this.isOPMLImporting = false; + } + }; + + this.importArticles = function (content) { + this.opmlImportError = false; + this.articleImportError = false; + + try { + this.isArticlesImporting = true; + var articles = JSON.parse(content); + + var self = this; + ItemResource.importArticles(articles).then(function (data) { + Publisher.publishAll(data); + }).finally(function () { + self.isArticlesImporting = false; + }); + + } catch (error) { + console.error(error); + this.articleImportError = true; + this.isArticlesImporting = false; + } + }; +}); |