RQVideoDetailSubPageViewModel.m 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //
  2. // RQVideoDetailSubPageViewModel.m
  3. // SDJK
  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) RQVideoSourceType videoSourceType;
  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.videoSourceType = [params[RQVideoSourceTypeKey] integerValue];
  25. }
  26. return self;
  27. }
  28. - (void)initialize {
  29. [super initialize];
  30. self.prefersNavigationBarHidden = YES;
  31. ///配置数据
  32. // [self rq_configureData];
  33. if (![self.subTitle isEqualToString:@"12580"]) {
  34. [self updateData];
  35. } else {
  36. self.subTitle = @"";
  37. ///配置数据
  38. [self rq_configureData];
  39. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete;
  40. }
  41. }
  42. - (void)updateData {
  43. @weakify(self);
  44. VideosItem *videosItem = self.videoArr.firstObject;
  45. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Request;
  46. [[RQ_HTTP_Service getTeachingVideoByTypeId:videosItem.teachingVideoTypeId] subscribeNext:^(NSArray *arr) {
  47. @strongify(self);
  48. self.videoArr = [arr.rac_sequence.signal map:^id _Nullable(VideosItem *videoItem) {
  49. return videoItem;
  50. }].toArray;
  51. } error:^(NSError * _Nullable error) {
  52. } completed:^{
  53. ///配置数据
  54. [self rq_configureData];
  55. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete;
  56. }];
  57. }
  58. #pragma mark - PrivateMethod
  59. - (void)rq_configureData {
  60. @weakify(self);
  61. /// 第零组
  62. RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
  63. group0.headerHeight = CGFLOAT_MIN;
  64. group0.footerHeight = CGFLOAT_MIN;
  65. NSMutableArray *itemMutableArr = @[].mutableCopy;
  66. [self.videoArr.rac_sequence.signal subscribeNext:^(VideosItem *videosItem) {
  67. videosItem.index = [self.videoArr indexOfObject:videosItem] + 1;
  68. videosItem.totalNum = self.videoArr.count;
  69. RQVideoDetailSubPageItemViewModel *videoDetailSubPageItemViewModel = [[RQVideoDetailSubPageItemViewModel alloc] initWithVideosItem:videosItem];
  70. videoDetailSubPageItemViewModel.rowHeight = RQ_FIT_HORIZONTAL(88.f);
  71. videoDetailSubPageItemViewModel.operation = ^{
  72. @strongify(self);
  73. [RQNotificationCenter postNotificationName:RQPlayVideoUrlNotification object:@{
  74. RQPlayVideoItemKey : videosItem,
  75. RQPlayVideoItemArrKey : self.videoArr,
  76. }];
  77. };
  78. [itemMutableArr addObject:videoDetailSubPageItemViewModel];
  79. } completed:^{
  80. group0.itemViewModels = itemMutableArr.copy;
  81. self.dataSource = @[group0];
  82. }];
  83. }
  84. @end