TUIChatMediaSendingManager.m 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // TUIChatMediaSendingManager.m
  3. // TUIChat
  4. //
  5. // Created by yiliangwang on 2025/1/6.
  6. // Copyright © 2025 Tencent. All rights reserved.
  7. #import "TUIChatMediaSendingManager.h"
  8. @implementation TUIChatMediaTask
  9. @end
  10. @implementation TUIChatMediaSendingManager
  11. + (instancetype)sharedInstance {
  12. static TUIChatMediaSendingManager *instance = nil;
  13. static dispatch_once_t onceToken;
  14. dispatch_once(&onceToken, ^{
  15. instance = [[TUIChatMediaSendingManager alloc] init];
  16. instance.tasks = [NSMutableDictionary dictionary];
  17. instance.mediaSendingControllers = [NSHashTable weakObjectsHashTable];
  18. });
  19. return instance;
  20. }
  21. - (void)addMediaTask:(TUIChatMediaTask *)task forKey:(NSString *)key {
  22. self.tasks[key] = task;
  23. }
  24. - (void)updateProgress:(float)progress forKey:(NSString *)key {
  25. TUIChatMediaTask *task = self.tasks[key];;
  26. TUIMessageCellData *message = task.placeHolderCellData;
  27. if (message) {
  28. message.videoTranscodingProgress = progress;
  29. }
  30. }
  31. - (void)removeMediaTaskForKey:(NSString *)key {
  32. [self.tasks removeObjectForKey:key];
  33. }
  34. - (NSMutableArray<TUIChatMediaTask *> *)findPlaceHolderListByConversationID:(NSString *)conversationID {
  35. NSMutableArray *tasks = [NSMutableArray arrayWithCapacity:1];
  36. for (TUIChatMediaTask * task in self.tasks.allValues) {
  37. if ([task.conversationID isEqualToString:conversationID]) {
  38. [tasks addObject:task];
  39. }
  40. }
  41. return tasks;
  42. }
  43. - (void)addCurrentVC:(UIViewController *)vc {
  44. [self.mediaSendingControllers addObject:vc];
  45. }
  46. - (void)removeCurrentVC:(UIViewController *)vc {
  47. [self.mediaSendingControllers removeObject:vc];
  48. }
  49. @end