NTESSnapchatAttachment.m 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. //
  2. // SnapchatAttachment.m
  3. // NIM
  4. //
  5. // Created by amao on 7/2/15.
  6. // Copyright (c) 2015 Netease. All rights reserved.
  7. //
  8. #import "NTESSnapchatAttachment.h"
  9. #import "NTESFileLocationHelper.h"
  10. #import "NSData+NTES.h"
  11. #import "NTESSessionUtil.h"
  12. @interface NTESSnapchatAttachment()
  13. @property (nonatomic,assign) BOOL isFromMe;
  14. @end
  15. @implementation NTESSnapchatAttachment
  16. - (void)setImage:(UIImage *)image
  17. {
  18. NSData *data = UIImageJPEGRepresentation(image, 0.7);
  19. NSString *md5= [data MD5String];
  20. self.md5 = md5;
  21. [data writeToFile:[self filepath]
  22. atomically:YES];
  23. }
  24. - (void)setImageFilePath:(NSString *)path
  25. {
  26. if ([[NSFileManager defaultManager] fileExistsAtPath:path]){
  27. NSData *data = [NSData dataWithContentsOfFile:path];
  28. self.md5 = [data MD5String];
  29. [data writeToFile:[self filepath]
  30. atomically:YES];
  31. }
  32. }
  33. - (void)setIsFired:(BOOL)isFired{
  34. if (_isFired != isFired) {
  35. _isFired = isFired;
  36. [self updateCover];
  37. }
  38. }
  39. - (NSString *)filepath
  40. {
  41. NSString *filename = [_md5 stringByAppendingFormat:@".%@",ImageExt];
  42. return [NTESFileLocationHelper filepathForImage:filename];
  43. }
  44. - (NSString *)cellContent:(NIMMessage *)message{
  45. return @"NTESSessionSnapchatContentView";
  46. }
  47. - (CGSize)contentSize:(NIMMessage *)message cellWidth:(CGFloat)width{
  48. self.isFromMe = message.isOutgoingMsg;
  49. CGSize size = self.showCoverImage.size;
  50. CGFloat customSnapMessageImageRightToText = 5;
  51. return CGSizeMake(size.width + customSnapMessageImageRightToText, size.height);
  52. }
  53. - (UIEdgeInsets)contentViewInsets:(NIMMessage *)message
  54. {
  55. CGFloat bubblePaddingForImage = 3.f;
  56. CGFloat bubbleArrowWidthForImage = -4.f;
  57. if (message.isOutgoingMsg) {
  58. return UIEdgeInsetsMake(bubblePaddingForImage,bubblePaddingForImage,bubblePaddingForImage,bubblePaddingForImage + bubbleArrowWidthForImage);
  59. }else{
  60. return UIEdgeInsetsMake(bubblePaddingForImage,bubblePaddingForImage + bubbleArrowWidthForImage, bubblePaddingForImage,bubblePaddingForImage);
  61. }
  62. }
  63. - (void)setIsFromMe:(BOOL)isFromMe{
  64. if (_isFromMe != isFromMe) {
  65. _isFromMe = isFromMe;
  66. [self updateCover];
  67. }
  68. }
  69. - (BOOL)canBeForwarded
  70. {
  71. return NO;
  72. }
  73. - (BOOL)canBeRevoked
  74. {
  75. return YES;
  76. }
  77. #pragma NIMCustomAttachment
  78. //- (NSString *)encodeAttachment
  79. //{
  80. // NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  81. // NSMutableDictionary *data = [NSMutableDictionary dictionary];
  82. // [dict setObject:@(CustomMessageTypeSnapchat) forKey:CMType];
  83. // [data setObject:_md5?_md5:@"" forKey:CMMD5];
  84. // [data setObject:@(_isFired) forKey:CMFIRE];
  85. // if ([_url length])
  86. // {
  87. // [data setObject:_url forKey:CMURL];
  88. // }
  89. // [dict setObject:data forKey:CMData];
  90. //
  91. // NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
  92. // options:0
  93. // error:nil];
  94. //
  95. // return [[NSString alloc] initWithData:jsonData
  96. // encoding:NSUTF8StringEncoding];
  97. //}
  98. #pragma mark - 实现文件上传需要接口
  99. - (BOOL)attachmentNeedsUpload
  100. {
  101. return [_url length] == 0;
  102. }
  103. - (NSString *)attachmentPathForUploading
  104. {
  105. return [self filepath];
  106. }
  107. - (void)updateAttachmentURL:(NSString *)urlString
  108. {
  109. self.url = urlString;
  110. }
  111. #pragma mark - Private
  112. - (void)updateCover{
  113. UIImage *image;
  114. if (!self.isFromMe) {
  115. if (self.isFired) {
  116. image = [UIImage imageNamed:@"session_snapchat_other_readed"];
  117. }else{
  118. image = [UIImage imageNamed:@"session_snapchat_other_unread"];
  119. }
  120. }else{
  121. if (self.isFired) {
  122. image = [UIImage imageNamed:@"session_snapchat_self_readed"];
  123. }else{
  124. image = [UIImage imageNamed:@"session_snapchat_self_unread"];
  125. }
  126. }
  127. self.showCoverImage = image;
  128. }
  129. - (UIImage *)showCoverImage
  130. {
  131. if (_showCoverImage == nil)
  132. {
  133. [self updateCover];
  134. }
  135. return _showCoverImage;
  136. }
  137. #pragma mark - https
  138. - (NSString *)url
  139. {
  140. return [_url length] ?
  141. [[[NIMSDK sharedSDK] resourceManager] normalizeURLString:_url] : nil;
  142. }
  143. @end