Skip to content

Commit cc051b9

Browse files
authored
Merge pull request #683 from zapcannon87/master
refactor: message media type
2 parents 1b3bad3 + 54fe65e commit cc051b9

File tree

14 files changed

+80
-72
lines changed

14 files changed

+80
-72
lines changed

AVOS/LeanCloudObjcTests/LCIMConversationTestCase.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,7 @@ class LCIMConversationTestCase: RTMBaseTestCase {
735735
conv.read()
736736
}
737737
wait(for: [allReadExp], timeout: timeout)
738+
delegator.reset()
738739
}
739740

740741
func testMembersChange() {

AVOS/LeanCloudObjcTests/LCIMMessageTestCase.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1431,7 +1431,7 @@ class LCIMMessageTestCase: RTMBaseTestCase {
14311431
wait(for: [intervalQueryExp], timeout: timeout)
14321432

14331433
let typeQuery = expectation(description: "type query")
1434-
conversation?.queryMediaMessagesFromServer(with: .text, limit: 10, fromMessageId: nil, fromTimestamp: 0, callback: { msgs, error in
1434+
conversation?.queryMediaMessagesFromServer(withType: .text, limit: 10, fromMessageId: nil, fromTimestamp: 0, callback: { msgs, error in
14351435
XCTAssertNil(error)
14361436
XCTAssertEqual(msgs?.count, 1)
14371437
XCTAssertNotNil(msgs?.first?.deliveredTimestamp)
@@ -1450,14 +1450,14 @@ extension LCIMMessageTestCase {
14501450
typealias ConversationSuite = (client: LCIMClient, delegator: LCIMClientDelegator, conversation: LCIMConversation)
14511451

14521452
class CustomMessage: LCIMTypedMessage, LCIMTypedMessageSubclassing {
1453-
static func classMediaType() -> MessageMediaType {
1454-
return 1
1453+
static func classMediaType() -> LCIMMessageMediaType {
1454+
return LCIMMessageMediaType(1)
14551455
}
14561456
}
14571457

14581458
class InvalidCustomMessage: LCIMTypedMessage, LCIMTypedMessageSubclassing {
1459-
static func classMediaType() -> MessageMediaType {
1460-
return -1
1459+
static func classMediaType() -> LCIMMessageMediaType {
1460+
return LCIMMessageMediaType(-1)
14611461
}
14621462
}
14631463

AVOS/Sources/Realtime/IM/Conversation/LCIMConversation.m

Lines changed: 44 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,69 +1341,59 @@ - (void)fillTypedMessage:(LCIMTypedMessage *)typedMessage withFile:(LCFile *)fil
13411341
{
13421342
NSMutableDictionary *metaData = (file.metaData.mutableCopy
13431343
?: [NSMutableDictionary dictionary]);
1344-
switch (typedMessage.mediaType) {
1345-
case kLCIMMessageMediaTypeImage:
1346-
{
1347-
double width = [metaData[@"width"] doubleValue];
1348-
double height = [metaData[@"height"] doubleValue];
1349-
if (!(width > 0 && height > 0)) {
1344+
if (typedMessage.mediaType == LCIMMessageMediaTypeImage) {
1345+
double width = [metaData[@"width"] doubleValue];
1346+
double height = [metaData[@"height"] doubleValue];
1347+
if (!(width > 0 && height > 0)) {
13501348
#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH
1351-
UIImage *image = ({
1352-
UIImage *image;
1353-
NSString *cachedPath = file.persistentCachePath;
1354-
if ([[NSFileManager defaultManager] fileExistsAtPath:cachedPath]) {
1355-
NSData *data = [NSData dataWithContentsOfFile:cachedPath];
1356-
image = [UIImage imageWithData:data];
1357-
}
1358-
image;
1359-
});
1360-
width = image.size.width * image.scale;
1361-
height = image.size.height * image.scale;
1362-
#elif TARGET_OS_OSX
1363-
NSImage *image = ({
1364-
NSImage *image;
1365-
NSString *cachedPath = file.persistentCachePath;
1366-
if ([[NSFileManager defaultManager] fileExistsAtPath:cachedPath]) {
1367-
NSData *data = [NSData dataWithContentsOfFile:cachedPath];
1368-
image = [[NSImage alloc] initWithData:data];
1369-
}
1370-
image;
1371-
});
1372-
width = image.size.width;
1373-
height = image.size.height;
1374-
#endif
1375-
if (width > 0) {
1376-
metaData[@"width"] = @(width);
1349+
UIImage *image = ({
1350+
UIImage *image;
1351+
NSString *cachedPath = file.persistentCachePath;
1352+
if ([[NSFileManager defaultManager] fileExistsAtPath:cachedPath]) {
1353+
NSData *data = [NSData dataWithContentsOfFile:cachedPath];
1354+
image = [UIImage imageWithData:data];
13771355
}
1378-
if (height > 0) {
1379-
metaData[@"height"] = @(height);
1356+
image;
1357+
});
1358+
width = image.size.width * image.scale;
1359+
height = image.size.height * image.scale;
1360+
#elif TARGET_OS_OSX
1361+
NSImage *image = ({
1362+
NSImage *image;
1363+
NSString *cachedPath = file.persistentCachePath;
1364+
if ([[NSFileManager defaultManager] fileExistsAtPath:cachedPath]) {
1365+
NSData *data = [NSData dataWithContentsOfFile:cachedPath];
1366+
image = [[NSImage alloc] initWithData:data];
13801367
}
1368+
image;
1369+
});
1370+
width = image.size.width;
1371+
height = image.size.height;
1372+
#endif
1373+
if (width > 0) {
1374+
metaData[@"width"] = @(width);
1375+
}
1376+
if (height > 0) {
1377+
metaData[@"height"] = @(height);
13811378
}
13821379
}
1383-
break;
1384-
case kLCIMMessageMediaTypeAudio:
1385-
case kLCIMMessageMediaTypeVideo:
1386-
{
1387-
double seconds = [metaData[@"duration"] doubleValue];
1388-
if (!(seconds > 0)) {
1389-
NSString *path = file.persistentCachePath;
1390-
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
1391-
NSURL *fileURL = [NSURL fileURLWithPath:path];
1392-
if (fileURL) {
1393-
AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:fileURL
1394-
options:nil];
1395-
seconds = CMTimeGetSeconds(audioAsset.duration);
1396-
if (seconds > 0) {
1397-
metaData[@"duration"] = @(seconds);
1398-
}
1380+
} else if (typedMessage.mediaType == LCIMMessageMediaTypeAudio ||
1381+
typedMessage.mediaType == LCIMMessageMediaTypeVideo) {
1382+
double seconds = [metaData[@"duration"] doubleValue];
1383+
if (!(seconds > 0)) {
1384+
NSString *path = file.persistentCachePath;
1385+
if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {
1386+
NSURL *fileURL = [NSURL fileURLWithPath:path];
1387+
if (fileURL) {
1388+
AVURLAsset* audioAsset = [AVURLAsset URLAssetWithURL:fileURL
1389+
options:nil];
1390+
seconds = CMTimeGetSeconds(audioAsset.duration);
1391+
if (seconds > 0) {
1392+
metaData[@"duration"] = @(seconds);
13991393
}
14001394
}
14011395
}
14021396
}
1403-
break;
1404-
case kLCIMMessageMediaTypeFile:
1405-
default:
1406-
break;
14071397
}
14081398
NSString *fileName = file.name;
14091399
if (fileName) {

AVOS/Sources/Realtime/IM/Message/LCIMMessage.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,17 @@
88

99
#import "LCIMCommon.h"
1010

11-
typedef NS_ENUM(int32_t, LCIMMessageMediaType) {
11+
typedef int32_t LCIMMessageMediaType NS_TYPED_EXTENSIBLE_ENUM;
12+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeNone;
13+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeText;
14+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeImage;
15+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeAudio;
16+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeVideo;
17+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeLocation;
18+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeFile;
19+
FOUNDATION_EXPORT const LCIMMessageMediaType LCIMMessageMediaTypeRecalled;
20+
21+
typedef NS_ENUM(int32_t, kLCIMMessageMediaType) {
1222
kLCIMMessageMediaTypeNone = 0,
1323
kLCIMMessageMediaTypeText = -1,
1424
kLCIMMessageMediaTypeImage = -2,
@@ -17,7 +27,7 @@ typedef NS_ENUM(int32_t, LCIMMessageMediaType) {
1727
kLCIMMessageMediaTypeLocation = -5,
1828
kLCIMMessageMediaTypeFile = -6,
1929
kLCIMMessageMediaTypeRecalled = -127
20-
};
30+
} __deprecated_enum_msg("Deprecated! please use `LCIMMessageMediaType` instead, this ENUM may be removed in the future.");
2131

2232
typedef NS_ENUM(int8_t, LCIMMessageIOType) {
2333
LCIMMessageIOTypeIn = 1,

AVOS/Sources/Realtime/IM/Message/LCIMMessage.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@
1212
#import "LCIMConversation_Internal.h"
1313
#import "LCIMTypedMessage_Internal.h"
1414

15+
const LCIMMessageMediaType LCIMMessageMediaTypeNone = 0;
16+
const LCIMMessageMediaType LCIMMessageMediaTypeText = -1;
17+
const LCIMMessageMediaType LCIMMessageMediaTypeImage = -2;
18+
const LCIMMessageMediaType LCIMMessageMediaTypeAudio = -3;
19+
const LCIMMessageMediaType LCIMMessageMediaTypeVideo = -4;
20+
const LCIMMessageMediaType LCIMMessageMediaTypeLocation = -5;
21+
const LCIMMessageMediaType LCIMMessageMediaTypeFile = -6;
22+
const LCIMMessageMediaType LCIMMessageMediaTypeRecalled = -127;
23+
1524
@implementation LCIMMessagePatchedReason
1625

1726
@end

AVOS/Sources/Realtime/IM/TypedMessages/LCIMAudioMessage.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ + (void)load
1818

1919
+ (LCIMMessageMediaType)classMediaType
2020
{
21-
return kLCIMMessageMediaTypeAudio;
21+
return LCIMMessageMediaTypeAudio;
2222
}
2323

2424
- (double)size {

AVOS/Sources/Realtime/IM/TypedMessages/LCIMFileMessage.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ + (void)load
1818

1919
+ (LCIMMessageMediaType)classMediaType
2020
{
21-
return kLCIMMessageMediaTypeFile;
21+
return LCIMMessageMediaTypeFile;
2222
}
2323

2424
- (double)size {

AVOS/Sources/Realtime/IM/TypedMessages/LCIMImageMessage.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ + (void)load
1818

1919
+ (LCIMMessageMediaType)classMediaType
2020
{
21-
return kLCIMMessageMediaTypeImage;
21+
return LCIMMessageMediaTypeImage;
2222
}
2323

2424
- (double)width {

AVOS/Sources/Realtime/IM/TypedMessages/LCIMLocationMessage.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ + (void)load
1919

2020
+ (LCIMMessageMediaType)classMediaType
2121
{
22-
return kLCIMMessageMediaTypeLocation;
22+
return LCIMMessageMediaTypeLocation;
2323
}
2424

2525
+ (instancetype)messageWithText:(NSString *)text

AVOS/Sources/Realtime/IM/TypedMessages/LCIMRecalledMessage.m

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ + (void)load
2020

2121
+ (LCIMMessageMediaType)classMediaType
2222
{
23-
return kLCIMMessageMediaTypeRecalled;
23+
return LCIMMessageMediaTypeRecalled;
2424
}
2525

2626
@end

0 commit comments

Comments
 (0)