TUIMessageDataProvider+MessageDeal.m 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. //
  2. // TUIMessageDataProvider+MessageDeal.m
  3. // TUIChat
  4. //
  5. // Created by wyl on 2022/3/22.
  6. // Copyright © 2023 Tencent. All rights reserved.
  7. //
  8. #import <TIMCommon/TUIMessageCellData.h>
  9. #import "TUIChatDataProvider.h"
  10. #import "TUIImageMessageCellData.h"
  11. #import "TUIMessageDataProvider+MessageDeal.h"
  12. #import "TUIMessageDataProvider.h"
  13. @implementation TUIMessageDataProvider (MessageDeal)
  14. - (void)loadOriginMessageFromReplyData:(TUIReplyMessageCellData *)replycellData dealCallback:(void (^)(void))callback {
  15. if (replycellData.originMsgID.length == 0) {
  16. if (callback) {
  17. callback();
  18. }
  19. return;
  20. }
  21. @weakify(replycellData)[TUIChatDataProvider findMessages:@[ replycellData.originMsgID ]
  22. callback:^(BOOL succ, NSString *_Nonnull error_message, NSArray *_Nonnull msgs) {
  23. @strongify(replycellData) if (!succ) {
  24. replycellData.quoteData = [replycellData getQuoteData:nil];
  25. replycellData.originMessage = nil;
  26. if (callback) {
  27. callback();
  28. }
  29. return;
  30. }
  31. V2TIMMessage *originMessage = msgs.firstObject;
  32. if (originMessage == nil) {
  33. replycellData.quoteData = [replycellData getQuoteData:nil];
  34. if (callback) {
  35. callback();
  36. }
  37. return;
  38. }
  39. TUIMessageCellData *cellData = [TUIMessageDataProvider getCellData:originMessage];
  40. replycellData.originCellData = cellData;
  41. if ([cellData isKindOfClass:TUIImageMessageCellData.class]) {
  42. TUIImageMessageCellData *imageData = (TUIImageMessageCellData *)cellData;
  43. [imageData downloadImage:TImage_Type_Thumb];
  44. replycellData.quoteData = [replycellData getQuoteData:imageData];
  45. replycellData.originMessage = originMessage;
  46. if (callback) {
  47. callback();
  48. }
  49. } else if ([cellData isKindOfClass:TUIVideoMessageCellData.class]) {
  50. TUIVideoMessageCellData *videoData = (TUIVideoMessageCellData *)cellData;
  51. [videoData downloadThumb];
  52. replycellData.quoteData = [replycellData getQuoteData:videoData];
  53. replycellData.originMessage = originMessage;
  54. if (callback) {
  55. callback();
  56. }
  57. } else {
  58. replycellData.quoteData = [replycellData getQuoteData:cellData];
  59. replycellData.originMessage = originMessage;
  60. if (callback) {
  61. callback();
  62. }
  63. }
  64. }];
  65. }
  66. @end