mirror of
https://github.com/Sunnyyoung/WeChatTweak-macOS.git
synced 2026-07-29 06:24:31 +08:00
Add alfred result list avatar support
This commit is contained in:
@@ -51,6 +51,15 @@ static void __attribute__((constructor)) tweak(void) {
|
||||
[objc_getClass("MessageService") jr_swizzleMethod:NSSelectorFromString(@"onRevokeMsg:") withMethod:@selector(tweak_onRevokeMsg:) error:nil];
|
||||
[objc_getClass("CUtility") jr_swizzleClassMethod:NSSelectorFromString(@"HasWechatInstance") withClassMethod:@selector(tweak_HasWechatInstance) error:nil];
|
||||
[objc_getClass("MASPreferencesWindowController") jr_swizzleMethod:NSSelectorFromString(@"initWithViewControllers:") withMethod:@selector(tweak_initWithViewControllers:) error:nil];
|
||||
|
||||
objc_property_attribute_t type = { "T", "@\"NSString\"" }; // NSString
|
||||
objc_property_attribute_t atom = { "N", "" }; // nonatomic
|
||||
objc_property_attribute_t ownership = { "&", "" }; // C = copy & = strong
|
||||
objc_property_attribute_t backingivar = { "V", "_m_nsHeadImgUrl" }; // ivar name
|
||||
objc_property_attribute_t attrs[] = { type, atom, ownership, backingivar };
|
||||
class_addProperty(objc_getClass("WCContactData"), "wt_avatarPath", attrs, 4);
|
||||
class_addMethod(objc_getClass("WCContactData"), @selector(wt_avatarPath), method_getImplementation(class_getInstanceMethod(objc_getClass("WCContactData"), @selector(wt_avatarPath))), "@@:");
|
||||
class_addMethod(objc_getClass("WCContactData"), @selector(setWt_avatarPath:), method_getImplementation(class_getInstanceMethod(objc_getClass("WCContactData"), @selector(setWt_avatarPath:))), "v@:@");
|
||||
}
|
||||
|
||||
#pragma mark - No Revoke Message
|
||||
@@ -176,4 +185,17 @@ static void __attribute__((constructor)) tweak(void) {
|
||||
return [self tweak_initWithViewControllers:viewControllers];
|
||||
}
|
||||
|
||||
#pragma mark - WCContact Data
|
||||
|
||||
- (NSString *)wt_avatarPath {
|
||||
MMAvatarService *avatarService = [[objc_getClass("MMServiceCenter") defaultCenter] getService:objc_getClass("MMAvatarService")];
|
||||
NSString *pathString = [NSString stringWithFormat:@"%@/%@", [avatarService avatarCachePath], [((WCContactData *)self).m_nsHeadImgUrl md5String]];
|
||||
return [NSFileManager.defaultManager fileExistsAtPath:pathString] ? pathString : @"";
|
||||
}
|
||||
|
||||
- (void)setWt_avatarPath:(NSString *)avatarPath {
|
||||
// For readonly
|
||||
return;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -8,6 +8,14 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import <objc/runtime.h>
|
||||
#import <objc/message.h>
|
||||
|
||||
@interface NSString (MD5)
|
||||
|
||||
- (NSString *)md5String;
|
||||
|
||||
@end
|
||||
|
||||
@interface WeChat : NSObject
|
||||
|
||||
@@ -44,6 +52,7 @@
|
||||
@interface WCContactData : NSObject
|
||||
|
||||
@property(nonatomic) unsigned int m_uiCertificationFlag;
|
||||
@property(retain, nonatomic) NSString *m_nsHeadImgUrl;
|
||||
@property(retain, nonatomic) NSString *m_nsNickName;
|
||||
@property(retain, nonatomic) NSString *m_nsUsrName;
|
||||
@property(retain, nonatomic) NSString *m_nsAliasName;
|
||||
@@ -51,6 +60,7 @@
|
||||
@property(retain, nonatomic) NSString *m_nsFullPY;
|
||||
@property(retain, nonatomic) NSString *m_nsRemarkPYShort;
|
||||
@property(retain, nonatomic) NSString *m_nsRemarkPYFull;
|
||||
@property(retain, nonatomic) NSString *wt_avatarPath;
|
||||
|
||||
- (BOOL)isChatStatusNotifyOpen;
|
||||
|
||||
@@ -101,6 +111,12 @@
|
||||
|
||||
@end
|
||||
|
||||
@interface MMAvatarService: NSObject
|
||||
|
||||
- (NSString *)avatarCachePath;
|
||||
|
||||
@end
|
||||
|
||||
@protocol MASPreferencesViewController <NSObject>
|
||||
|
||||
@property(readonly, nonatomic) NSString *toolbarItemLabel;
|
||||
|
||||
Reference in New Issue
Block a user