Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26f95c2b13 | ||
|
|
a08898311c | ||
|
|
6a5ca09754 | ||
|
|
1de44071aa |
@@ -5,6 +5,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|||||||
and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
|
||||||
|
## [1.6.1] – 2026-01-11
|
||||||
|
### Fixed
|
||||||
|
- Reschedule update timer after changing the refresh interval of a feed
|
||||||
|
- Reschedule update timer after system sleep (fixes #26)
|
||||||
|
|
||||||
|
|
||||||
## [1.6.0] – 2025-12-13
|
## [1.6.0] – 2025-12-13
|
||||||
### Added
|
### Added
|
||||||
- *UI:* Limit content length for article tooltips. (fixes #25)
|
- *UI:* Limit content length for article tooltips. (fixes #25)
|
||||||
@@ -261,6 +267,7 @@ and this project does adhere to [Semantic Versioning](https://semver.org/spec/v2
|
|||||||
Initial release
|
Initial release
|
||||||
|
|
||||||
|
|
||||||
|
[1.6.1]: https://github.com/relikd/baRSS/compare/v1.6.0...v1.6.1
|
||||||
[1.6.0]: https://github.com/relikd/baRSS/compare/v1.5.5...v1.6.0
|
[1.6.0]: https://github.com/relikd/baRSS/compare/v1.5.5...v1.6.0
|
||||||
[1.5.5]: https://github.com/relikd/baRSS/compare/v1.5.4...v1.5.5
|
[1.5.5]: https://github.com/relikd/baRSS/compare/v1.5.4...v1.5.5
|
||||||
[1.5.4]: https://github.com/relikd/baRSS/compare/v1.5.3...v1.5.4
|
[1.5.4]: https://github.com/relikd/baRSS/compare/v1.5.3...v1.5.4
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ CODE_SIGN_IDENTITY = Apple Development
|
|||||||
ENABLE_HARDENED_RUNTIME = YES
|
ENABLE_HARDENED_RUNTIME = YES
|
||||||
|
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.14
|
MACOSX_DEPLOYMENT_TARGET = 10.14
|
||||||
MARKETING_VERSION = 1.6.0
|
MARKETING_VERSION = 1.6.1
|
||||||
PRODUCT_NAME = baRSS
|
PRODUCT_NAME = baRSS
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = de.relikd.baRSS
|
PRODUCT_BUNDLE_IDENTIFIER = de.relikd.baRSS
|
||||||
CURRENT_PROJECT_VERSION = 17752
|
CURRENT_PROJECT_VERSION = 17772
|
||||||
|
|||||||
@@ -110,13 +110,26 @@ static _Atomic(NSUInteger) _queueSize = 0;
|
|||||||
dispatch_once(&onceToken, ^{
|
dispatch_once(&onceToken, ^{
|
||||||
_timer = [NSTimer timerWithTimeInterval:NSTimeIntervalSince1970 target:[self class] selector:@selector(updateTimerCallback) userInfo:nil repeats:YES];
|
_timer = [NSTimer timerWithTimeInterval:NSTimeIntervalSince1970 target:[self class] selector:@selector(updateTimerCallback) userInfo:nil repeats:YES];
|
||||||
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
|
[[NSRunLoop mainRunLoop] addTimer:_timer forMode:NSRunLoopCommonModes];
|
||||||
|
// technically not the right place to register. But since it is run once, its easier than somewhere else.
|
||||||
|
[NSWorkspace.sharedWorkspace.notificationCenter addObserver:[self class] selector:@selector(didWakeAfterSleep) name:NSWorkspaceDidWakeNotification object:nil];
|
||||||
});
|
});
|
||||||
if (!nextTime)
|
if (!nextTime)
|
||||||
nextTime = [NSDate distantFuture];
|
nextTime = [NSDate distantFuture];
|
||||||
NSTimeInterval tolerance = [nextTime timeIntervalSinceNow] * 0.15;
|
int tolerance = (int)([nextTime timeIntervalSinceNow] * 0.15);
|
||||||
_timer.tolerance = (tolerance < 1 ? 1 : tolerance); // at least 1 sec
|
tolerance = (tolerance < 1 ? 1 : tolerance > 600 ? 600 : tolerance); // at least 1 sec, upto 10 min
|
||||||
|
_timer.tolerance = tolerance;
|
||||||
_timer.fireDate = nextTime;
|
_timer.fireDate = nextTime;
|
||||||
PostNotification(kNotificationScheduleTimerChanged, nil);
|
PostNotification(kNotificationScheduleTimerChanged, nil);
|
||||||
|
#ifdef DEBUG
|
||||||
|
NSLog(@"schedule timer: %@ (+/- %d sec)", nextTime, tolerance);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void)didWakeAfterSleep {
|
||||||
|
#ifdef DEBUG
|
||||||
|
NSLog(@"did wake from sleep");
|
||||||
|
#endif
|
||||||
|
[UpdateScheduler scheduleNextFeed];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Called when schedule timer runs out (earliest @c .schedule date). Or if forced by user.
|
/// Called when schedule timer runs out (earliest @c .schedule date). Or if forced by user.
|
||||||
|
|||||||
@@ -114,11 +114,15 @@
|
|||||||
Interval intv = [NSDate intervalForPopup:self.view.refreshUnit andField:self.view.refreshNum];
|
Interval intv = [NSDate intervalForPopup:self.view.refreshUnit andField:self.view.refreshNum];
|
||||||
[self.feedGroup setNameIfChanged:self.view.name.stringValue];
|
[self.feedGroup setNameIfChanged:self.view.name.stringValue];
|
||||||
[f.meta setRefreshIfChanged:intv];
|
[f.meta setRefreshIfChanged:intv];
|
||||||
if (self.memFeed) {
|
if (self.memFeed) { // newly created
|
||||||
[self.memFeed copyValuesTo:f ignoreError:YES];
|
[self.memFeed copyValuesTo:f ignoreError:YES];
|
||||||
if (self.faviconFile) // only if downloaded anything (nil deletes icon!)
|
if (self.faviconFile) // only if downloaded anything (nil deletes icon!)
|
||||||
[f setNewIcon:self.faviconFile];
|
[f setNewIcon:self.faviconFile];
|
||||||
self.faviconFile = nil;
|
self.faviconFile = nil;
|
||||||
|
} else { // updating existing feed meta
|
||||||
|
if (f.meta.scheduled == nil || f.meta.scheduled.timeIntervalSinceNow > f.meta.refresh) {
|
||||||
|
[f.meta scheduleNow:f.meta.refresh];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user