RQWrongAndCollectionCell.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. //
  2. // RQWrongAndCollectionCell.m
  3. // SDJK
  4. //
  5. // Created by 张嵘 on 2022/5/23.
  6. //
  7. #import "RQWrongAndCollectionCell.h"
  8. @interface RQWrongAndCollectionCell ()
  9. @property (nonatomic, readwrite, strong) RQWrongAndCollectionItemViewModel *viewModel;
  10. @property (weak, nonatomic) IBOutlet UIImageView *myBgImageView;
  11. @property (weak, nonatomic) IBOutlet UILabel *myTitleLabel;
  12. @property (weak, nonatomic) IBOutlet UILabel *numLabel;
  13. @property (weak, nonatomic) IBOutlet UIButton *clearBtn;
  14. @property (weak, nonatomic) IBOutlet QMUIButton *synBtn;
  15. @end
  16. @implementation RQWrongAndCollectionCell
  17. #pragma mark - PublicMethods
  18. + (instancetype)cellWithTableView:(UITableView *)tableView {
  19. static NSString *ID = @"RQWrongAndCollectionCell";
  20. RQWrongAndCollectionCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
  21. if (!cell) {
  22. cell = [self rq_viewFromXib];
  23. cell.selectionStyle = UITableViewCellSelectionStyleNone;
  24. cell.clearBtn.layer.cornerRadius = RQ_FIT_HORIZONTAL(30.f) / 2.f;
  25. cell.synBtn.layer.cornerRadius = RQ_FIT_HORIZONTAL(30.f) / 2.f;
  26. }
  27. return cell;
  28. }
  29. - (void)bindViewModel:(RQWrongAndCollectionItemViewModel *)viewModel {
  30. _viewModel = viewModel;
  31. _myBgImageView.image = RQImageNamed(viewModel.icon);
  32. _myTitleLabel.text = viewModel.title;
  33. RAC(_numLabel, text) = [RACObserve(viewModel, subtitle) takeUntil:self.rac_prepareForReuseSignal];
  34. if ([_myTitleLabel.text isEqualToString:@"做错题"]) {
  35. [_clearBtn setTitleNormal:@"清空错题"];
  36. _numLabel.textColor = RQColorFromHexString(@"#B5CFFC");
  37. [_clearBtn setTitleColor:RQ_MAIN_COLOR forState:UIControlStateNormal];
  38. [_clearBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
  39. [NSObject rq_showAlertViewWithTitle:@"温馨提示" message:@"确认要清空错题吗?" confirmTitle:@"确认" cancelTitle:@"关闭" confirmAction:^{
  40. // [MBProgressHUD rq_showProgressHUD:@"清空中..."];
  41. // [[RQ_HTTP_Service queryDeleteWrongRecord] subscribeNext:^(id _Nullable x) {
  42. // [RQ_SDJK_DB_MANAGER deleteAllWrongModelsWithComplete:^(BOOL isSuccess) {
  43. // [MBProgressHUD rq_hideHUD];
  44. // if (isSuccess) {
  45. // [MBProgressHUD rq_showTips:@"清空成功"];
  46. // } else {
  47. // [MBProgressHUD rq_showTips:@"清空本地表失败"];
  48. // }
  49. // }];
  50. // } error:^(NSError * _Nullable error) {
  51. // [MBProgressHUD rq_hideHUD];
  52. // [MBProgressHUD rq_showErrorTips:error];
  53. // }];
  54. [RQ_SDJK_DB_MANAGER deleteAllWrongModelsWithComplete:^(BOOL isSuccess) {
  55. [MBProgressHUD rq_hideHUD];
  56. if (isSuccess) {
  57. [MBProgressHUD rq_showTips:@"清空成功"];
  58. } else {
  59. [MBProgressHUD rq_showTips:@"清空本地表失败"];
  60. }
  61. }];
  62. } cancelAction:nil];
  63. }];
  64. [_synBtn setTitleNormal:@"同步错题"];
  65. [_synBtn setTitleColor:RQ_MAIN_COLOR forState:UIControlStateNormal];
  66. // [_synBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
  67. //
  68. // }];
  69. } else {
  70. [_clearBtn setTitleNormal:@"清空收藏题"];
  71. _numLabel.textColor = RQColorFromHexString(@"#B5FCD6");
  72. [_clearBtn setTitleColor:RQ_MAIN_TEXT_COLOR_4 forState:UIControlStateNormal];
  73. [_clearBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
  74. [NSObject rq_showAlertViewWithTitle:@"温馨提示" message:@"确认要清空收藏题吗?" confirmTitle:@"确认" cancelTitle:@"关闭" confirmAction:^{
  75. // [MBProgressHUD rq_showProgressHUD:@"清空中..."];
  76. // [[RQ_HTTP_Service queryDeleteCollectionRecord] subscribeNext:^(id _Nullable x) {
  77. // [RQ_SDJK_DB_MANAGER deleteAllCollectionModelsWithComplete:^(BOOL isSuccess) {
  78. // [MBProgressHUD rq_hideHUD];
  79. // if (isSuccess) {
  80. // [MBProgressHUD rq_showTips:@"清空成功"];
  81. // } else {
  82. // [MBProgressHUD rq_showTips:@"清空本地表失败"];
  83. // }
  84. // }];
  85. // } error:^(NSError * _Nullable error) {
  86. // [MBProgressHUD rq_hideHUD];
  87. // [MBProgressHUD rq_showErrorTips:error];
  88. // }];
  89. [RQ_SDJK_DB_MANAGER deleteAllCollectionModelsWithComplete:^(BOOL isSuccess) {
  90. [MBProgressHUD rq_hideHUD];
  91. if (isSuccess) {
  92. [MBProgressHUD rq_showTips:@"清空成功"];
  93. } else {
  94. [MBProgressHUD rq_showTips:@"清空本地表失败"];
  95. }
  96. }];
  97. } cancelAction:nil];
  98. }];
  99. [_synBtn setTitleNormal:@"同步收藏题"];
  100. [_synBtn setTitleColor:RQ_MAIN_TEXT_COLOR_4 forState:UIControlStateNormal];
  101. // [_synBtn setTapActionWithBlock:^(UITapGestureRecognizer *tap) {
  102. //
  103. // }];
  104. }
  105. }
  106. - (IBAction)synBtnAction:(id)sender {
  107. BOOL isCollect = [self.synBtn.titleLabel.text isEqualToString:@"同步收藏题"];
  108. LCActionSheet *sheet = [LCActionSheet sheetWithTitle:@"" cancelButtonTitle:@"取消" clicked:^(LCActionSheet * _Nonnull actionSheet, NSInteger buttonIndex) {
  109. switch (buttonIndex) {
  110. case 1: {
  111. [QMUITips showLoading:@"合并中..." inView:DefaultTipsParentView];
  112. if (isCollect) {
  113. [[RQ_HTTP_Service postCollectionsWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(id _Nullable x) {
  114. [[RQ_HTTP_Service getAppCollectionByUserWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(NSArray *collectionModelArr) {
  115. [RQ_SDJK_DB_MANAGER addCollectionRecordWithRQCollectionModelArr:collectionModelArr isClearOldData:YES complete:^(BOOL isSuccess, NSError * _Nullable error) {
  116. [QMUITips hideAllTips];
  117. if (isSuccess) {
  118. [RQ_SDJK_DB_MANAGER refreshCollectCount];
  119. [QMUITips showSucceed:@"合并成功"];
  120. }
  121. }];
  122. } error:^(NSError * _Nullable error) {
  123. [QMUITips hideAllTips];
  124. [QMUITips showError:[NSError rq_tipsFromError:error]];
  125. }];
  126. } error:^(NSError * _Nullable error) {
  127. [QMUITips hideAllTips];
  128. [QMUITips showError:[NSError rq_tipsFromError:error]];
  129. }];
  130. } else {
  131. [[RQ_HTTP_Service postWrongsWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(id _Nullable x) {
  132. [[RQ_HTTP_Service getAppWrongByUserWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(NSArray *wrongModelArr) {
  133. [RQ_SDJK_DB_MANAGER addWrongRecordWithRQWrongModelArr:wrongModelArr isClearOldData:YES complete:^(BOOL isSuccess, NSError * _Nullable error) {
  134. [QMUITips hideAllTips];
  135. if (isSuccess) {
  136. [RQ_SDJK_DB_MANAGER refreshWrongCount];
  137. [QMUITips showSucceed:@"合并成功"];
  138. }
  139. }];
  140. } error:^(NSError * _Nullable error) {
  141. [QMUITips hideAllTips];
  142. [QMUITips showError:[NSError rq_tipsFromError:error]];
  143. }];
  144. } error:^(NSError * _Nullable error) {
  145. [QMUITips hideAllTips];
  146. [QMUITips showError:[NSError rq_tipsFromError:error]];
  147. }];
  148. }
  149. break;
  150. }
  151. case 2: {
  152. [QMUITips showLoading:@"备份中..." inView:DefaultTipsParentView];
  153. if (isCollect) {
  154. [[RQ_HTTP_Service postBakCollectionsWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(id _Nullable x) {
  155. [QMUITips hideAllTips];
  156. [QMUITips showSucceed:@"备份成功"];
  157. } error:^(NSError * _Nullable error) {
  158. [QMUITips hideAllTips];
  159. [QMUITips showError:[NSError rq_tipsFromError:error]];
  160. }];
  161. } else {
  162. [[RQ_HTTP_Service postBakWrongsWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(id _Nullable x) {
  163. [QMUITips hideAllTips];
  164. [QMUITips showSucceed:@"备份成功"];
  165. } error:^(NSError * _Nullable error) {
  166. [QMUITips hideAllTips];
  167. [QMUITips showError:[NSError rq_tipsFromError:error]];
  168. }];
  169. }
  170. break;
  171. }
  172. case 3: {
  173. [QMUITips showLoading:@"恢复中..." inView:DefaultTipsParentView];
  174. if (isCollect) {
  175. [[RQ_HTTP_Service getAppCollectionByUserWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(NSArray *collectionModelArr) {
  176. [RQ_SDJK_DB_MANAGER addCollectionRecordWithRQCollectionModelArr:collectionModelArr isClearOldData:YES complete:^(BOOL isSuccess, NSError * _Nullable error) {
  177. [QMUITips hideAllTips];
  178. if (isSuccess) {
  179. [RQ_SDJK_DB_MANAGER refreshCollectCount];
  180. [QMUITips showSucceed:@"恢复成功"];
  181. }
  182. }];
  183. } error:^(NSError * _Nullable error) {
  184. [QMUITips hideAllTips];
  185. [QMUITips showError:[NSError rq_tipsFromError:error]];
  186. }];
  187. } else {
  188. [[RQ_HTTP_Service getAppWrongByUserWithSubject:self.viewModel.homePageSubjectType] subscribeNext:^(NSArray *wrongModelArr) {
  189. [RQ_SDJK_DB_MANAGER addWrongRecordWithRQWrongModelArr:wrongModelArr isClearOldData:YES complete:^(BOOL isSuccess, NSError * _Nullable error) {
  190. [QMUITips hideAllTips];
  191. if (isSuccess) {
  192. [RQ_SDJK_DB_MANAGER refreshWrongCount];
  193. [QMUITips showSucceed:@"恢复成功"];
  194. }
  195. }];
  196. } error:^(NSError * _Nullable error) {
  197. [QMUITips hideAllTips];
  198. [QMUITips showError:[NSError rq_tipsFromError:error]];
  199. }];
  200. }
  201. break;
  202. }
  203. default:
  204. break;
  205. }
  206. } otherButtonTitles:isCollect? @"合并本机和云端收藏" : @"合并本机和云端错题",isCollect? @"备份本机收藏到云端" : @"备份本机错题到云端",isCollect? @"恢复云端收藏到本机" : @"恢复云端错题到本机", nil];
  207. sheet.buttonFont = RQRegularFont_16;
  208. sheet.buttonColor = RQ_MAIN_TEXT_COLOR_1;
  209. sheet.buttonHeight = 60.f;
  210. [sheet show];
  211. }
  212. #pragma mark - SystemMethods
  213. - (void)awakeFromNib {
  214. [super awakeFromNib];
  215. }
  216. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  217. [super setSelected:selected animated:animated];
  218. }
  219. @end