mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
fix #25
This commit is contained in:
@@ -66,6 +66,7 @@ public class FeedEntryService extends GenericDAO<FeedEntry> {
|
|||||||
|
|
||||||
feed.setLastUpdated(Calendar.getInstance().getTime());
|
feed.setLastUpdated(Calendar.getInstance().getTime());
|
||||||
feed.setMessage(null);
|
feed.setMessage(null);
|
||||||
|
feed.setErrorCount(0);
|
||||||
feedService.update(feed);
|
feedService.update(feed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ public class FeedUpdater {
|
|||||||
+ e.getMessage());
|
+ e.getMessage());
|
||||||
feed.setLastUpdated(Calendar.getInstance().getTime());
|
feed.setLastUpdated(Calendar.getInstance().getTime());
|
||||||
feed.setMessage("Unable to refresh feed: " + e.getMessage());
|
feed.setMessage("Unable to refresh feed: " + e.getMessage());
|
||||||
|
feed.setErrorCount(feed.getErrorCount() + 1);
|
||||||
feedService.update(feed);
|
feedService.update(feed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ public class Feed extends AbstractModel {
|
|||||||
@Column(length = 1024)
|
@Column(length = 1024)
|
||||||
private String message;
|
private String message;
|
||||||
|
|
||||||
|
private int errorCount;
|
||||||
|
|
||||||
@ManyToMany(mappedBy = "feeds")
|
@ManyToMany(mappedBy = "feeds")
|
||||||
private Set<FeedEntry> entries = Sets.newHashSet();
|
private Set<FeedEntry> entries = Sets.newHashSet();
|
||||||
|
|
||||||
@@ -104,4 +106,12 @@ public class Feed extends AbstractModel {
|
|||||||
this.link = link;
|
this.link = link;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getErrorCount() {
|
||||||
|
return errorCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setErrorCount(int errorCount) {
|
||||||
|
this.errorCount = errorCount;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import com.google.common.collect.Lists;
|
|||||||
public class Entries implements Serializable {
|
public class Entries implements Serializable {
|
||||||
private String name;
|
private String name;
|
||||||
private String message;
|
private String message;
|
||||||
|
private int errorCount;
|
||||||
private List<Entry> entries = Lists.newArrayList();
|
private List<Entry> entries = Lists.newArrayList();
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
@@ -35,4 +36,12 @@ public class Entries implements Serializable {
|
|||||||
this.message = message;
|
this.message = message;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getErrorCount() {
|
||||||
|
return errorCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setErrorCount(int errorCount) {
|
||||||
|
this.errorCount = errorCount;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ public class EntriesREST extends AbstractREST {
|
|||||||
if (subscription != null) {
|
if (subscription != null) {
|
||||||
entries.setName(subscription.getTitle());
|
entries.setName(subscription.getTitle());
|
||||||
entries.setMessage(subscription.getFeed().getMessage());
|
entries.setMessage(subscription.getFeed().getMessage());
|
||||||
|
entries.setErrorCount(subscription.getFeed().getErrorCount());
|
||||||
|
|
||||||
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
|
||||||
.getStatuses(subscription.getFeed(), getUser(),
|
.getStatuses(subscription.getFeed(), getUser(),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
ng-class="{selected: (node.id == selectedId && selectedType == 'category')}">{{formatCategoryName({category:node})}}
|
ng-class="{selected: (node.id == selectedId && selectedType == 'category')}">{{formatCategoryName({category:node})}}
|
||||||
</label>
|
</label>
|
||||||
<ul>
|
<ul>
|
||||||
<li ng-repeat="feed in node.feeds" ng-mouseenter="hovered=feed" ng-mouseleave="hovered=null" ng-class="{error: feed.message}">
|
<li ng-repeat="feed in node.feeds" ng-mouseenter="hovered=feed" ng-mouseleave="hovered=null" ng-class="{error: feed.message && feed.errorCount > 10}">
|
||||||
<div class="dropdown pull-right">
|
<div class="dropdown pull-right">
|
||||||
<a dropdown-toggle class="pull-right"><i ng-show="hovered==feed" class="icon icon-chevron-down"></i> </a>
|
<a dropdown-toggle class="pull-right"><i ng-show="hovered==feed" class="icon icon-chevron-down"></i> </a>
|
||||||
<ul class="dropdown-menu">
|
<ul class="dropdown-menu">
|
||||||
|
|||||||
@@ -253,6 +253,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
|||||||
|
|
||||||
$scope.name = null;
|
$scope.name = null;
|
||||||
$scope.message = null;
|
$scope.message = null;
|
||||||
|
$scope.errorCount = 0;
|
||||||
$scope.entries = [];
|
$scope.entries = [];
|
||||||
|
|
||||||
$scope.settingsService = SettingsService;
|
$scope.settingsService = SettingsService;
|
||||||
@@ -287,6 +288,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
|||||||
}
|
}
|
||||||
$scope.name = data.name;
|
$scope.name = data.name;
|
||||||
$scope.message = data.message;
|
$scope.message = data.message;
|
||||||
|
$scope.errorCount = data.errorCount;
|
||||||
$scope.busy = false;
|
$scope.busy = false;
|
||||||
$scope.hasMore = data.entries.length == limit;
|
$scope.hasMore = data.entries.length == limit;
|
||||||
};
|
};
|
||||||
@@ -407,6 +409,8 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
|
|||||||
$scope.$on('reload', function(event, args) {
|
$scope.$on('reload', function(event, args) {
|
||||||
$scope.name = null;
|
$scope.name = null;
|
||||||
$scope.entries = [];
|
$scope.entries = [];
|
||||||
|
$scope.message = null;
|
||||||
|
$scope.errorCount = 0;
|
||||||
$scope.busy = false;
|
$scope.busy = false;
|
||||||
$scope.hasMore = true;
|
$scope.hasMore = true;
|
||||||
$scope.loadMoreEntries();
|
$scope.loadMoreEntries();
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion">
|
<div infinite-scroll="loadMoreEntries()" infinite-scroll-disabled="busy || !settingsService.settings.readingMode" infinite-scroll-distance="1" id="feed-accordion">
|
||||||
<div ng-show="message">Error while loading this feed : {{message}}</div>
|
<div ng-show="message && errorCount > 10">Error while loading this feed : {{message}}</div>
|
||||||
<div ng-repeat="entry in entries" class="entry" scroll-to="isOpen && current == entry" scroll-to-offset="-58">
|
<div ng-repeat="entry in entries" class="entry" scroll-to="isOpen && current == entry" scroll-to-offset="-58">
|
||||||
<a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="entryClicked(entry, $event)"
|
<a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="entryClicked(entry, $event)"
|
||||||
ng-class="{open: current == entry, closed: current != entry}">
|
ng-class="{open: current == entry, closed: current != entry}">
|
||||||
@@ -29,6 +29,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="no-entries" ng-show="!message && name && entries.length == 0 && !busy">"{{name}}" has no unread items.</div>
|
<div class="no-entries" ng-show="name && entries.length == 0 && !busy">"{{name}}" has no unread items.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
Reference in New Issue
Block a user