fix(addressbook): Remove vlist from dav request for Thunderbird only. In Thunderbird 115, using vlist results in contact duplication

This commit is contained in:
smizrahi
2023-09-06 14:02:05 +02:00
parent 87b89ed094
commit f0719ee409
2 changed files with 26 additions and 1 deletions

View File

@@ -709,7 +709,7 @@ static NSArray *childRecordFields = nil;
{
NSArray *records, *names;
NSString *sqlFilter, *compFilter;
EOQualifier *aclQualifier, *componentQualifier, *qualifier;
EOQualifier *aclQualifier, *componentQualifier, *qualifier, *vlistExclusionQualifier;
sqlFilter = [self aclSQLListingFilter];
if (sqlFilter)
@@ -738,8 +738,18 @@ static NSArray *childRecordFields = nil;
else
qualifier = aclQualifier;
// For Thunderbird, disable contact list
if ([[context request] isThunderbird]) {
vlistExclusionQualifier = [EOQualifier qualifierWithQualifierFormat: @"c_component != 'vlist'"];
qualifier = [[[EOAndQualifier alloc] initWithQualifiers:
vlistExclusionQualifier,
qualifier,
nil] autorelease];
}
records = [[self ocsFolder] fetchFields: childRecordFields
matchingQualifier: qualifier];
if (![records isNotNull])
{
[self errorWithFormat: @"(%s): fetch failed!", __PRETTY_FUNCTION__];
@@ -1176,9 +1186,19 @@ static NSArray *childRecordFields = nil;
{
GCSFolder *folder;
EOFetchSpecification *fetchSpec;
EOQualifier *vlistExclusionQualifier;
folder = [self ocsFolder];
// For Thunderbird, disable contact list
if ([[context request] isThunderbird]) {
vlistExclusionQualifier = [EOQualifier qualifierWithQualifierFormat: @"c_component != 'vlist'"];
qualifier = [[[EOAndQualifier alloc] initWithQualifiers:
vlistExclusionQualifier,
qualifier,
nil] autorelease];
}
if (qualifier)
fetchSpec = [EOFetchSpecification
fetchSpecificationWithEntityName: [folder folderName]

View File

@@ -260,4 +260,9 @@
return b;
}
- (BOOL) isThunderbird
{
return ([[self headerForKey:@"user-agent"] rangeOfString: @"Thunderbird"].location != NSNotFound);
}
@end