Updated TODOs
This commit is contained in:
33
README.md
33
README.md
@@ -36,27 +36,8 @@ ToDo
|
|||||||
----
|
----
|
||||||
|
|
||||||
- [ ] Preferences
|
- [ ] Preferences
|
||||||
- [x] Choose favorite web browser
|
|
||||||
- [x] Show list of installed browsers
|
|
||||||
- [ ] ~~Choose status bar icon?~~
|
- [ ] ~~Choose status bar icon?~~
|
||||||
- [x] Tick mark feed items based on prefs
|
|
||||||
- [x] Open a few links (# editable)
|
|
||||||
- [x] Performance: Update menu partially
|
|
||||||
- [x] Start on login
|
|
||||||
- [x] Make it system default application
|
|
||||||
- [ ] Display license info (e.g., RSXML)
|
- [ ] Display license info (e.g., RSXML)
|
||||||
- [x] Short article names
|
|
||||||
- [x] Import / Export (all feeds)
|
|
||||||
- [x] Support for `.opml` format
|
|
||||||
- [x] Append or replace
|
|
||||||
|
|
||||||
|
|
||||||
- [x] Status menu
|
|
||||||
- [x] Update menu header after mark (un)read
|
|
||||||
- [x] Pause updates functionality
|
|
||||||
- [x] Update all feeds functionality
|
|
||||||
- [x] Hold only relevant information in memory
|
|
||||||
- [x] Icon for paused / no internet state
|
|
||||||
|
|
||||||
|
|
||||||
- [ ] Edit feed
|
- [ ] Edit feed
|
||||||
@@ -64,29 +45,15 @@ ToDo
|
|||||||
- [ ] How often gets the feed updated (min, max, avg)
|
- [ ] How often gets the feed updated (min, max, avg)
|
||||||
- [ ] Automatically choose best interval?
|
- [ ] Automatically choose best interval?
|
||||||
- [ ] Show time of next update
|
- [ ] Show time of next update
|
||||||
- [x] Auto fix 301 Redirect or ask user
|
|
||||||
- [x] Make `feed://` URLs clickable
|
|
||||||
- [ ] Feeds with authentication
|
- [ ] Feeds with authentication
|
||||||
- [x] Show proper feed icon
|
|
||||||
- [x] Download and store icon file
|
|
||||||
|
|
||||||
|
|
||||||
- [ ] Other
|
- [ ] Other
|
||||||
- [ ] App Icon
|
- [ ] App Icon
|
||||||
- [ ] Translate text to different languages
|
- [ ] Translate text to different languages
|
||||||
- [x] Automatically update feeds with chosen interval
|
|
||||||
- [x] Reuse ETag and Modification date
|
|
||||||
- [x] Append only new items, keep sorting
|
|
||||||
- [x] Delete old ones eventually
|
|
||||||
- [x] Pause on internet connection lost
|
|
||||||
- [ ] Download with ephemeral url session?
|
- [ ] Download with ephemeral url session?
|
||||||
- [x] Purge cache
|
|
||||||
- [x] Manually or automatically
|
|
||||||
- [x] Add something to restore a broken state
|
|
||||||
- [x] Code Documentation (mostly methods)
|
|
||||||
- [ ] Add Sandboxing
|
- [ ] Add Sandboxing
|
||||||
- [ ] Disable Startup checkbox (or other workaround)
|
- [ ] Disable Startup checkbox (or other workaround)
|
||||||
- [x] Fix nasty bug: empty feed list (initial state)
|
|
||||||
|
|
||||||
|
|
||||||
- [ ] Additional features
|
- [ ] Additional features
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
|
||||||
printf("up and running\n");
|
|
||||||
// feed://https://feeds.feedburner.com/simpledesktops
|
// feed://https://feeds.feedburner.com/simpledesktops
|
||||||
[FeedDownload registerNetworkChangeNotification]; // will call update scheduler
|
[FeedDownload registerNetworkChangeNotification]; // will call update scheduler
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
// TODO: Add support for media player? image feed?
|
// TODO: Add support for media player? image feed?
|
||||||
// <enclosure url="https://url.mp3" length="63274022" type="audio/mpeg" />
|
// <enclosure url="https://url.mp3" length="63274022" type="audio/mpeg" />
|
||||||
// TODO: Disable 'update all' menu item during update?
|
// TODO: Disable 'update all' menu item during update?
|
||||||
|
// TODO: List of hidden preferences for readme
|
||||||
|
// TODO: Do we need to search for favicon in places other than '../favicon.ico'?
|
||||||
|
|
||||||
static NSString *kNotificationFeedUpdated = @"baRSS-notification-feed-updated";
|
static NSString *kNotificationFeedUpdated = @"baRSS-notification-feed-updated";
|
||||||
static NSString *kNotificationNetworkStatusChanged = @"baRSS-notification-network-status-changed";
|
static NSString *kNotificationNetworkStatusChanged = @"baRSS-notification-network-status-changed";
|
||||||
|
|||||||
@@ -254,7 +254,6 @@ static BOOL _nextUpdateIsForced = NO;
|
|||||||
} else {
|
} else {
|
||||||
[feed.meta setSucessfulWithResponse:response];
|
[feed.meta setSucessfulWithResponse:response];
|
||||||
if (rss) [feed updateWithRSS:rss postUnreadCountChange:YES];
|
if (rss) [feed updateWithRSS:rss postUnreadCountChange:YES];
|
||||||
// TODO: save changes for this feed only? / Partial Update
|
|
||||||
[successful addObject:feed]; // will be added even if statusCode == 304 (rss == nil)
|
[successful addObject:feed]; // will be added even if statusCode == 304 (rss == nil)
|
||||||
}
|
}
|
||||||
dispatch_group_leave(group);
|
dispatch_group_leave(group);
|
||||||
|
|||||||
@@ -157,6 +157,7 @@
|
|||||||
if (self.modalSheet.didCloseAndCancel)
|
if (self.modalSheet.didCloseAndCancel)
|
||||||
return;
|
return;
|
||||||
[self preDownload];
|
[self preDownload];
|
||||||
|
// TODO: parse webpage to find feed links instead (automatic link detection)
|
||||||
[FeedDownload newFeed:self.previousURL block:^(RSParsedFeed *result, NSError *error, NSHTTPURLResponse* response) {
|
[FeedDownload newFeed:self.previousURL block:^(RSParsedFeed *result, NSError *error, NSHTTPURLResponse* response) {
|
||||||
if (self.modalSheet.didCloseAndCancel)
|
if (self.modalSheet.didCloseAndCancel)
|
||||||
return;
|
return;
|
||||||
@@ -178,7 +179,6 @@
|
|||||||
if (self.modalSheet.didCloseAndCancel)
|
if (self.modalSheet.didCloseAndCancel)
|
||||||
return;
|
return;
|
||||||
// 1. Stop spinner animation for name field. (keep spinner for URL running until favicon downloaded)
|
// 1. Stop spinner animation for name field. (keep spinner for URL running until favicon downloaded)
|
||||||
// TODO: play error sound?
|
|
||||||
[self.spinnerName stopAnimation:nil];
|
[self.spinnerName stopAnimation:nil];
|
||||||
// 2. If URL was redirected, replace original text field value with new one. (e.g., https redirect)
|
// 2. If URL was redirected, replace original text field value with new one. (e.g., https redirect)
|
||||||
if (responseURL.length > 0 && ![responseURL isEqualToString:self.previousURL]) {
|
if (responseURL.length > 0 && ![responseURL isEqualToString:self.previousURL]) {
|
||||||
@@ -194,7 +194,7 @@
|
|||||||
if (self.feedError) {
|
if (self.feedError) {
|
||||||
[self finishDownloadWithFavicon:[NSImage imageNamed:NSImageNameCaution]];
|
[self finishDownloadWithFavicon:[NSImage imageNamed:NSImageNameCaution]];
|
||||||
} else {
|
} else {
|
||||||
NSString *faviconURL = self.feedResult.link; // TODO: add support for custom URLs ?
|
NSString *faviconURL = self.feedResult.link;
|
||||||
if (faviconURL.length == 0)
|
if (faviconURL.length == 0)
|
||||||
faviconURL = responseURL;
|
faviconURL = responseURL;
|
||||||
[FeedDownload downloadFavicon:faviconURL finished:^(NSImage * _Nullable img) {
|
[FeedDownload downloadFavicon:faviconURL finished:^(NSImage * _Nullable img) {
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ static NSString *dragNodeType = @"baRSS-feed-drag";
|
|||||||
}
|
}
|
||||||
[[NSPasteboard generalPasteboard] clearContents];
|
[[NSPasteboard generalPasteboard] clearContents];
|
||||||
[[NSPasteboard generalPasteboard] setString:str forType:NSPasteboardTypeString];
|
[[NSPasteboard generalPasteboard] setString:str forType:NSPasteboardTypeString];
|
||||||
NSLog(@"%@", str);
|
NSLog(@"%@", str); // TODO: drag-n-drop feed to opml?
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user