RQVideoDetailSubPageViewModel.m 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. //
  2. // RQVideoDetailSubPageViewModel.m
  3. // JSJP
  4. //
  5. // Created by 张嵘 on 2021/10/26.
  6. //
  7. #import "RQVideoDetailSubPageViewModel.h"
  8. @interface RQVideoDetailSubPageViewModel ()
  9. @property (nonatomic, readwrite, strong) NSArray *videoArr;
  10. @property (nonatomic, readwrite, copy) NSString *subTitle;
  11. @property (nonatomic, readwrite, strong) NSIndexPath *indexPath;
  12. @property (nonatomic, readwrite, assign) RQVideoDetailSubPageUpdateDataType updateDataType;
  13. @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
  14. @end
  15. @implementation RQVideoDetailSubPageViewModel
  16. #pragma mark - Public Method
  17. - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
  18. if (self = [super initWithServices:services params:params]) {
  19. self.videoArr = params[RQViewModelUtilKey];
  20. self.title = params[RQViewModelTitleKey];
  21. self.subTitle = params[RQViewModelIDKey];
  22. self.indexPath = params[RQViewCommonValueKey];
  23. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Default;
  24. self.homePageSubjectType = [params[RQHomeSubPageTypeKey] integerValue];
  25. }
  26. return self;
  27. }
  28. - (void)initialize {
  29. [super initialize];
  30. self.prefersNavigationBarHidden = YES;
  31. ///配置数据
  32. // [self rq_configureData];
  33. [self updateData];
  34. }
  35. - (void)updateData {
  36. @weakify(self);
  37. VideosItem *videosItem = self.videoArr.firstObject;
  38. if (videosItem.teachingVideoTypeId == 0 && videosItem.id == 0 && RQStringIsEmpty(videosItem.videoDescribe)) {
  39. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Request;
  40. [QMUITips showLoadingInView:DefaultTipsParentView];
  41. [[RACScheduler mainThreadScheduler] afterDelay:1.f schedule:^{
  42. @strongify(self)
  43. ///配置数据
  44. [self rq_configureData];
  45. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete;
  46. [QMUITips hideAllTips];
  47. }];
  48. } else {
  49. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Request;
  50. [[RQ_HTTP_Service getTeachingVideoByTypeId:videosItem.teachingVideoTypeId] subscribeNext:^(NSArray *arr) {
  51. @strongify(self);
  52. self.videoArr = [arr.rac_sequence.signal map:^id _Nullable(VideosItem *videoItem) {
  53. return videoItem;
  54. }].toArray;
  55. } error:^(NSError * _Nullable error) {
  56. } completed:^{
  57. @strongify(self)
  58. ///配置数据
  59. [self rq_configureData];
  60. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete;
  61. }];
  62. }
  63. }
  64. #pragma mark - PrivateMethod
  65. - (void)rq_configureData {
  66. @weakify(self);
  67. /// 第零组
  68. RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
  69. group0.headerHeight = CGFLOAT_MIN;
  70. group0.footerHeight = CGFLOAT_MIN;
  71. NSMutableArray *itemMutableArr = @[].mutableCopy;
  72. [self.videoArr.rac_sequence.signal subscribeNext:^(VideosItem *videosItem) {
  73. @strongify(self)
  74. videosItem.index = [self.videoArr indexOfObject:videosItem] + 1;
  75. videosItem.totalNum = self.videoArr.count;
  76. videosItem.subject = self.homePageSubjectType;
  77. RQVideoDetailSubPageItemViewModel *videoDetailSubPageItemViewModel = [[RQVideoDetailSubPageItemViewModel alloc] initWithVideosItem:videosItem];
  78. videoDetailSubPageItemViewModel.rowHeight = RQ_FIT_HORIZONTAL(88.f);
  79. videoDetailSubPageItemViewModel.operation = ^{
  80. @strongify(self);
  81. [RQNotificationCenter postNotificationName:RQPlayVideoUrlNotification object:@{
  82. RQPlayVideoItemKey : videosItem,
  83. RQPlayVideoItemArrKey : self.videoArr,
  84. }];
  85. };
  86. [itemMutableArr addObject:videoDetailSubPageItemViewModel];
  87. } completed:^{
  88. @strongify(self)
  89. group0.itemViewModels = itemMutableArr.copy;
  90. self.dataSource = @[group0];
  91. }];
  92. }
  93. @end