YMDynamicDetailViewModel.m 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. //
  2. // YMDynamicDetailViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/21.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMDynamicDetailViewModel.h"
  9. #import "YMDynamicDetailModel.h"
  10. #import "YMDynamicCommentModel.h"
  11. @interface YMDynamicDetailViewModel ()
  12. /// 当前数据数量
  13. @property (nonatomic, assign) NSInteger currentSize;
  14. /// 动态Id
  15. @property (nonatomic, assign) NSInteger dynamicId;
  16. /// 动态详情信息数据
  17. @property (nonatomic, strong, readwrite) NSArray <YMDynamicDetailInfoCellViewModel*>*infoDataArray;
  18. /// 动态详情评论数据
  19. @property (nonatomic, strong, readwrite) NSMutableArray <YMDynamicDetailCommentCellViewModel*>*commentDataArray;
  20. @end
  21. @implementation YMDynamicDetailViewModel
  22. - (void)ym_initialize{
  23. [super ym_initialize];
  24. self.customNavTitle = @"动态详情";
  25. self.currentPage = 1;
  26. self.currentSize = 10;
  27. self.dynamicId = [self.params intValueForKey:ParamsId default:0];
  28. }
  29. - (void)getDynamicDetailData{
  30. @weakify(self)
  31. [ZCHUDHelper showWithStatus:@"加载中..."];
  32. [LCHttpHelper requestWithURLString:DynamicDetail parameters:@{
  33. @"dynamic_id":@(self.dynamicId),
  34. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  35. @strongify(self)
  36. [ZCHUDHelper dismiss];
  37. NSDictionary* dict = (NSDictionary*)responseObject;
  38. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  39. if (code == 0) {
  40. YMDynamicDetailModel *model = [YMDynamicDetailModel yy_modelWithJSON:[dict dictionaryValueForKey:@"data" defaultValue:@{}]];
  41. YMDynamicDetailInfoCellViewModel *viewModel = [[YMDynamicDetailInfoCellViewModel alloc]initWithParams:@{
  42. ParamsModel:model
  43. }];
  44. self.infoDataArray = @[viewModel];
  45. [self.refreshUISubject sendNext:@(YMRefreshUI)];
  46. }else{
  47. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  48. }
  49. } failure:^(NSError *error) {
  50. [ZCHUDHelper showTitle:error.localizedDescription];
  51. }];
  52. }
  53. - (void)getDynamicDetailCommentListData{
  54. @weakify(self)
  55. [ZCHUDHelper showWithStatus:@"加载中..."];
  56. [LCHttpHelper requestWithURLString:DynamicDetailCommentList parameters:@{
  57. @"dynamic_id":@(self.dynamicId),
  58. @"page":@(self.currentPage),
  59. @"limit":@(self.currentSize)
  60. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  61. @strongify(self)
  62. NSDictionary* dict = (NSDictionary*)responseObject;
  63. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  64. if (code == 0) {
  65. [ZCHUDHelper dismiss];
  66. NSDictionary *data = [dict dictionaryValueForKey:@"data" defaultValue:@{}];
  67. NSArray *result = [data arrayValueForKey:@"list" defaultValue:@[]];
  68. if (self.currentPage == 1) {
  69. [self.commentDataArray removeAllObjects];
  70. }
  71. NSArray *viewModelArr = [[NSArray yy_modelArrayWithClass:[YMDynamicCommentModel class] json:result].rac_sequence map:^(YMDynamicCommentModel * _Nullable model) {
  72. YMDynamicDetailCommentCellViewModel *viewModel = [[YMDynamicDetailCommentCellViewModel alloc]initWithParams:@{
  73. ParamsModel:model
  74. }];
  75. return viewModel;
  76. }].array;
  77. [self.commentDataArray addObjectsFromArray:viewModelArr];
  78. if(self.currentPage > 0 && self.currentPage % 5 == 0){
  79. [[SDImageCache sharedImageCache] clearMemory];
  80. }
  81. [self.refreshUISubject sendNext:@(result.count < self.currentSize ? YMFooterRefresh_HasNoMoreData : YMFooterRefresh_HasMoreData)];
  82. }else{
  83. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  84. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  85. [self.refreshUISubject sendNext:@(YMRefreshError)];
  86. });
  87. }
  88. } failure:^(NSError *error) {
  89. if(self.currentPage != 1){
  90. self.currentPage--;
  91. }
  92. [ZCHUDHelper showTitle:error.localizedDescription];
  93. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  94. [self.refreshUISubject sendNext:@(YMRefreshError)];
  95. });
  96. }];
  97. }
  98. - (NSMutableArray<YMDynamicDetailCommentCellViewModel *> *)commentDataArray{
  99. if (!_commentDataArray) {
  100. _commentDataArray = [NSMutableArray array];
  101. }
  102. return _commentDataArray;
  103. }
  104. @end