mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-09-25 15:10:32 +00:00
fix(addressbook): Remove vlist from dav request for Thunderbird only. In Thunderbird 115, using vlist results in contact duplication
This commit is contained in:
@@ -709,7 +709,7 @@ static NSArray *childRecordFields = nil;
|
|||||||
{
|
{
|
||||||
NSArray *records, *names;
|
NSArray *records, *names;
|
||||||
NSString *sqlFilter, *compFilter;
|
NSString *sqlFilter, *compFilter;
|
||||||
EOQualifier *aclQualifier, *componentQualifier, *qualifier;
|
EOQualifier *aclQualifier, *componentQualifier, *qualifier, *vlistExclusionQualifier;
|
||||||
|
|
||||||
sqlFilter = [self aclSQLListingFilter];
|
sqlFilter = [self aclSQLListingFilter];
|
||||||
if (sqlFilter)
|
if (sqlFilter)
|
||||||
@@ -738,8 +738,18 @@ static NSArray *childRecordFields = nil;
|
|||||||
else
|
else
|
||||||
qualifier = aclQualifier;
|
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
|
records = [[self ocsFolder] fetchFields: childRecordFields
|
||||||
matchingQualifier: qualifier];
|
matchingQualifier: qualifier];
|
||||||
|
|
||||||
if (![records isNotNull])
|
if (![records isNotNull])
|
||||||
{
|
{
|
||||||
[self errorWithFormat: @"(%s): fetch failed!", __PRETTY_FUNCTION__];
|
[self errorWithFormat: @"(%s): fetch failed!", __PRETTY_FUNCTION__];
|
||||||
@@ -1176,9 +1186,19 @@ static NSArray *childRecordFields = nil;
|
|||||||
{
|
{
|
||||||
GCSFolder *folder;
|
GCSFolder *folder;
|
||||||
EOFetchSpecification *fetchSpec;
|
EOFetchSpecification *fetchSpec;
|
||||||
|
EOQualifier *vlistExclusionQualifier;
|
||||||
|
|
||||||
folder = [self ocsFolder];
|
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)
|
if (qualifier)
|
||||||
fetchSpec = [EOFetchSpecification
|
fetchSpec = [EOFetchSpecification
|
||||||
fetchSpecificationWithEntityName: [folder folderName]
|
fetchSpecificationWithEntityName: [folder folderName]
|
||||||
|
|||||||
@@ -260,4 +260,9 @@
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (BOOL) isThunderbird
|
||||||
|
{
|
||||||
|
return ([[self headerForKey:@"user-agent"] rangeOfString: @"Thunderbird"].location != NSNotFound);
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|||||||
Reference in New Issue
Block a user