This commit is contained in:
Athou
2013-04-09 09:03:52 +02:00
parent ea8a5def8c
commit 7b9bfeb816
8 changed files with 29 additions and 3 deletions

View File

@@ -66,6 +66,7 @@ public class FeedEntryService extends GenericDAO<FeedEntry> {
feed.setLastUpdated(Calendar.getInstance().getTime());
feed.setMessage(null);
feed.setErrorCount(0);
feedService.update(feed);
}

View File

@@ -49,6 +49,7 @@ public class FeedUpdater {
+ e.getMessage());
feed.setLastUpdated(Calendar.getInstance().getTime());
feed.setMessage("Unable to refresh feed: " + e.getMessage());
feed.setErrorCount(feed.getErrorCount() + 1);
feedService.update(feed);
}
}

View File

@@ -34,6 +34,8 @@ public class Feed extends AbstractModel {
@Column(length = 1024)
private String message;
private int errorCount;
@ManyToMany(mappedBy = "feeds")
private Set<FeedEntry> entries = Sets.newHashSet();
@@ -104,4 +106,12 @@ public class Feed extends AbstractModel {
this.link = link;
}
public int getErrorCount() {
return errorCount;
}
public void setErrorCount(int errorCount) {
this.errorCount = errorCount;
}
}

View File

@@ -9,6 +9,7 @@ import com.google.common.collect.Lists;
public class Entries implements Serializable {
private String name;
private String message;
private int errorCount;
private List<Entry> entries = Lists.newArrayList();
public String getName() {
@@ -35,4 +36,12 @@ public class Entries implements Serializable {
this.message = message;
}
public int getErrorCount() {
return errorCount;
}
public void setErrorCount(int errorCount) {
this.errorCount = errorCount;
}
}

View File

@@ -55,6 +55,7 @@ public class EntriesREST extends AbstractREST {
if (subscription != null) {
entries.setName(subscription.getTitle());
entries.setMessage(subscription.getFeed().getMessage());
entries.setErrorCount(subscription.getFeed().getErrorCount());
List<FeedEntryStatus> unreadEntries = feedEntryStatusService
.getStatuses(subscription.getFeed(), getUser(),

View File

@@ -3,7 +3,7 @@
ng-class="{selected: (node.id == selectedId && selectedType == 'category')}">{{formatCategoryName({category:node})}}
</label>
<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">
<a dropdown-toggle class="pull-right"><i ng-show="hovered==feed" class="icon icon-chevron-down"></i> </a>
<ul class="dropdown-menu">

View File

@@ -253,6 +253,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
$scope.name = null;
$scope.message = null;
$scope.errorCount = 0;
$scope.entries = [];
$scope.settingsService = SettingsService;
@@ -287,6 +288,7 @@ module.controller('FeedListCtrl', function($scope, $stateParams, $http, $route,
}
$scope.name = data.name;
$scope.message = data.message;
$scope.errorCount = data.errorCount;
$scope.busy = false;
$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.name = null;
$scope.entries = [];
$scope.message = null;
$scope.errorCount = 0;
$scope.busy = false;
$scope.hasMore = true;
$scope.loadMoreEntries();

View File

@@ -5,7 +5,7 @@
</div>
<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">
<a href="{{entry.url}}" target="_blank" class="entry-heading" ng-click="entryClicked(entry, $event)"
ng-class="{open: current == entry, closed: current != entry}">
@@ -29,6 +29,6 @@
</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>