11#import " ../PSHeader/Misc.h"
2+ #import " ../PSHeader/iOSVersions.h"
23#include " PSEmojiType.h"
34#include " Header.h"
45#import " PSEmojiUtilities.h"
56#import < TextInput/NSString+TIExtras.h>
6- #import < objc/runtime.h>
7- #import < version.h>
87
98@implementation PSEmojiUtilities (Functions)
109
@@ -307,8 +306,6 @@ + (NSString *)multiPersonStringForString:(NSString *)emojiString skinToneVariant
307306+ (NSArray <NSArray <NSString *> *> *)skinToneChooserVariantsForString : (NSString *)emojiString usesSilhouetteSpecifiers : (BOOL )silhouette {
308307 PSEmojiMultiPersonType multiPersonType = [self multiPersonTypeForString: emojiString];
309308 if (multiPersonType) {
310- // if ([self isHandholingCoupleEmoji:emojiString])
311- // return [self skinToneChooserVariantsForHandHoldingCoupleType:multiPersonType];
312309 NSString *joiner = [self joiningStringForCoupleString: emojiString] ?: HANDSHAKE_JOINER;
313310 return [self skinToneChooserArraysForCoupleType: multiPersonType joiner: joiner];
314311 }
@@ -328,7 +325,7 @@ + (BOOL)hasSkin:(NSString *)emojiString {
328325
329326+ (NSString *)changeEmojiSkin : (NSString *)emojiString toSkin : (NSString *)skin {
330327 NSString *oldSkin = [self getSkin: emojiString];
331- if (oldSkin == nil || stringEqual ( oldSkin, skin) )
328+ if (oldSkin == nil || [ oldSkin isEqualToString: skin] )
332329 return emojiString;
333330 return [emojiString stringByReplacingOccurrencesOfString: oldSkin withString: skin options: NSLiteralSearch range: NSMakeRange (0 , emojiString.length)];
334331}
@@ -595,12 +592,13 @@ + (BOOL)hasDingbat:(NSString *)emojiString {
595592
596593+ (UIKeyboardEmoji *)emojiWithString : (NSString *)emojiString {
597594 UIKeyboardEmoji *emoji = nil ;
598- if ([NSClassFromString (@" UIKeyboardEmoji" ) respondsToSelector: @selector (emojiWithString:hasDingbat: )])
599- emoji = [NSClassFromString (@" UIKeyboardEmoji" ) emojiWithString: emojiString hasDingbat: [self hasDingbat: emojiString]];
600- else if ([NSClassFromString (@" UIKeyboardEmoji" ) respondsToSelector: @selector (emojiWithString: )])
601- emoji = [NSClassFromString (@" UIKeyboardEmoji" ) emojiWithString: emojiString];
595+ Class UIKeyboardEmoji = NSClassFromString (@" UIKeyboardEmoji" );
596+ if ([UIKeyboardEmoji respondsToSelector: @selector (emojiWithString:hasDingbat: )])
597+ emoji = [UIKeyboardEmoji emojiWithString: emojiString hasDingbat: [self hasDingbat: emojiString]];
598+ else if ([UIKeyboardEmoji respondsToSelector: @selector (emojiWithString: )])
599+ emoji = [UIKeyboardEmoji emojiWithString: emojiString];
602600 else
603- emoji = [[[ NSClassFromString ( @" UIKeyboardEmoji" ) alloc ] initWithString: emojiString] autorelease ];
601+ emoji = [[UIKeyboardEmoji alloc ] initWithString: emojiString];
604602 if ([emoji respondsToSelector: @selector (setSupportsSkin: )])
605603 emoji.supportsSkin = [self hasSkinToneVariants: emojiString];
606604 return emoji;
@@ -729,20 +727,23 @@ + (CGGlyph)emojiGlyphShift:(CGGlyph)glyph {
729727#endif
730728
731729+ (void )resetEmojiPreferences {
732- if (IS_IOS_OR_NEWER (iOS_11_0)) {
733- // Better approach: Reset keyboard dictionary
734- return ;
730+ id preferences = nil ;
731+ id innerPreferences = nil ;
732+ if (NSClassFromString (@" UIKeyboardEmojiPreferences" )) {
733+ preferences = innerPreferences = [NSClassFromString (@" UIKeyboardEmojiPreferences" ) sharedInstance ];
734+ if (IS_IOS_OR_NEWER (iOS_10_2))
735+ innerPreferences = [preferences valueForKey: @" _preferencesClient" ];
735736 }
736- #if !__arm64e__
737- id preferences;
738- if (NSClassFromString (@" UIKeyboardEmojiPreferences" ))
739- preferences = [NSClassFromString (@" UIKeyboardEmojiPreferences" ) sharedInstance ];
740737 else
741- preferences = [NSClassFromString (@" UIKeyboardEmojiDefaultsController" ) sharedController ];
742- object_setInstanceVariable (preferences, " _defaults" , (void *)[[(UIKeyboardEmojiDefaultsController *)preferences emptyDefaultsDictionary ] retain ]);
743- object_setInstanceVariable (preferences, " _isDefaultDirty" , (void *)YES );
738+ preferences = innerPreferences = [NSClassFromString (@" UIKeyboardEmojiDefaultsController" ) sharedController ];
739+ if ([innerPreferences respondsToSelector: @selector (emptyDefaultsDictionary )])
740+ [innerPreferences setValue: [(UIKeyboardEmojiDefaultsController *)preferences emptyDefaultsDictionary ] forKey: @" _defaults" ];
741+ else
742+ [innerPreferences resetEmojiDefaults ];
743+ [innerPreferences setValue: @(YES ) forKey: @" _isDefaultDirty" ];
744+ if ([preferences respondsToSelector: @selector (refreshLocalRecents )])
745+ [(UIKeyboardEmojiPreferences *)preferences refreshLocalRecents ];
744746 [(UIKeyboardEmojiDefaultsController *)preferences writeEmojiDefaults ];
745- #endif
746747}
747748
748749@end
0 commit comments