mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Adding infrequent site stories to iOS. Also adding documentation to API.
This commit is contained in:
parent
2ffdabdbb8
commit
cf26b3aced
8 changed files with 65 additions and 18 deletions
|
@ -47,7 +47,7 @@
|
|||
- (NSString *)title {
|
||||
NSString *title = self.info[@"feed_title"];
|
||||
|
||||
if ([title isEqualToString:@" "] || [title isEqualToString:@"everything"]) {
|
||||
if ([title isEqualToString:@" "] || [title isEqualToString:@"everything"] || [title isEqualToString:@"infrequent"]) {
|
||||
return @"";
|
||||
} else {
|
||||
return title;
|
||||
|
|
|
@ -128,6 +128,8 @@
|
|||
- (void)buildMenuOptions {
|
||||
BOOL everything = appDelegate.storiesCollection.isRiverView &&
|
||||
[appDelegate.storiesCollection.activeFolder isEqualToString:@"everything"];
|
||||
BOOL infrequent = appDelegate.storiesCollection.isRiverView &&
|
||||
[appDelegate.storiesCollection.activeFolder isEqualToString:@"infrequent"];
|
||||
BOOL read = appDelegate.storiesCollection.isReadView;
|
||||
BOOL saved = appDelegate.storiesCollection.isSavedView;
|
||||
|
||||
|
@ -137,7 +139,7 @@
|
|||
// appDelegate.storiesCollection.activeFolder :
|
||||
// [appDelegate.storiesCollection.activeFeed objectForKey:@"feed_title"];
|
||||
|
||||
if (!everything && !read && !saved) {
|
||||
if (!everything && !infrequent && !read && !saved) {
|
||||
NSString *deleteText = [NSString stringWithFormat:@"Delete %@",
|
||||
appDelegate.storiesCollection.isRiverView ?
|
||||
@"this entire folder" :
|
||||
|
@ -149,7 +151,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
if (!appDelegate.storiesCollection.isRiverView && !saved && !read) {
|
||||
if (!appDelegate.storiesCollection.isRiverView && !infrequent && !saved && !read) {
|
||||
[options addObject:[@"Rename this site" uppercaseString]];
|
||||
[options addObject:[@"Mute this site" uppercaseString]];
|
||||
[options addObject:[@"Train this site" uppercaseString]];
|
||||
|
|
|
@ -901,11 +901,16 @@
|
|||
subarrayWithRange:NSMakeRange(0, MIN(storiesCollection.activeFolderFeeds.count, 800))]
|
||||
componentsJoinedByString:@"&f="];
|
||||
}
|
||||
NSString *infrequent = @"false";
|
||||
if ([storiesCollection.activeFolder isEqualToString:@"infrequent"]) {
|
||||
infrequent = @"30";
|
||||
}
|
||||
theFeedDetailURL = [NSString stringWithFormat:
|
||||
@"%@/reader/river_stories/?include_hidden=true&f=%@&page=%d",
|
||||
@"%@/reader/river_stories/?include_hidden=true&f=%@&page=%d&infrequent=%@",
|
||||
self.appDelegate.url,
|
||||
feeds,
|
||||
storiesCollection.feedPage];
|
||||
storiesCollection.feedPage,
|
||||
infrequent];
|
||||
}
|
||||
|
||||
|
||||
|
@ -1428,6 +1433,8 @@
|
|||
feedTitle = @"Global Shared Stories";
|
||||
} else if ([storiesCollection.activeFolder isEqualToString:@"everything"]) {
|
||||
feedTitle = @"All Stories";
|
||||
} else if ([storiesCollection.activeFolder isEqualToString:@"infrequent"]) {
|
||||
feedTitle = @"Infrequent Site Stories";
|
||||
} else if (storiesCollection.isSavedView && storiesCollection.activeSavedStoryTag) {
|
||||
feedTitle = storiesCollection.activeSavedStoryTag;
|
||||
} else if ([storiesCollection.activeFolder isEqualToString:@"read_stories"]) {
|
||||
|
@ -1784,7 +1791,7 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
|||
NSMutableDictionary *params = [NSMutableDictionary dictionary];
|
||||
|
||||
if (storiesCollection.isRiverView) {
|
||||
if ([storiesCollection.activeFolder isEqual:@"everything"]) {
|
||||
if ([storiesCollection.activeFolder isEqual:@"everything"] || [storiesCollection.activeFolder isEqual:@"infrequent"]) {
|
||||
for (NSString *folderName in appDelegate.dictFoldersArray) {
|
||||
for (id feedId in [appDelegate.dictFolders objectForKey:folderName]) {
|
||||
if (![feedId isKindOfClass:[NSString class]] || ![feedId startsWith:@"saved:"]) {
|
||||
|
|
|
@ -121,6 +121,8 @@
|
|||
folderTitle = [@"All Shared Stories" uppercaseString];
|
||||
} else if (section == 2) {
|
||||
folderTitle = [@"All Stories" uppercaseString];
|
||||
} else if (section == 3) {
|
||||
folderTitle = [@"Infrequent Site Stories" uppercaseString];
|
||||
} else if ([folderName isEqual:@"read_stories"]) {
|
||||
folderTitle = [@"Read Stories" uppercaseString];
|
||||
} else if ([folderName isEqual:@"saved_stories"]) {
|
||||
|
@ -174,7 +176,7 @@
|
|||
disclosureButton.frame = CGRectMake(customView.frame.size.width - 32, CGRectGetMidY(self.bounds)-disclosureHeight/2-1, disclosureHeight, disclosureHeight);
|
||||
|
||||
// Add collapse button to all folders except Everything
|
||||
if (section != 0 && section != 2 && ![folderName isEqual:@"read_stories"]) {
|
||||
if (section != 0 && section != 2 && section != 3 && ![folderName isEqual:@"read_stories"]) {
|
||||
if (!isFolderCollapsed) {
|
||||
UIImage *disclosureImage = [UIImage imageNamed:@"disclosure_down.png"];
|
||||
[disclosureButton setImage:disclosureImage forState:UIControlStateNormal];
|
||||
|
@ -228,6 +230,14 @@
|
|||
folderImageViewX = 7;
|
||||
}
|
||||
allowLongPress = YES;
|
||||
} else if (section == 3) {
|
||||
folderImage = [UIImage imageNamed:@"ak-icon-allstories.png"];
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
folderImageViewX = 10;
|
||||
} else {
|
||||
folderImageViewX = 7;
|
||||
}
|
||||
allowLongPress = NO;
|
||||
} else if ([folderName isEqual:@"saved_stories"]) {
|
||||
folderImage = [UIImage imageNamed:@"clock.png"];
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
|
|
|
@ -1316,7 +1316,7 @@
|
|||
}
|
||||
|
||||
- (NSArray *)feedIdsForFolderTitle:(NSString *)folderTitle {
|
||||
if ([folderTitle isEqualToString:@"everything"]) {
|
||||
if ([folderTitle isEqualToString:@"everything"] || [folderTitle isEqualToString:@"infrequent"]) {
|
||||
return @[folderTitle];
|
||||
} else {
|
||||
return self.dictFolders[folderTitle];
|
||||
|
@ -1443,10 +1443,10 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if ([folder isEqualToString:@"everything"]) {
|
||||
} else if ([folder isEqualToString:@"everything"] || [folder isEqualToString:@"infrequent"]) {
|
||||
feedDetailView.storiesCollection.isRiverView = YES;
|
||||
// add all the feeds from every NON blurblog folder
|
||||
[feedDetailView.storiesCollection setActiveFolder:@"everything"];
|
||||
[feedDetailView.storiesCollection setActiveFolder:folder];
|
||||
for (NSString *folderName in self.feedsViewController.activeFeedLocations) {
|
||||
if ([folderName isEqualToString:@"river_blurblogs"]) continue;
|
||||
if ([folderName isEqualToString:@"read_stories"]) continue;
|
||||
|
@ -1949,7 +1949,9 @@
|
|||
(!folderName && [storiesCollection.activeFolder isEqual:@"river_global"])) {
|
||||
total = 0;
|
||||
} else if ([folderName isEqual:@"everything"] ||
|
||||
(!folderName && [storiesCollection.activeFolder isEqual:@"everything"])) {
|
||||
[folderName isEqual:@"infrequent"] ||
|
||||
(!folderName && ([storiesCollection.activeFolder isEqual:@"everything"] ||
|
||||
[storiesCollection.activeFolder isEqual:@"infrequent"]))) {
|
||||
// TODO: Fix race condition where self.dictUnreadCounts can be changed while being updated.
|
||||
for (id feedId in self.dictUnreadCounts) {
|
||||
total += [self unreadCountForFeed:feedId];
|
||||
|
@ -2007,7 +2009,9 @@
|
|||
(!folderName && [storiesCollection.activeFolder isEqual:@"river_global"])) {
|
||||
// Nothing for global
|
||||
} else if ([folderName isEqual:@"everything"] ||
|
||||
(!folderName && [storiesCollection.activeFolder isEqual:@"everything"])) {
|
||||
[folderName isEqual:@"infrequent"] ||
|
||||
(!folderName && ([storiesCollection.activeFolder isEqual:@"everything"] ||
|
||||
[storiesCollection.activeFolder isEqual:@"infrequent"]))) {
|
||||
for (NSArray *folder in [self.dictFolders allValues]) {
|
||||
for (id feedId in folder) {
|
||||
if ([feedId isKindOfClass:[NSString class]] && [feedId startsWith:@"saved:"]) {
|
||||
|
@ -2079,7 +2083,7 @@
|
|||
#pragma mark Mark as read
|
||||
|
||||
- (void)markActiveFolderAllRead {
|
||||
if ([storiesCollection.activeFolder isEqual:@"everything"]) {
|
||||
if ([storiesCollection.activeFolder isEqual:@"everything"] || [storiesCollection.activeFolder isEqual:@"infrequent"]) {
|
||||
for (NSString *folderName in self.dictFoldersArray) {
|
||||
for (id feedId in [self.dictFolders objectForKey:folderName]) {
|
||||
[self markFeedAllRead:feedId];
|
||||
|
@ -2560,7 +2564,8 @@
|
|||
|
||||
- (NSString *)extractParentFolderName:(NSString *)folderName {
|
||||
if ([folderName containsString:@"Top Level"] ||
|
||||
[folderName isEqual:@"everything"]) {
|
||||
[folderName isEqual:@"everything"] ||
|
||||
[folderName isEqual:@"infrequent"]) {
|
||||
folderName = @"";
|
||||
}
|
||||
|
||||
|
@ -2577,7 +2582,8 @@
|
|||
|
||||
- (NSString *)extractFolderName:(NSString *)folderName {
|
||||
if ([folderName containsString:@"Top Level"] ||
|
||||
[folderName isEqual:@"everything"]) {
|
||||
[folderName isEqual:@"everything"] ||
|
||||
[folderName isEqual:@"infrequent"]) {
|
||||
folderName = @"";
|
||||
}
|
||||
if ([folderName containsString:@" - "]) {
|
||||
|
@ -2788,6 +2794,9 @@
|
|||
} else if (storiesCollection.isRiverView &&
|
||||
[storiesCollection.activeFolder isEqualToString:@"everything"]) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" All Stories"];
|
||||
} else if (storiesCollection.isRiverView &&
|
||||
[storiesCollection.activeFolder isEqualToString:@"infrequent"]) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" Infrequent Site Stories"];
|
||||
} else if (storiesCollection.isSavedView && storiesCollection.activeSavedStoryTag) {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||
titleLabel.text = [NSString stringWithFormat:@" %@", storiesCollection.activeSavedStoryTag];
|
||||
|
@ -2827,6 +2836,9 @@
|
|||
} else if (storiesCollection.isRiverView &&
|
||||
[storiesCollection.activeFolder isEqualToString:@"everything"]) {
|
||||
titleImage = [UIImage imageNamed:@"ak-icon-allstories.png"];
|
||||
} else if (storiesCollection.isRiverView &&
|
||||
[storiesCollection.activeFolder isEqualToString:@"infrequent"]) {
|
||||
titleImage = [UIImage imageNamed:@"ak-icon-allstories.png"];
|
||||
} else if (storiesCollection.isSavedView && storiesCollection.activeSavedStoryTag) {
|
||||
titleImage = [UIImage imageNamed:@"tag.png"];
|
||||
} else if ([storiesCollection.activeFolder isEqualToString:@"read_stories"]) {
|
||||
|
|
|
@ -683,7 +683,11 @@ static UIFont *userLabelFont;
|
|||
[appDelegate.dictFoldersArray removeObject:@"everything"];
|
||||
[appDelegate.dictFoldersArray insertObject:@"everything" atIndex:2];
|
||||
}
|
||||
|
||||
|
||||
// Add Infrequent folder
|
||||
[appDelegate.dictFoldersArray removeObject:@"infrequent"];
|
||||
[appDelegate.dictFoldersArray insertObject:@"infrequent" atIndex:3];
|
||||
|
||||
// Add Read Stories folder
|
||||
[appDelegate.dictFoldersArray removeObject:@"read_stories"];
|
||||
[appDelegate.dictFoldersArray insertObject:@"read_stories" atIndex:appDelegate.dictFoldersArray.count];
|
||||
|
@ -1159,6 +1163,8 @@ static UIFont *userLabelFont;
|
|||
folderName = @"river_blurblogs";
|
||||
} else if (indexPath.section == 2) {
|
||||
folderName = @"everything";
|
||||
} else if (indexPath.section == 3) {
|
||||
folderName = @"infrequent";
|
||||
} else {
|
||||
folderName = [appDelegate.dictFoldersArray objectAtIndex:indexPath.section];
|
||||
}
|
||||
|
@ -1306,7 +1312,7 @@ heightForHeaderInSection:(NSInteger)section {
|
|||
NSString *folderName = [appDelegate.dictFoldersArray objectAtIndex:section];
|
||||
|
||||
BOOL visibleFeeds = [[self.visibleFolders objectForKey:folderName] boolValue];
|
||||
if (!visibleFeeds && section != 2 && section != 0 &&
|
||||
if (!visibleFeeds && section != 2 && section != 3 && section != 0 &&
|
||||
![folderName isEqualToString:@"saved_stories"] &&
|
||||
![folderName isEqualToString:@"read_stories"]) {
|
||||
return 0;
|
||||
|
@ -1339,6 +1345,8 @@ heightForHeaderInSection:(NSInteger)section {
|
|||
folder = @"river_blurblogs";
|
||||
} else if (tag == 2) {
|
||||
folder = @"everything";
|
||||
} else if (tag == 3) {
|
||||
folder = @"infrequent";
|
||||
} else {
|
||||
folder = [NSString stringWithFormat:@"%ld", (long)tag];
|
||||
}
|
||||
|
@ -1412,7 +1420,7 @@ heightForHeaderInSection:(NSInteger)section {
|
|||
}
|
||||
|
||||
- (void)markFeedsRead:(NSArray *)feedIds cutoffDays:(NSInteger)days {
|
||||
if (feedIds.count == 1 && [feedIds.firstObject isEqual:@"everything"]) {
|
||||
if (feedIds.count == 1 && ([feedIds.firstObject isEqual:@"everything"] || [feedIds.firstObject isEqual:@"infrequent"])) {
|
||||
[self markEverythingReadWithDays:days];
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -260,6 +260,9 @@
|
|||
} else if (appDelegate.storiesCollection.isRiverView &&
|
||||
[appDelegate.storiesCollection.activeFolder isEqualToString:@"everything"]) {
|
||||
titleImage = [UIImage imageNamed:@"ak-icon-allstories.png"];
|
||||
} else if (appDelegate.storiesCollection.isRiverView &&
|
||||
[appDelegate.storiesCollection.activeFolder isEqualToString:@"infrequent"]) {
|
||||
titleImage = [UIImage imageNamed:@"ak-icon-allstories.png"];
|
||||
} else if (appDelegate.storiesCollection.isSavedView &&
|
||||
appDelegate.storiesCollection.activeSavedStoryTag) {
|
||||
titleImage = [UIImage imageNamed:@"tag.png"];
|
||||
|
|
|
@ -299,6 +299,11 @@
|
|||
Search for a keyword or phrase in the folder. Note that only premium users can search feeds.
|
||||
optional: true
|
||||
example: "pizza"
|
||||
- key: infrequent
|
||||
desc: "Show only stories from infrequently published sites. Specify the number of stories/month (default: 30) or specify <code>false</code>."
|
||||
optional: true
|
||||
default: "false"
|
||||
example: 30
|
||||
tips:
|
||||
- >
|
||||
Counts are broken into three. Add them up for a total, but you shouldn't show or count the hidden stories:
|
||||
|
|
Loading…
Add table
Reference in a new issue