diff --git a/WeChatTweak.framework/Versions/A/Resources/Info.plist b/WeChatTweak.framework/Versions/A/Resources/Info.plist index 3d20d75..7359603 100644 --- a/WeChatTweak.framework/Versions/A/Resources/Info.plist +++ b/WeChatTweak.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 18C54 + 18A391 CFBundleDevelopmentRegion en CFBundleExecutable @@ -27,17 +27,17 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 10B61 + 9F2000 DTPlatformVersion GM DTSDKBuild - 18B71 + 17E189 DTSDKName - macosx10.14 + macosx10.13 DTXcode - 1010 + 0941 DTXcodeBuild - 10B61 + 9F2000 NSHumanReadableCopyright Copyright © 2017年 Sunnyyoung. All rights reserved. diff --git a/WeChatTweak.framework/Versions/A/Resources/en.lproj/Localizable.strings b/WeChatTweak.framework/Versions/A/Resources/en.lproj/Localizable.strings index a452625..315a92f 100644 Binary files a/WeChatTweak.framework/Versions/A/Resources/en.lproj/Localizable.strings and b/WeChatTweak.framework/Versions/A/Resources/en.lproj/Localizable.strings differ diff --git a/WeChatTweak.framework/Versions/A/Resources/zh-Hans.lproj/Localizable.strings b/WeChatTweak.framework/Versions/A/Resources/zh-Hans.lproj/Localizable.strings index e9b609d..273c261 100644 Binary files a/WeChatTweak.framework/Versions/A/Resources/zh-Hans.lproj/Localizable.strings and b/WeChatTweak.framework/Versions/A/Resources/zh-Hans.lproj/Localizable.strings differ diff --git a/WeChatTweak.framework/Versions/A/Resources/zh-Hant.lproj/Localizable.strings b/WeChatTweak.framework/Versions/A/Resources/zh-Hant.lproj/Localizable.strings index bcb6bfb..d72fbe4 100644 Binary files a/WeChatTweak.framework/Versions/A/Resources/zh-Hant.lproj/Localizable.strings and b/WeChatTweak.framework/Versions/A/Resources/zh-Hant.lproj/Localizable.strings differ diff --git a/WeChatTweak.framework/Versions/A/WeChatTweak b/WeChatTweak.framework/Versions/A/WeChatTweak index 8181ba0..b9b77e0 100755 Binary files a/WeChatTweak.framework/Versions/A/WeChatTweak and b/WeChatTweak.framework/Versions/A/WeChatTweak differ diff --git a/WeChatTweak/Supporting Files/WeChatTweakHeaders.h b/WeChatTweak/Supporting Files/WeChatTweakHeaders.h index 4906121..69a9f32 100644 --- a/WeChatTweak/Supporting Files/WeChatTweakHeaders.h +++ b/WeChatTweak/Supporting Files/WeChatTweakHeaders.h @@ -11,6 +11,15 @@ #import #import +typedef NS_ENUM(unsigned int, MessageDataType) { + MessageDataTypeText = 1, + MessageDataTypeImage = 3, + MessageDataTypeVoice = 34, + MessageDataTypeVideo = 43, + MessageDataTypeSticker = 47, + MessageDataTypeLink = 49, +}; + @interface NSString (MD5) - (NSString *)md5String; @@ -43,7 +52,7 @@ @interface MessageData: NSObject -@property(nonatomic) unsigned int messageType; +@property(nonatomic) MessageDataType messageType; @property(nonatomic) unsigned int msgStatus; @property(nonatomic) long long mesSvrID; @property(retain, nonatomic) NSString *toUsrName; diff --git a/WeChatTweak/Supporting Files/en.lproj/Localizable.strings b/WeChatTweak/Supporting Files/en.lproj/Localizable.strings index cd7e590..3c22609 100644 --- a/WeChatTweak/Supporting Files/en.lproj/Localizable.strings +++ b/WeChatTweak/Supporting Files/en.lproj/Localizable.strings @@ -9,3 +9,10 @@ "Tweak.Title.LoginAnotherAccount" = "Login new account"; "Tweak.Title.Group" = "Group"; "Tweak.Message.CatchARecalledMessage" = "[Catched]\n%@"; +"Tweak.Message.Recalled" = "recalled"; +"Tweak.Message.Image" = "Image"; +"Tweak.Message.Voice" = "Voice"; +"Tweak.Message.Video" = "Video"; +"Tweak.Message.Sticker" = "Sticker"; +"Tweak.Message.Link" = "Link"; +"Tweak.Message.AMessage" = "a message"; diff --git a/WeChatTweak/Supporting Files/zh-Hans.lproj/Localizable.strings b/WeChatTweak/Supporting Files/zh-Hans.lproj/Localizable.strings index 586059d..7386462 100644 --- a/WeChatTweak/Supporting Files/zh-Hans.lproj/Localizable.strings +++ b/WeChatTweak/Supporting Files/zh-Hans.lproj/Localizable.strings @@ -9,3 +9,10 @@ "Tweak.Title.LoginAnotherAccount" = "登录新的账号"; "Tweak.Title.Group" = "群组"; "Tweak.Message.CatchARecalledMessage" = "[已拦截]\n%@"; +"Tweak.Message.Recalled" = "撤回了"; +"Tweak.Message.Image" = "图片"; +"Tweak.Message.Voice" = "语音"; +"Tweak.Message.Video" = "视频"; +"Tweak.Message.Sticker" = "表情"; +"Tweak.Message.Link" = "链接"; +"Tweak.Message.AMessage" = "一条消息"; diff --git a/WeChatTweak/Supporting Files/zh-Hant.lproj/Localizable.strings b/WeChatTweak/Supporting Files/zh-Hant.lproj/Localizable.strings index 5c1f297..71e0d12 100644 --- a/WeChatTweak/Supporting Files/zh-Hant.lproj/Localizable.strings +++ b/WeChatTweak/Supporting Files/zh-Hant.lproj/Localizable.strings @@ -9,3 +9,10 @@ "Tweak.Title.LoginAnotherAccount" = "登錄新的賬號"; "Tweak.Title.Group" = "群組"; "Tweak.Message.CatchARecalledMessage" = "[已攔截]\n%@"; +"Tweak.Message.Recalled" = "撤回了"; +"Tweak.Message.Image" = "图片"; +"Tweak.Message.Voice" = "语音"; +"Tweak.Message.Video" = "视频"; +"Tweak.Message.Sticker" = "表情"; +"Tweak.Message.Link" = "链接"; +"Tweak.Message.AMessage" = "一条消息"; diff --git a/WeChatTweak/WeChatTweak.m b/WeChatTweak/WeChatTweak.m index 8226dc7..f3a93aa 100755 --- a/WeChatTweak/WeChatTweak.m +++ b/WeChatTweak/WeChatTweak.m @@ -81,6 +81,7 @@ static void __attribute__((constructor)) tweak(void) { NSString *session = [message.msgContent tweak_subStringFrom:@"" to:@""]; NSUInteger newMessageID = [message.msgContent tweak_subStringFrom:@"" to:@""].longLongValue; NSString *replaceMessage = [message.msgContent tweak_subStringFrom:@""]; + // Prepare message data MessageData *localMessageData = [((MessageService *)self) GetMsgData:session svrId:newMessageID]; MessageData *promptMessageData = ({ @@ -94,7 +95,37 @@ static void __attribute__((constructor)) tweak(void) { if ([localMessageData isSendFromSelf]) { data.msgContent = replaceMessage; } else { - data.msgContent = [NSString stringWithFormat:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.CatchARecalledMessage"], replaceMessage]; + NSString *fromUserName = [replaceMessage componentsSeparatedByString:@" "].firstObject; + NSString *userRevoke = [NSString stringWithFormat:@"%@ %@ ", fromUserName, [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Recalled"]]; + NSString *tips = [NSString stringWithFormat:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.CatchARecalledMessage"], userRevoke]; + NSMutableString *msgContent = [NSMutableString stringWithString:tips]; + switch (localMessageData.messageType) { + case MessageDataTypeText: { + if (localMessageData.msgContent.length) { + if ([session rangeOfString:@"@chatroom"].location == NSNotFound) { + [msgContent appendFormat:@"\"%@\"", localMessageData.msgContent]; + } else { + [msgContent appendFormat:@"\"%@\"", [localMessageData.msgContent componentsSeparatedByString:@":\n"].lastObject]; + } + } else { + [msgContent appendString:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.AMessage"]]; + } + break; + } + case MessageDataTypeImage: + [msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Image"]]; break; + case MessageDataTypeVoice: + [msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Voice"]]; break; + case MessageDataTypeVideo: + [msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Video"]]; break; + case MessageDataTypeSticker: + [msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Sticker"]]; break; + case MessageDataTypeLink: + [msgContent appendFormat:@"<%@>", [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.Link"]]; break; + default: + [msgContent appendString:[NSBundle.tweakBundle localizedStringForKey:@"Tweak.Message.AMessage"]]; break; + } + data.msgContent = msgContent; } data; }); @@ -121,6 +152,9 @@ static void __attribute__((constructor)) tweak(void) { [((MessageService *)self) DelMsg:session msgList:@[localMessageData] isDelAll:NO isManual:YES]; [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData]; } else { + if (localMessageData.messageType == MessageDataTypeText) { + [((MessageService *)self) DelMsg:session msgList:@[localMessageData] isDelAll:NO isManual:YES]; + } [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData]; }