diff --git a/WeChatTweak/Supporting Files/WeChatTweakHeaders.h b/WeChatTweak/Supporting Files/WeChatTweakHeaders.h
index b018f15..6aa82ad 100644
--- a/WeChatTweak/Supporting Files/WeChatTweakHeaders.h
+++ b/WeChatTweak/Supporting Files/WeChatTweakHeaders.h
@@ -39,12 +39,14 @@
@property(nonatomic) unsigned int messageType;
@property(nonatomic) unsigned int msgStatus;
+@property(nonatomic) long long mesSvrID;
@property(retain, nonatomic) NSString *toUsrName;
@property(retain, nonatomic) NSString *fromUsrName;
@property(retain, nonatomic) NSString *msgContent;
@property(nonatomic) unsigned int msgCreateTime;
@property(nonatomic) unsigned int mesLocalID;
+- (instancetype)initWithMsgType:(long long)arg1;
- (BOOL)isSendFromSelf;
@end
diff --git a/WeChatTweak/WeChatTweak.m b/WeChatTweak/WeChatTweak.m
index a309cf6..0dba5c1 100755
--- a/WeChatTweak/WeChatTweak.m
+++ b/WeChatTweak/WeChatTweak.m
@@ -72,20 +72,19 @@ static void __attribute__((constructor)) tweak(void) {
#pragma mark - No Revoke Message
-- (void)tweak_onRevokeMsg:(NSString *)message {
+- (void)tweak_onRevokeMsg:(MessageData *)message {
// Decode message
- NSString *session = [message tweak_subStringFrom:@"" to:@""];
- NSUInteger newMessageID = [message tweak_subStringFrom:@"" to:@""].longLongValue;
- NSString *replaceMessage = [message tweak_subStringFrom:@""];
-
+ 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 = ({
- MessageData *data = [[objc_getClass("MessageData") alloc] init];
- data.messageType = 10000;
+ MessageData *data = [[objc_getClass("MessageData") alloc] initWithMsgType:10000];
data.msgStatus = 4;
data.toUsrName = localMessageData.toUsrName;
data.fromUsrName = localMessageData.fromUsrName;
+ data.mesSvrID = localMessageData.mesSvrID;
data.mesLocalID = localMessageData.mesLocalID;
data.msgCreateTime = localMessageData.msgCreateTime;
if ([localMessageData isSendFromSelf]) {
@@ -95,7 +94,7 @@ static void __attribute__((constructor)) tweak(void) {
}
data;
});
-
+
// Prepare notification information
MMServiceCenter *serviceCenter = [objc_getClass("MMServiceCenter") defaultCenter];
NSUserNotification *userNotification = [[NSUserNotification alloc] init];
@@ -112,16 +111,18 @@ static void __attribute__((constructor)) tweak(void) {
NSString *groupName = groupContact.m_nsNickName.length ? groupContact.m_nsNickName : [NSBundle.tweakBundle localizedStringForKey:@"Tweak.Title.Group"];
userNotification.informativeText = [NSString stringWithFormat:@"%@: %@", groupName, replaceMessage];
}
-
+
+ // Delete message if it is revoke from myself
+ if ([localMessageData isSendFromSelf]) {
+ [((MessageService *)self) DelMsg:session msgList:@[localMessageData] isDelAll:NO isManual:YES];
+ [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData];
+ } else {
+ [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData];
+ [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData];
+ }
+
// Dispatch notification
dispatch_async(dispatch_get_main_queue(), ^{
- // Delete message if it is revoke from myself
- if ([localMessageData isSendFromSelf]) {
- [((MessageService *)self) DelMsg:session msgList:@[localMessageData] isDelAll:NO isManual:YES];
- [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData];
- } else {
- [((MessageService *)self) AddLocalMsg:session msgData:promptMessageData];
- }
// Deliver notification
if (![localMessageData isSendFromSelf]) {
RevokeNotificationType notificationType = [[NSUserDefaults standardUserDefaults] integerForKey:WeChatTweakPreferenceRevokeNotificationTypeKey];