summaryrefslogtreecommitdiffstats
path: root/js/build/app.js
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-09-12 19:40:16 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-09-12 19:40:16 +0200
commitb86a5591667ca8de3a83ef5bcbc756e356979b5a (patch)
tree4e364688193ab00a015301659e126ba2c6397a55 /js/build/app.js
parent748500380e39880e54ee73ebaf5234ddf442e149 (diff)
adding feeds and folders, lady and gentlemen :P
Diffstat (limited to 'js/build/app.js')
-rw-r--r--js/build/app.js56
1 files changed, 34 insertions, 22 deletions
diff --git a/js/build/app.js b/js/build/app.js
index 1dbf7b553..c5ccf2e8e 100644
--- a/js/build/app.js
+++ b/js/build/app.js
@@ -411,7 +411,7 @@ app.controller('NavigationController',
if (type === FEED_TYPE.FEED) {
var feed = FeedResource.getById($route.current.params.id);
- if (feed.folderId === folderId) {
+ if (feed !== undefined && feed.folderId === folderId) {
return true;
}
}
@@ -456,48 +456,57 @@ app.controller('NavigationController',
};
this.createFeed = function (feed) {
+ var self = this;
this.newFolder = false;
+ this.addingFeed = true;
- var self = this;
- var folderName = feed.folder;
- var folderId = feed.folderId || {id: 0};
+ var newFolder = feed.newFolder;
+ var existingFolder = feed.existingFolder || {id: 0};
// we dont need to create a new folder
- if (folderName === undefined) {
- folderId.getsFeed = true;
+ if (newFolder === undefined) {
+ // this is set to display the feed in any folder, even if the folder
+ // is closed or has no unread articles
+ existingFolder.getsFeed = true;
- FeedResource.create(feed.url, folderId.id, undefined)
+ FeedResource.create(feed.url, existingFolder.id, undefined)
.then(function (data) {
+
Publisher.publishAll(data);
// set folder as default
- var createdFeed = data.feeds[0];
+ $location.path('/items/feeds/' + data.feeds[0].id + '/');
- // load created feed
- $location.path('/items/feeds/' + createdFeed.id);
- folderId.getsFeed = undefined;
- }, function () {
- folderId.getsFeed = undefined;
+ }).finally(function () {
+ existingFolder.getsFeed = undefined;
+ feed.url = '';
+ self.addingFeed = false;
});
+
} else {
// create folder first and then the feed
- FolderResource.create(folderName).then(function (data) {
+ FolderResource.create(newFolder).then(function (data) {
+
Publisher.publishAll(data);
- feed.folderId = data.folders[0];
- feed.folder = undefined;
+ // set the created folder on scope so its preselected for the
+ // next addition
+ feed.existingFolder = FolderResource.get(data.folders[0].name);
+ feed.newFolder = undefined;
self.createFeed(feed);
});
}
-
- feed.url = '';
};
this.createFolder = function (folder) {
+ var self = this;
+ this.addingFolder = true;
FolderResource.create(folder.name).then(function (data) {
Publisher.publishAll(data);
+ }).finally(function () {
+ self.addingFolder = false;
+ folder.name = '';
});
- folder.name = '';
};
this.moveFeed = function (feedId, folderId) {
@@ -1544,7 +1553,7 @@ app.directive('newsAudio', function () {
}
};
});
-app.directive('newsAutoFocus', function () {
+app.directive('newsAutoFocus', ["$timeout", function ($timeout) {
'use strict';
return function (scope, elem, attrs) {
var toFocus = elem;
@@ -1553,9 +1562,12 @@ app.directive('newsAutoFocus', function () {
toFocus = $(attrs.newsAutoFocus);
}
- toFocus.focus();
+ // to combat $digest already in process error when route changes
+ $timeout(function () {
+ toFocus.focus();
+ }, 0);
};
-});
+}]);
app.directive('newsBindHtmlUnsafe', function () {
'use strict';