8
8
9
9
#import " MRCTrendingViewModel.h"
10
10
11
+ @interface MRCTrendingViewModel ()
12
+
13
+ @property (nonatomic , strong ) RACSignal *optionsSignal;
14
+
15
+ @end
16
+
11
17
@implementation MRCTrendingViewModel
12
18
13
19
- (void )initialize {
14
20
[super initialize ];
15
21
22
+ self.shouldRequestRemoteDataOnViewDidLoad = NO ;
23
+ self.requestRemoteDataCommand .allowsConcurrentExecution = YES ;
24
+
16
25
NSString *since = [[NSUserDefaults standardUserDefaults ] stringForKey: @" since" ];
17
26
NSString *language = [[NSUserDefaults standardUserDefaults ] stringForKey: @" language" ];
18
27
@@ -24,17 +33,15 @@ - (void)initialize {
24
33
RAC (self, title) = RACObserve (self, language);
25
34
RAC (self, subtitle) = RACObserve (self, since);
26
35
36
+ self.optionsSignal = [RACSignal combineLatest: @[ RACObserve (self , since).distinctUntilChanged,
37
+ RACObserve (self , language).distinctUntilChanged, ]];
38
+
27
39
@weakify (self)
28
- [[[RACSignal
29
- combineLatest: @[
30
- RACObserve (self , since).distinctUntilChanged,
31
- RACObserve (self , language).distinctUntilChanged
32
- ]]
33
- skip: 1 ]
34
- subscribeNext: ^(id x) {
35
- @strongify (self)
36
- [self .requestRemoteDataCommand execute: nil ];
37
- }];
40
+ [self .optionsSignal subscribeNext: ^(id x) {
41
+ @strongify (self)
42
+ self.dataSource = nil ;
43
+ [self .requestRemoteDataCommand execute: nil ];
44
+ }];
38
45
}
39
46
40
47
- (MRCReposViewModelType)type {
@@ -60,9 +67,10 @@ - (id)fetchLocalData {
60
67
}
61
68
62
69
- (RACSignal *)requestRemoteDataSignalWithPage : (NSUInteger )page {
63
- return [[self .services
64
- repositoryService ]
65
- requestTrendingRepositoriesSince: self .since language: self .language];
70
+ return [[[self .services
71
+ repositoryService ]
72
+ requestTrendingRepositoriesSince: self .since language: self .language]
73
+ takeUntil: [self .optionsSignal skip: 1 ]];
66
74
}
67
75
68
76
@end
0 commit comments