summaryrefslogtreecommitdiffstats
path: root/js
diff options
context:
space:
mode:
authorBernhard Posselt <nukeawhale@gmail.com>2013-04-11 20:56:23 +0200
committerBernhard Posselt <nukeawhale@gmail.com>2013-04-11 20:56:23 +0200
commitb06fc20ddbadbc7522cd23a83a20975f43889890 (patch)
tree252ddf454899920771466aa7d5b6376461c386e9 /js
parentce6b20c59e1140867f2353361d3524e3baeb4580 (diff)
allow users to discard folder and feed errors
Diffstat (limited to 'js')
-rw-r--r--js/app/controllers/feedcontroller.coffee2
-rw-r--r--js/app/services/bl/feedbl.coffee6
-rw-r--r--js/app/services/bl/folderbl.coffee4
-rw-r--r--js/app/services/models/feedmodel.coffee20
-rw-r--r--js/app/services/models/foldermodel.coffee22
-rw-r--r--js/public/app.js91
-rw-r--r--js/tests/services/bl/feedblSpec.coffee8
-rw-r--r--js/tests/services/bl/folderblSpec.coffee12
8 files changed, 159 insertions, 6 deletions
diff --git a/js/app/controllers/feedcontroller.coffee b/js/app/controllers/feedcontroller.coffee
index 5299ead03..27432e33f 100644
--- a/js/app/controllers/feedcontroller.coffee
+++ b/js/app/controllers/feedcontroller.coffee
@@ -68,6 +68,7 @@ angular.module('News').factory '_FeedController',
@_$scope.feedExistsError = true
else
@_$scope.feedEmptyError = true
+ @_isAddingFeed = false
@_$scope.addFolder = (folderName) =>
@@ -92,6 +93,7 @@ angular.module('News').factory '_FeedController',
@_$scope.folderExistsError = true
else
@_$scope.folderEmptyError = true
+ @_isAddingFolder = false
@_$scope.$on 'moveFeedToFolder', (scope, data) =>
diff --git a/js/app/services/bl/feedbl.coffee b/js/app/services/bl/feedbl.coffee
index ef4fbac1c..6ab3c54e5 100644
--- a/js/app/services/bl/feedbl.coffee
+++ b/js/app/services/bl/feedbl.coffee
@@ -156,7 +156,11 @@ NewLoading, _ExistsError) ->
else
onSuccess(response.data)
- @_persistence.createFeed url, parentId, success
+ @_persistence.createFeed(url, parentId, success)
+
+
+ markErrorRead: (urlHash) ->
+ @_feedModel.removeByUrlHash(urlHash)
return new FeedBl(ShowAll, FeedModel, Persistence, ActiveFeed, FeedType,
diff --git a/js/app/services/bl/folderbl.coffee b/js/app/services/bl/folderbl.coffee
index 20f545e43..1084dd5b7 100644
--- a/js/app/services/bl/folderbl.coffee
+++ b/js/app/services/bl/folderbl.coffee
@@ -108,6 +108,10 @@ ItemModel, ShowAll, _ExistsError)->
@_persistence.createFolder folderName, 0, success
+ markErrorRead: (folderName) ->
+ @_folderModel.removeByName(folderName)
+
+
return new FolderBl(FolderModel, FeedBl, ShowAll, ActiveFeed, Persistence,
FeedType, ItemModel)
diff --git a/js/app/services/models/feedmodel.coffee b/js/app/services/models/feedmodel.coffee
index 5c4473b3a..405ea2651 100644
--- a/js/app/services/models/feedmodel.coffee
+++ b/js/app/services/models/feedmodel.coffee
@@ -144,5 +144,25 @@ angular.module('News').factory '_FeedModel',
return @get(query)
+ removeByUrlHash: (urlHash, clearCache=true) ->
+ ###
+ Remove an entry by id
+ ###
+
+ # remove from data map
+ for key, value of @_dataMap
+ if @_dataMap[key].urlHash == urlHash
+ delete @_dataMap[key]
+ break
+
+ for entry, counter in @_data
+ if entry.urlHash == urlHash
+ @_data.splice(counter, 1)
+ delete @_urlHash[urlHash]
+
+ if clearCache
+ @_invalidateCache()
+ break
+
return FeedModel
] \ No newline at end of file
diff --git a/js/app/services/models/foldermodel.coffee b/js/app/services/models/foldermodel.coffee
index eb1059fc8..5dad0bdae 100644
--- a/js/app/services/models/foldermodel.coffee
+++ b/js/app/services/models/foldermodel.coffee
@@ -116,5 +116,27 @@ angular.module('News').factory '_FolderModel',
return folderName.trim().toLowerCase()
+ removeByName: (name, clearCache=true) ->
+ ###
+ Remove an entry by id
+ ###
+ name = name.toLowerCase()
+
+ # remove from data map
+ for key, value of @_dataMap
+ if @_dataMap[key].name == name
+ delete @_dataMap[key]
+ break
+
+ for entry, counter in @_data
+ if entry.name == name
+ @_data.splice(counter, 1)
+ delete @_nameCache[name]
+
+ if clearCache
+ @_invalidateCache()
+ break
+
+
return FolderModel
] \ No newline at end of file
diff --git a/js/public/app.js b/js/public/app.js
index e9a35087a..994624a6f 100644
--- a/js/public/app.js
+++ b/js/public/app.js
@@ -306,10 +306,11 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
} catch (_error) {
error = _error;
if (error instanceof _ExistsError) {
- return _this._$scope.feedExistsError = true;
+ _this._$scope.feedExistsError = true;
} else {
- return _this._$scope.feedEmptyError = true;
+ _this._$scope.feedEmptyError = true;
}
+ return _this._isAddingFeed = false;
}
};
this._$scope.addFolder = function(folderName) {
@@ -329,10 +330,11 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
} catch (_error) {
error = _error;
if (error instanceof _ExistsError) {
- return _this._$scope.folderExistsError = true;
+ _this._$scope.folderExistsError = true;
} else {
- return _this._$scope.folderEmptyError = true;
+ _this._$scope.folderEmptyError = true;
}
+ return _this._isAddingFolder = false;
}
};
this._$scope.$on('moveFeedToFolder', function(scope, data) {
@@ -772,6 +774,10 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return this._persistence.createFeed(url, parentId, success);
};
+ FeedBl.prototype.markErrorRead = function(urlHash) {
+ return this._feedModel.removeByUrlHash(urlHash);
+ };
+
return FeedBl;
})(_Bl);
@@ -922,6 +928,10 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return this._persistence.createFolder(folderName, 0, success);
};
+ FolderBl.prototype.markErrorRead = function(folderName) {
+ return this._folderModel.removeByName(folderName);
+ };
+
return FolderBl;
})(_Bl);
@@ -1455,6 +1465,42 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return this.get(query);
};
+ FeedModel.prototype.removeByUrlHash = function(urlHash, clearCache) {
+ var counter, entry, key, value, _i, _len, _ref, _ref1, _results;
+
+ if (clearCache == null) {
+ clearCache = true;
+ }
+ /*
+ Remove an entry by id
+ */
+
+ _ref = this._dataMap;
+ for (key in _ref) {
+ value = _ref[key];
+ if (this._dataMap[key].urlHash === urlHash) {
+ delete this._dataMap[key];
+ break;
+ }
+ }
+ _ref1 = this._data;
+ _results = [];
+ for (counter = _i = 0, _len = _ref1.length; _i < _len; counter = ++_i) {
+ entry = _ref1[counter];
+ if (entry.urlHash === urlHash) {
+ this._data.splice(counter, 1);
+ delete this._urlHash[urlHash];
+ if (clearCache) {
+ this._invalidateCache();
+ }
+ break;
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
return FeedModel;
})(_Model);
@@ -1583,6 +1629,43 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>.
return folderName.trim().toLowerCase();
};
+ FolderModel.prototype.removeByName = function(name, clearCache) {
+ var counter, entry, key, value, _i, _len, _ref, _ref1, _results;
+
+ if (clearCache == null) {
+ clearCache = true;
+ }
+ /*
+ Remove an entry by id
+ */
+
+ name = name.toLowerCase();
+ _ref = this._dataMap;
+ for (key in _ref) {
+ value = _ref[key];
+ if (this._dataMap[key].name === name) {
+ delete this._dataMap[key];
+ break;
+ }
+ }
+ _ref1 = this._data;
+ _results = [];
+ for (counter = _i = 0, _len = _ref1.length; _i < _len; counter = ++_i) {
+ entry = _ref1[counter];
+ if (entry.name === name) {
+ this._data.splice(counter, 1);
+ delete this._nameCache[name];
+ if (clearCache) {
+ this._invalidateCache();
+ }
+ break;
+ } else {
+ _results.push(void 0);
+ }
+ }
+ return _results;
+ };
+
return FolderModel;
})(_Model);
diff --git a/js/tests/services/bl/feedblSpec.coffee b/js/tests/services/bl/feedblSpec.coffee
index 40441f1b8..01ed7c18d 100644
--- a/js/tests/services/bl/feedblSpec.coffee
+++ b/js/tests/services/bl/feedblSpec.coffee
@@ -312,3 +312,11 @@ describe 'FeedBl', ->
@response.msg)
+ it 'should mark a feed error as read by removing it', =>
+ @FeedModel.add({id: 3, urlHash: 'john'})
+
+ @FeedBl.markErrorRead('john')
+
+ expect(@FeedModel.size()).toBe(0)
+ expect(@FeedModel.getByUrlHash('john')).toBe(undefined)
+
diff --git a/js/tests/services/bl/folderblSpec.coffee b/js/tests/services/bl/folderblSpec.coffee
index 189626604..6fd35f73e 100644
--- a/js/tests/services/bl/folderblSpec.coffee
+++ b/js/tests/services/bl/folderblSpec.coffee
@@ -192,4 +192,14 @@ describe 'FolderBl', ->
expect(onSuccess).not.toHaveBeenCalled()
expect(onFailure).toHaveBeenCalled()
- expect(@FolderModel.getByName('johns').error).toBe(@response.msg) \ No newline at end of file
+ expect(@FolderModel.getByName('johns').error).toBe(@response.msg)
+
+
+ it 'should mark a folder error as read by removing it', =>
+ @FolderModel.add({id: 3, name: 'john'})
+
+ @FolderBl.markErrorRead('John')
+
+ expect(@FolderModel.size()).toBe(0)
+ expect(@FolderModel.getByName('john')).toBe(undefined)
+