RQVideoDetailSubPageViewModel.m 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. @end
  14. @implementation RQVideoDetailSubPageViewModel
  15. #pragma mark - Public Method
  16. - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
  17. if (self = [super initWithServices:services params:params]) {
  18. self.videoArr = params[RQViewModelUtilKey];
  19. self.title = params[RQViewModelTitleKey];
  20. self.subTitle = params[RQViewModelIDKey];
  21. self.indexPath = params[RQViewCommonValueKey];
  22. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Default;
  23. }
  24. return self;
  25. }
  26. - (void)initialize {
  27. [super initialize];
  28. self.prefersNavigationBarHidden = YES;
  29. ///配置数据
  30. // [self rq_configureData];
  31. [self updateData];
  32. }
  33. - (void)updateData {
  34. @weakify(self);
  35. VideosItem *videosItem = self.videoArr.firstObject;
  36. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Request;
  37. [[RQ_HTTP_Service getTeachingVideoByTypeId:videosItem.teachingVideoTypeId] subscribeNext:^(NSArray *arr) {
  38. @strongify(self);
  39. self.videoArr = [arr.rac_sequence.signal map:^id _Nullable(VideosItem *videoItem) {
  40. return videoItem;
  41. }].toArray;
  42. } error:^(NSError * _Nullable error) {
  43. } completed:^{
  44. ///配置数据
  45. [self rq_configureData];
  46. self.updateDataType = RQVideoDetailSubPageUpdateDataType_Complete;
  47. }];
  48. }
  49. #pragma mark - PrivateMethod
  50. - (void)rq_configureData {
  51. @weakify(self);
  52. /// 第零组
  53. RQCommonGroupViewModel *group0 = [RQCommonGroupViewModel groupViewModel];
  54. group0.headerHeight = CGFLOAT_MIN;
  55. group0.footerHeight = CGFLOAT_MIN;
  56. NSMutableArray *itemMutableArr = @[].mutableCopy;
  57. [self.videoArr.rac_sequence.signal subscribeNext:^(VideosItem *videosItem) {
  58. videosItem.index = [self.videoArr indexOfObject:videosItem] + 1;
  59. videosItem.totalNum = self.videoArr.count;
  60. RQVideoDetailSubPageItemViewModel *videoDetailSubPageItemViewModel = [[RQVideoDetailSubPageItemViewModel alloc] initWithVideosItem:videosItem];
  61. videoDetailSubPageItemViewModel.rowHeight = RQ_FIT_HORIZONTAL(88.f);
  62. videoDetailSubPageItemViewModel.operation = ^{
  63. @strongify(self);
  64. [RQNotificationCenter postNotificationName:RQPlayVideoUrlNotification object:@{
  65. RQPlayVideoItemKey : videosItem,
  66. RQPlayVideoItemArrKey : self.videoArr,
  67. }];
  68. };
  69. [itemMutableArr addObject:videoDetailSubPageItemViewModel];
  70. } completed:^{
  71. group0.itemViewModels = itemMutableArr.copy;
  72. self.dataSource = @[group0];
  73. }];
  74. }
  75. @end