mirror of
https://github.com/zhigang1992/FunctionalReactivePixels.git
synced 2026-01-12 22:47:31 +08:00
Migrated FRPPhotoViewModel to RVM.
This commit is contained in:
@@ -56,7 +56,7 @@
|
||||
@strongify(self);
|
||||
|
||||
FRPPhotoViewController *photoViewController = self.pageViewController.viewControllers.firstObject;
|
||||
FRPPhotoModel *photoModel = photoViewController.viewModel.photoModel;
|
||||
FRPPhotoModel *photoModel = photoViewController.viewModel.model;
|
||||
|
||||
FRPPhotoDetailViewModel *viewModel = [[FRPPhotoDetailViewModel alloc] initWithPhotoModel:photoModel];
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
-(FRPPhotoViewController *)photoViewControllerForIndex:(NSInteger)index {
|
||||
FRPPhotoModel *photoModel = [self.viewModel photoModelAtIndex:index];
|
||||
if (photoModel) {
|
||||
FRPPhotoViewModel *photoViewModel = [[FRPPhotoViewModel alloc] initWithPhotoModel:photoModel];
|
||||
FRPPhotoViewModel *photoViewModel = [[FRPPhotoViewModel alloc] initWithModel:photoModel];
|
||||
FRPPhotoViewController *photoViewController = [[FRPPhotoViewController alloc] initWithViewModel:photoViewModel index:index];
|
||||
return photoViewController;
|
||||
}
|
||||
|
||||
@@ -52,22 +52,8 @@
|
||||
[self.view addSubview:imageView];
|
||||
self.imageView = imageView;
|
||||
|
||||
@weakify(self);
|
||||
[[self rac_signalForSelector:@selector(viewDidAppear:)] subscribeNext:^(id x) {
|
||||
@strongify(self);
|
||||
if (self.presentedViewController == nil) {
|
||||
[SVProgressHUD show];
|
||||
|
||||
[self.viewModel.loadPhotosFromNetworkCommand execute:nil];
|
||||
}
|
||||
}];
|
||||
[self.viewModel.loadPhotosFromNetworkCommand.executionSignals subscribeNext:^(id x) {
|
||||
[x subscribeCompleted:^{
|
||||
[SVProgressHUD dismiss];
|
||||
}];
|
||||
}];
|
||||
[self.viewModel.loadPhotosFromNetworkCommand.errors subscribeNext:^(id x) {
|
||||
[SVProgressHUD showErrorWithStatus:@"Error"];
|
||||
[self.viewModel.didBecomeActiveSignal subscribeNext:^(id x) {
|
||||
[SVProgressHUD dismiss];
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
@@ -10,12 +10,10 @@
|
||||
|
||||
@class FRPPhotoModel;
|
||||
|
||||
@interface FRPPhotoViewModel : NSObject
|
||||
@interface FRPPhotoViewModel : RVMViewModel
|
||||
|
||||
-(instancetype)initWithPhotoModel:(FRPPhotoModel *)photoModel;
|
||||
@property (nonatomic, readonly) FRPPhotoModel *model;
|
||||
|
||||
@property (nonatomic, readonly) FRPPhotoModel *photoModel;
|
||||
@property (nonatomic, readonly) RACCommand *loadPhotosFromNetworkCommand;
|
||||
@property (nonatomic, readonly) RACSignal *photoImageSignal;
|
||||
|
||||
-(NSString *)photoName;
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
|
||||
@interface FRPPhotoViewModel ()
|
||||
|
||||
@property (nonatomic, strong) RACCommand *loadPhotosFromNetworkCommand;
|
||||
@property (nonatomic, strong) FRPPhotoModel *photoModel;
|
||||
@property (nonatomic, strong) RACSignal *photoImageSignal;
|
||||
|
||||
@end
|
||||
@@ -23,27 +21,20 @@
|
||||
@implementation FRPPhotoViewModel
|
||||
|
||||
-(instancetype)initWithPhotoModel:(FRPPhotoModel *)photoModel {
|
||||
self = [self init];
|
||||
self = [self initWithModel:photoModel];
|
||||
if (!self) return nil;
|
||||
|
||||
self.photoModel = photoModel;
|
||||
|
||||
@weakify(self);
|
||||
self.loadPhotosFromNetworkCommand = [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
|
||||
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
|
||||
@strongify(self);
|
||||
// Fetch data
|
||||
[[FRPPhotoImporter fetchPhotoDetails:self.photoModel] subscribeError:^(NSError *error) {
|
||||
[subscriber sendError:nil];
|
||||
} completed:^{
|
||||
[subscriber sendCompleted];
|
||||
}];
|
||||
|
||||
return nil;
|
||||
[self.didBecomeActiveSignal subscribeNext:^(id x) {
|
||||
@strongify(self);
|
||||
[[FRPPhotoImporter fetchPhotoDetails:self.model] subscribeError:^(NSError *error) {
|
||||
NSLog(@"Could not fetch photo details: %@", error);
|
||||
} completed:^{
|
||||
NSLog(@"Fetched photo details.");
|
||||
}];
|
||||
}];
|
||||
|
||||
self.photoImageSignal = [RACObserve(self.photoModel, fullsizedData) map:^id(id value) {
|
||||
|
||||
self.photoImageSignal = [RACObserve(self.model, fullsizedData) map:^id(id value) {
|
||||
return [UIImage imageWithData:value];
|
||||
}];
|
||||
|
||||
@@ -51,7 +42,7 @@
|
||||
}
|
||||
|
||||
-(NSString *)photoName {
|
||||
return self.photoModel.photoName;
|
||||
return self.model.photoName;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user