NIMBaseSessionContentConfig.m 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //
  2. // NIMBaseSessionContentConfig.m
  3. // NIMKit
  4. //
  5. // Created by amao on 9/15/15.
  6. // Copyright (c) 2015 NetEase. All rights reserved.
  7. //
  8. #import "NIMBaseSessionContentConfig.h"
  9. #import "NIMTextContentConfig.h"
  10. #import "NIMImageContentConfig.h"
  11. #import "NIMAudioContentConfig.h"
  12. #import "NIMVideoContentConfig.h"
  13. #import "NIMFileContentConfig.h"
  14. #import "NIMNotificationContentConfig.h"
  15. #import "NIMLocationContentConfig.h"
  16. #import "NIMUnsupportContentConfig.h"
  17. #import "NIMTipContentConfig.h"
  18. #import "NIMRobotContentConfig.h"
  19. @interface NIMSessionContentConfigFactory ()
  20. @property (nonatomic,strong) NSDictionary *dict;
  21. @property (nonatomic,strong) NIMUnsupportContentConfig *unsupportConfig;
  22. @end
  23. @implementation NIMSessionContentConfigFactory
  24. + (instancetype)sharedFacotry
  25. {
  26. static NIMSessionContentConfigFactory *instance = nil;
  27. static dispatch_once_t onceToken;
  28. dispatch_once(&onceToken, ^{
  29. instance = [[NIMSessionContentConfigFactory alloc] init];
  30. });
  31. return instance;
  32. }
  33. - (instancetype)init
  34. {
  35. if (self = [super init])
  36. {
  37. _dict = @{@(NIMMessageTypeText) : [NIMTextContentConfig new],
  38. @(NIMMessageTypeImage) : [NIMImageContentConfig new],
  39. @(NIMMessageTypeAudio) : [NIMAudioContentConfig new],
  40. @(NIMMessageTypeVideo) : [NIMVideoContentConfig new],
  41. @(NIMMessageTypeFile) : [NIMFileContentConfig new],
  42. @(NIMMessageTypeLocation) : [NIMLocationContentConfig new],
  43. @(NIMMessageTypeNotification) : [NIMNotificationContentConfig new],
  44. @(NIMMessageTypeTip) : [NIMTipContentConfig new],
  45. @(NIMMessageTypeRobot) : [NIMRobotContentConfig new]};
  46. _unsupportConfig = [[NIMUnsupportContentConfig alloc] init];
  47. }
  48. return self;
  49. }
  50. - (id<NIMSessionContentConfig>)configBy:(NIMMessage *)message
  51. {
  52. NIMMessageType type = message.messageType;
  53. id<NIMSessionContentConfig>config = [_dict objectForKey:@(type)];
  54. if (config == nil)
  55. {
  56. config = _unsupportConfig;
  57. }
  58. return config;
  59. }
  60. @end