Reverting back to string based version compare. Using customized comparator based ond Sparkle verison compare

This commit is contained in:
Michael Starke
2018-10-24 16:07:38 +02:00
parent 20ed81a5e7
commit 3cd8d07552
23 changed files with 495 additions and 470 deletions

View File

@@ -24,12 +24,20 @@
#import "MPConstants.h"
#import "MPPluginRepositoryItem.h"
NSString *const MPPluginRepositoryDidUpdateAvailablePluginsNotification = @"com.hicknhack.macpass.MPPluginRepositoryDidInitializeAvailablePluginsNotification";
@interface MPPluginRepository ()
@property (nonatomic, copy) NSArray<MPPluginRepositoryItem *> *availablePlugins;
@property NSTimeInterval lastDataFetchTime;
@property BOOL isInitialized;
@end
@implementation MPPluginRepository
@synthesize availablePlugins = _availablePlugins;
+ (instancetype)defaultRepository {
static MPPluginRepository *instance;
static dispatch_once_t onceToken;
@@ -39,6 +47,36 @@
return instance;
}
- (instancetype)init {
self = [super init];
if(self) {
_isInitialized = NO;
[self fetchRepositoryDataCompletionHandler:^(NSArray<MPPluginRepositoryItem *> * _Nonnull availablePlugins) {
self.availablePlugins = availablePlugins;
self.isInitialized = YES;
}];
}
return self;
}
- (NSArray<MPPluginRepositoryItem *> *)availablePlugins {
/* update cache on every read if it's older than 5 minutes */
if((NSDate.timeIntervalSinceReferenceDate - self.lastDataFetchTime) > 60*5 ) {
NSLog(@"%@: updating available plugins cache.", self.className);
[self fetchRepositoryDataCompletionHandler:^(NSArray<MPPluginRepositoryItem *> * _Nonnull availablePlugins) {
self.availablePlugins = availablePlugins;
}];
}
return _availablePlugins;
}
- (void)setAvailablePlugins:(NSArray<MPPluginRepositoryItem *> *)availablePlugins {
@synchronized (self) {
_availablePlugins = [availablePlugins copy];
self.lastDataFetchTime = NSDate.timeIntervalSinceReferenceDate;
[NSNotificationCenter.defaultCenter postNotificationName:MPPluginRepositoryDidUpdateAvailablePluginsNotification object:self];
}
}
- (void)fetchRepositoryDataCompletionHandler:(void (^)(NSArray<MPPluginRepositoryItem *> * _Nonnull))completionHandler {
NSString *urlString = NSBundle.mainBundle.infoDictionary[MPBundlePluginRepositoryURLKey];