// // RQVideoDetailSubPageViewModel.m // JSJP // // Created by 张嵘 on 2021/10/26. // #import "RQVideoDetailSubPageViewModel.h" @interface RQVideoDetailSubPageViewModel () @property (nonatomic, readwrite, strong) NSArray *videoArr; @property (nonatomic, readwrite, copy) NSString *subTitle; @property (nonatomic, readwrite, strong) NSIndexPath *indexPath; @property (nonatomic, readwrite, assign) RQVideoDetailSubPageUpdateDataType updateDataType; @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType; @end @implementation RQVideoDetailSubPageViewModel #pragma mark - Public Method - (instancetype)initWithServices:(id)services params:(NSDictionary *)params { if (self = [super initWithServices:services params:params]) { self.videoArr = params[RQViewModelUtilKey]; self.title = params[RQViewModelTitleKey]; self.subTitle = params[RQViewModelIDKey]; self.indexPath = params[RQViewCommonValueKey]; self.updateDataType = RQVideoDetailSubPageUpdateDataType_Default; self.homePageSubjectType = [params[RQHomeSubPageTypeKey] integerValue]; } return self; } - (void)initialize { [super initialize]; self.prefersNavigationBarHidden = YES; ///配置数据 // [self rq_configureData]; [self updateData]; } - (void)updateData { @weakify(self); VideosItem *videosItem = self.videoArr.firstObject; if (videosItem.teachingVideoTypeId == 0 && videosItem.id == 0 && RQStringIsEmpty(videosItem.videoDescribe)) { self.updateDataType = RQVideoDetailSubPageUpdateDataType_Request; [QMUITips showLoadingInView:DefaultTipsParentView]; [[RACScheduler mainThreadScheduler] afterDelay:1.f schedule:^{ @strongify(self) ///配置数据 [self rq_configureData]; self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete; [QMUITips hideAllTips]; }]; } else { self.updateDataType = RQVideoDetailSubPageUpdateDataType_Request; [[RQ_HTTP_Service getTeachingVideoByTypeId:videosItem.teachingVideoTypeId] subscribeNext:^(NSArray *arr) { @strongify(self); self.videoArr = [arr.rac_sequence.signal map:^id _Nullable(VideosItem *videoItem) { return videoItem; }].toArray; } error:^(NSError * _Nullable error) { } completed:^{ @strongify(self) ///配置数据 [self rq_configureData]; self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete; }]; } } #pragma mark - PrivateMethod - (void)rq_configureData { @weakify(self); /// 第零组 RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel]; group0.headerHeight = CGFLOAT_MIN; group0.footerHeight = CGFLOAT_MIN; NSMutableArray *itemMutableArr = @[].mutableCopy; [self.videoArr.rac_sequence.signal subscribeNext:^(VideosItem *videosItem) { @strongify(self) videosItem.index = [self.videoArr indexOfObject:videosItem] + 1; videosItem.totalNum = self.videoArr.count; videosItem.subject = self.homePageSubjectType; RQVideoDetailSubPageItemViewModel *videoDetailSubPageItemViewModel = [[RQVideoDetailSubPageItemViewModel alloc] initWithVideosItem:videosItem]; videoDetailSubPageItemViewModel.rowHeight = RQ_FIT_HORIZONTAL(88.f); videoDetailSubPageItemViewModel.operation = ^{ @strongify(self); [RQNotificationCenter postNotificationName:RQPlayVideoUrlNotification object:@{ RQPlayVideoItemKey : videosItem, RQPlayVideoItemArrKey : self.videoArr, }]; }; [itemMutableArr addObject:videoDetailSubPageItemViewModel]; } completed:^{ @strongify(self) group0.itemViewModels = itemMutableArr.copy; self.dataSource = @[group0]; }]; } @end