Merge commit '7621e2f8dec938cf48181c8b10afc9b01f444e68' into beta

This commit is contained in:
Ilya Laktyushin
2025-12-06 02:17:48 +04:00
commit 8344b97e03
28070 changed files with 7995182 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
objc_library(
name = "ContactsHelper",
enable_modules = True,
module_name = "ContactsHelper",
srcs = glob([
"Sources/**/*.m",
"Sources/**/*.h",
], allow_empty = True),
hdrs = glob([
"PublicHeaders/**/*.h",
]),
includes = [
"PublicHeaders",
],
sdk_frameworks = [
"Foundation",
],
visibility = [
"//visibility:public",
],
)
@@ -0,0 +1,30 @@
#ifndef ContactsHelper_h
#define ContactsHelper_h
#import <Foundation/Foundation.h>
#import <Contacts/Contacts.h>
NS_ASSUME_NONNULL_BEGIN
@interface ContactsEnumerateChangeResult : NSObject
@property (nonatomic, strong) NSData * _Nullable stateToken;
- (instancetype)initWithStateToken:(NSData *)stateToken;
@end
@interface ContactsEnumerateResult : NSObject
@property (nonatomic, strong) NSData * _Nullable stateToken;
- (instancetype)initWithStateToken:(NSData *)stateToken;
@end
ContactsEnumerateChangeResult * _Nullable ContactsEnumerateChangeRequest(CNContactStore *store, CNChangeHistoryFetchRequest *fetchRequest, id<CNChangeHistoryEventVisitor> visitor);
ContactsEnumerateResult * _Nullable ContactsEnumerateRequest(CNContactStore *store, CNContactFetchRequest *fetchRequest, void (^onContact)(CNContact *));
NS_ASSUME_NONNULL_END
#endif /* ContactsHelper_h */
+46
View File
@@ -0,0 +1,46 @@
#import <ContactsHelper/ContactsHelper.h>
@implementation ContactsEnumerateChangeResult
- (instancetype)initWithStateToken:(NSData *)stateToken {
self = [super init];
if (self != nil) {
_stateToken = stateToken;
}
return self;
}
@end
@implementation ContactsEnumerateResult
- (instancetype)initWithStateToken:(NSData *)stateToken {
self = [super init];
if (self != nil) {
_stateToken = stateToken;
}
return self;
}
@end
ContactsEnumerateChangeResult * _Nullable ContactsEnumerateChangeRequest(CNContactStore *store, CNChangeHistoryFetchRequest *fetchRequest, id<CNChangeHistoryEventVisitor> visitor) {
NSError *error = nil;
CNFetchResult<NSEnumerator<CNChangeHistoryEvent *> *> *fetchResult = [store enumeratorForChangeHistoryFetchRequest:fetchRequest error:&error];
for (CNChangeHistoryEvent *event in fetchResult.value) {
[event acceptEventVisitor:visitor];
}
return [[ContactsEnumerateChangeResult alloc] initWithStateToken:fetchResult.currentHistoryToken];
}
ContactsEnumerateResult * _Nullable ContactsEnumerateRequest(CNContactStore *store, CNContactFetchRequest *fetchRequest, void (^onContact)(CNContact *)) {
NSError *error = nil;
CNFetchResult<NSEnumerator<CNContact *> *> *fetchResult = [store enumeratorForContactFetchRequest:fetchRequest error:&error];
for (CNContact *contact in fetchResult.value) {
onContact(contact);
}
return [[ContactsEnumerateResult alloc] initWithStateToken:fetchResult.currentHistoryToken];
}