YMDynamicMessagesViewModel.m 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. //
  2. // YMDynamicMessagesViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/21.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMDynamicMessagesViewModel.h"
  9. #import "YMDynamicMessagesModel.h"
  10. @interface YMDynamicMessagesViewModel ()
  11. /// 当前数据数量
  12. @property (nonatomic, assign) NSInteger currentSize;
  13. /// 列表数据
  14. @property (nonatomic, strong, readwrite) NSMutableArray <YMDynamicMessagesCellViewModel*>*listDataArray;
  15. /// 前往动态详情
  16. @property (nonatomic, strong, readwrite) RACSubject *gotoDynamicDetailSubject;
  17. @end
  18. @implementation YMDynamicMessagesViewModel
  19. - (void)ym_initialize{
  20. [super ym_initialize];
  21. self.customNavTitle = @"动态消息";
  22. self.currentPage = 1;
  23. self.currentSize = 10;
  24. @weakify(self)
  25. [[self.gotoDynamicDetailSubject takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id _Nullable value) {
  26. @strongify(self)
  27. if ([value intValue] != 0) {
  28. YMDynamicDetailViewModel *dynamicDetailVM = [[YMDynamicDetailViewModel alloc]initWithParams:@{
  29. ParamsId:@([value intValue])
  30. }];
  31. [YMRouter openURL:stringFormat(@"%@%@", YM_ROUTER_URL_PREFIX, YM_ROUTER_DYNAMIC_DETAIL) withUserInfo:@{
  32. RouterViewModel:dynamicDetailVM
  33. } completion:nil];
  34. }
  35. }];
  36. }
  37. - (void)getDynamicMessagesListData{
  38. @weakify(self)
  39. [ZCHUDHelper showWithStatus:@"加载中..."];
  40. [LCHttpHelper requestWithURLString:DynamicMessagesList parameters:@{
  41. @"page":@(self.currentPage),
  42. @"limit":@(self.currentSize)
  43. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  44. @strongify(self)
  45. [ZCHUDHelper dismiss];
  46. NSDictionary* dict = (NSDictionary*)responseObject;
  47. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  48. if (code == 0) {
  49. NSDictionary *data = [dict dictionaryValueForKey:@"data" defaultValue:@{}];
  50. NSArray *result = [data arrayValueForKey:@"list" defaultValue:@[]];
  51. if (self.currentPage == 1) {
  52. [self.listDataArray removeAllObjects];
  53. }
  54. NSArray *viewModelArr = [[NSArray yy_modelArrayWithClass:[YMDynamicMessagesModel class] json:result].rac_sequence map:^(YMDynamicMessagesModel * _Nullable model) {
  55. YMDynamicMessagesCellViewModel *viewModel = [[YMDynamicMessagesCellViewModel alloc]initWithParams:@{
  56. ParamsModel:model
  57. }];
  58. return viewModel;
  59. }].array;
  60. [self.listDataArray addObjectsFromArray:viewModelArr];
  61. if(self.currentPage > 0 && self.currentPage % 5 == 0){
  62. [[SDImageCache sharedImageCache] clearMemory];
  63. }
  64. [self.refreshUISubject sendNext:@(result.count < self.currentSize ? YMFooterRefresh_HasNoMoreData : YMFooterRefresh_HasMoreData)];
  65. }else{
  66. [ZCHUDHelper showTitle:[dict objectForKey:@"message"]];
  67. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  68. [self.refreshUISubject sendNext:@(YMRefreshError)];
  69. });
  70. }
  71. } failure:^(NSError *error) {
  72. if(self.currentPage != 1){
  73. self.currentPage--;
  74. }
  75. [ZCHUDHelper showTitle:error.localizedDescription];
  76. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  77. [self.refreshUISubject sendNext:@(YMRefreshError)];
  78. });
  79. }];
  80. }
  81. - (NSMutableArray<YMDynamicMessagesCellViewModel *> *)listDataArray{
  82. if (!_listDataArray) {
  83. _listDataArray = [NSMutableArray array];
  84. }
  85. return _listDataArray;
  86. }
  87. - (RACSubject *)gotoDynamicDetailSubject{
  88. if (!_gotoDynamicDetailSubject) {
  89. _gotoDynamicDetailSubject = [RACSubject subject];
  90. }
  91. return _gotoDynamicDetailSubject;
  92. }
  93. @end