Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feature/localsearch] Local account-wide search using custom queries #933

Merged
merged 42 commits into from
Apr 20, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
ea6c868
Port changes from feature/globalsearch to milestone/11.6
felix-schwarz Mar 17, 2021
e059a8d
- clean up QueryFileListTableViewController.swift
felix-schwarz Mar 17, 2021
4572040
- SortMethod
felix-schwarz Mar 17, 2021
e53e51a
- UIView+Extension: add simply methods to start/stop a pulsing effect…
felix-schwarz Mar 23, 2021
b18df1d
- add "Show more results" row at the end of the search result list if…
felix-schwarz Mar 23, 2021
75cc69e
- Cleanup more cell identifiers
felix-schwarz Mar 23, 2021
4fbcf1b
- QueryFileListTableViewController: search remains active after choos…
felix-schwarz Mar 24, 2021
9a39982
SDK update to fix OCCore stop bug
felix-schwarz Mar 24, 2021
469db00
- BreadCrumbTableViewController
felix-schwarz Mar 24, 2021
53e8f19
- fix issue of stopped custom query after revealing an item and retur…
felix-schwarz Mar 24, 2021
0f86503
- OCBookmark+AppExtensions: check if displayName and userName have at…
felix-schwarz Mar 25, 2021
a78f0f9
- update SDK
felix-schwarz Mar 25, 2021
6781091
- more differentiated status 503 handling (https://github.com/ownclou…
felix-schwarz Mar 25, 2021
458ffa6
Merge branch 'milestone/11.6' into feature/localsearch
felix-schwarz Mar 25, 2021
18f1ef8
- NSDate+ComputedTimes
felix-schwarz Mar 29, 2021
81f3e70
- Update SDK to fix Service Unavailable error handling
felix-schwarz Mar 30, 2021
d9fdee2
- update SDK to add item sync info scrubbing capabilities
felix-schwarz Mar 30, 2021
e397d7c
OCQueryCondition+SearchSegmenter:
felix-schwarz Apr 8, 2021
4e4416d
- update SDK
felix-schwarz Apr 8, 2021
0f5b886
- QueryFileListTableViewController: remove unneeded/conflicting searc…
felix-schwarz Apr 8, 2021
5883b23
Merge remote-tracking branch 'origin/milestone/11.6' into feature/loc…
felix-schwarz Apr 8, 2021
356d42b
Code review suggestion for PR #933:
hosy Apr 9, 2021
76547c9
- change search field placeholder depending on selected scope
felix-schwarz Apr 9, 2021
5809985
Merge branch 'feature/localsearch-cr-suggestion' into feature/localse…
felix-schwarz Apr 9, 2021
6d62dde
Merge remote-tracking branch 'origin/milestone/11.6' into feature/loc…
felix-schwarz Apr 9, 2021
ce81cac
- fixed showing and executing keyboard shortcuts when search is activ…
hosy Apr 12, 2021
77979e1
- comment out parts of KeyCommands that seem to interfere with entry …
felix-schwarz Apr 12, 2021
527ab4d
- disable keyboard shortcuts for letters, if search is active
hosy Apr 13, 2021
b89987a
fixed search field cursor tint color
hosy Apr 13, 2021
e09822e
- logging improvements: use OCFileOpLog to log file operation in OCCo…
felix-schwarz Apr 13, 2021
372d798
- fix finding (1) in #933 via SDK update
felix-schwarz Apr 15, 2021
6ae8242
- fix misplaced sortbar (finding (3) in #933)
felix-schwarz Apr 15, 2021
38ad27d
- OCQueryCondition+SearchSegmenter: accept more possible quotation ma…
felix-schwarz Apr 15, 2021
2e67485
OCQueryCondition+SearchSegmenter: allow inactivation of keywords thro…
felix-schwarz Apr 15, 2021
0ea4bb9
- remove accidentally entered ":" that prevented compilation
felix-schwarz Apr 15, 2021
002ee67
fixed QA finding (8): keyboard commands for search and sort order whe…
hosy Apr 16, 2021
4fddedf
- SortBar: new allowMultiSelect property to control whether multi sel…
felix-schwarz Apr 16, 2021
399ed6d
- update SDK to add database support for ownerUserName
felix-schwarz Apr 16, 2021
89200c3
fixed duplicated keyboard commands:
hosy Apr 19, 2021
3b397f0
erge branch 'milestone/11.6' into feature/localsearch
hosy Apr 20, 2021
69dc227
added changelog entry
hosy Apr 20, 2021
9c8de15
Calens changelog updated
hosy Apr 20, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Summary
* Bugfix - Disable Markup Action for Mime-Type Gif: [#952](https://github.com/owncloud/ios-app/issues/952)
* Change - "Go to Page" reallocated in PDF previews: [#4448](https://github.com/owncloud/enterprise/issues/4448)
* Change - French Localization: [#4450](https://github.com/owncloud/enterprise/issues/4450)
* Change - Local account-wide search using custom queries: [#53](https://github.com/owncloud/ios-app/issues/53)
* Change - Presentation Mode: [#704](https://github.com/owncloud/ios-app/issues/704)
* Change - Shortcut uploads and error handling improvements: [#858](https://github.com/owncloud/ios-app/issues/858)
* Change - Added Actions to File Provider: Sharing & Public Links: [#910](https://github.com/owncloud/ios-app/pull/910)
Expand Down Expand Up @@ -76,6 +77,13 @@ Details

https://github.com/owncloud/enterprise/issues/4450

* Change - Local account-wide search using custom queries: [#53](https://github.com/owncloud/ios-app/issues/53)

User can switch between local folder or local account-wide search. Search terms and filter
keywords can be combined inside the search field to get granular search results.

https://github.com/owncloud/ios-app/issues/53

* Change - Presentation Mode: [#704](https://github.com/owncloud/ios-app/issues/704)

Added an action in detail view menu which enables presentation mode. Presentation mode
Expand Down
6 changes: 6 additions & 0 deletions changelog/unreleased/53
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Change: Local account-wide search using custom queries

User can switch between local folder or local account-wide search.
Search terms and filter keywords can be combined inside the search field to get granular search results.

https://github.com/owncloud/ios-app/issues/53
2 changes: 1 addition & 1 deletion ios-sdk
69 changes: 55 additions & 14 deletions ownCloud File Provider/FileProviderExtension.m
Original file line number Diff line number Diff line change
Expand Up @@ -175,25 +175,44 @@ - (NSFileProviderItem)itemForIdentifier:(NSFileProviderItemIdentifier)identifier

OCSyncExec(itemRetrieval, {
// Resolve the given identifier to a record in the model
if ([identifier isEqual:NSFileProviderRootContainerItemIdentifier])
NSError *coreError = nil;
OCCore *core = [self coreWithError:&coreError];

if (core != nil)
{
// Root item
[self.core.vault.database retrieveCacheItemsAtPath:@"/" itemOnly:YES completionHandler:^(OCDatabase *db, NSError *error, OCSyncAnchor syncAnchor, NSArray<OCItem *> *items) {
item = items.firstObject;
returnError = error;
if (coreError != nil)
{
returnError = coreError;
}
else
{
if ([identifier isEqual:NSFileProviderRootContainerItemIdentifier])
{
// Root item
[self.core.vault.database retrieveCacheItemsAtPath:@"/" itemOnly:YES completionHandler:^(OCDatabase *db, NSError *error, OCSyncAnchor syncAnchor, NSArray<OCItem *> *items) {
item = items.firstObject;
returnError = error;

OCSyncExecDone(itemRetrieval);
}];
OCSyncExecDone(itemRetrieval);
}];
}
else
{
// Other item
[self.core retrieveItemFromDatabaseForLocalID:(OCLocalID)identifier completionHandler:^(NSError *error, OCSyncAnchor syncAnchor, OCItem *itemFromDatabase) {
item = itemFromDatabase;
returnError = error;

OCSyncExecDone(itemRetrieval);
}];
}
}
}
else
{
// Other item
[self.core retrieveItemFromDatabaseForLocalID:(OCLocalID)identifier completionHandler:^(NSError *error, OCSyncAnchor syncAnchor, OCItem *itemFromDatabase) {
item = itemFromDatabase;
returnError = error;
returnError = coreError;

OCSyncExecDone(itemRetrieval);
}];
OCSyncExecDone(itemRetrieval);
}
});

Expand Down Expand Up @@ -1001,11 +1020,17 @@ - (OCBookmark *)bookmark
}

- (OCCore *)core
{
return ([self coreWithError:nil]);
}

- (OCCore *)coreWithError:(NSError **)outError
{
OCLogDebug(@"FileProviderExtension[%p].core[enter]: _core=%p, bookmark=%@", self, _core, self.bookmark);

OCBookmark *bookmark = self.bookmark;
__block OCCore *retCore = nil;
__block NSError *retError = nil;

@synchronized(self)
{
Expand Down Expand Up @@ -1037,6 +1062,11 @@ - (OCCore *)core
retCore = self->_core;
}
}

if (error != nil)
{
retError = error;
}
} completionHandler:^(OCCore *core, NSError *error) {
if (!hasCore)
{
Expand All @@ -1052,6 +1082,12 @@ - (OCCore *)core
retCore = self->_core;
}

if (error != nil)
{
retError = error;
retCore = nil;
}

OCSyncExecDone(waitForCore);

if (hasCore)
Expand All @@ -1066,7 +1102,12 @@ - (OCCore *)core

if (retCore == nil)
{
OCLogError(@"Error getting core for domain %@ (UUID %@)", OCLogPrivate(self.domain.displayName), OCLogPrivate(self.domain.identifier));
OCLogError(@"Error getting core for domain %@ (UUID %@): %@", OCLogPrivate(self.domain.displayName), OCLogPrivate(self.domain.identifier), OCLogPrivate(retError));
}

if (outError != NULL)
{
*outError = retError;
}

OCLogDebug(@"FileProviderExtension[%p].core[leave]: _core=%p, bookmark=%@", self, retCore, bookmark);
Expand Down
28 changes: 28 additions & 0 deletions ownCloud.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,8 @@
DC68057A212EAB5E006C3B1F /* ThemeCertificateViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC680579212EAB5E006C3B1F /* ThemeCertificateViewController.swift */; };
DC6C68362574FD0400E46BD4 /* PLCrashReporter.LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = DC6C68352574FD0400E46BD4 /* PLCrashReporter.LICENSE */; };
DC6CF7FB219446050013B9F9 /* LogSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC6CF7FA219446050013B9F9 /* LogSettingsViewController.swift */; };
DC70398526128B89009F2DC1 /* NSString+ByteCountParser.h in Headers */ = {isa = PBXBuildFile; fileRef = DC70398326128B89009F2DC1 /* NSString+ByteCountParser.h */; };
DC70398626128B89009F2DC1 /* NSString+ByteCountParser.m in Sources */ = {isa = PBXBuildFile; fileRef = DC70398426128B89009F2DC1 /* NSString+ByteCountParser.m */; };
DC774E5F22F44E57000B11A1 /* ZIPArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = DC774E5D22F44E4A000B11A1 /* ZIPArchive.m */; };
DC774E6022F44E57000B11A1 /* ZIPArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = DC774E5C22F44E4A000B11A1 /* ZIPArchive.h */; settings = {ATTRIBUTES = (Public, ); }; };
DC774E6322F44E6D000B11A1 /* OCCore+BundleImport.h in Headers */ = {isa = PBXBuildFile; fileRef = DC774E6122F44E6D000B11A1 /* OCCore+BundleImport.h */; settings = {ATTRIBUTES = (Public, ); }; };
Expand Down Expand Up @@ -368,6 +370,9 @@
DCAEB06121F9FC510067E147 /* EarlGrey+Tools.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCAEB06021F9FC510067E147 /* EarlGrey+Tools.swift */; };
DCB2C05F250C1F9E001083CA /* BrandingClassSettingsSource.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB2C05D250C1F9E001083CA /* BrandingClassSettingsSource.h */; };
DCB2C061250C253C001083CA /* BrandingClassSettingsSource.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB2C05E250C1F9E001083CA /* BrandingClassSettingsSource.m */; };
DCB458ED2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB458EB2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCB458EE2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB458EC2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.m */; };
DCB459052604AD2A006A02AB /* SearchSegmentationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB459042604AD2A006A02AB /* SearchSegmentationTests.m */; };
DCB5D60B25FC14B6004C52D9 /* OCIssue+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB5D60A25FC14B6004C52D9 /* OCIssue+Extension.swift */; };
DCB6C4D72453A6CA00C1EAE1 /* ClientAuthenticationUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB6C4D62453A6CA00C1EAE1 /* ClientAuthenticationUpdater.swift */; };
DCB6C4DE24559B1600C1EAE1 /* ClientAuthenticationUpdaterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCB6C4DD24559B1600C1EAE1 /* ClientAuthenticationUpdaterViewController.swift */; };
Expand Down Expand Up @@ -399,6 +404,8 @@
DCC83304242CF3AD00153F8C /* AlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCC83303242CF3AC00153F8C /* AlertViewController.swift */; };
DCC8535823CE1236007BA3EB /* LicenseInAppProductListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCC8535723CE1236007BA3EB /* LicenseInAppProductListViewController.swift */; };
DCC8536023CE1AF8007BA3EB /* PurchasesSettingsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCC8535F23CE1AF8007BA3EB /* PurchasesSettingsSection.swift */; };
DCCD77792604C91600098573 /* NSDate+ComputedTimes.h in Headers */ = {isa = PBXBuildFile; fileRef = DCCD776A2604C81B00098573 /* NSDate+ComputedTimes.h */; settings = {ATTRIBUTES = (Public, ); }; };
DCCD778C2604C91B00098573 /* NSDate+ComputedTimes.m in Sources */ = {isa = PBXBuildFile; fileRef = DCCD776B2604C81B00098573 /* NSDate+ComputedTimes.m */; };
DCD1300A23A191C000255779 /* LicenseOfferButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD1300923A191C000255779 /* LicenseOfferButton.swift */; };
DCD1301123A23F4E00255779 /* OCLicenseManager+AppStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD1301023A23F4E00255779 /* OCLicenseManager+AppStore.swift */; };
DCD2D40622F06ECA0071FB8F /* DataSettingsSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCD2D40522F06ECA0071FB8F /* DataSettingsSection.swift */; };
Expand Down Expand Up @@ -1287,6 +1294,8 @@
DC680579212EAB5E006C3B1F /* ThemeCertificateViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeCertificateViewController.swift; sourceTree = "<group>"; };
DC6C68352574FD0400E46BD4 /* PLCrashReporter.LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = PLCrashReporter.LICENSE; sourceTree = "<group>"; };
DC6CF7FA219446050013B9F9 /* LogSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogSettingsViewController.swift; sourceTree = "<group>"; };
DC70398326128B89009F2DC1 /* NSString+ByteCountParser.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+ByteCountParser.h"; sourceTree = "<group>"; };
DC70398426128B89009F2DC1 /* NSString+ByteCountParser.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+ByteCountParser.m"; sourceTree = "<group>"; };
DC774E5C22F44E4A000B11A1 /* ZIPArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZIPArchive.h; sourceTree = "<group>"; };
DC774E5D22F44E4A000B11A1 /* ZIPArchive.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ZIPArchive.m; sourceTree = "<group>"; };
DC774E6122F44E6D000B11A1 /* OCCore+BundleImport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OCCore+BundleImport.h"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1331,6 +1340,9 @@
DCB44D7C2186F0F600DAA4CC /* ThemeStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeStyle.swift; sourceTree = "<group>"; };
DCB44D842186FEF700DAA4CC /* ThemeStyle+DefaultStyles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThemeStyle+DefaultStyles.swift"; sourceTree = "<group>"; };
DCB44D86218718BA00DAA4CC /* VendorServices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VendorServices.swift; sourceTree = "<group>"; };
DCB458EB2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "OCQueryCondition+SearchSegmenter.h"; sourceTree = "<group>"; };
DCB458EC2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "OCQueryCondition+SearchSegmenter.m"; sourceTree = "<group>"; };
DCB459042604AD2A006A02AB /* SearchSegmentationTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SearchSegmentationTests.m; sourceTree = "<group>"; };
DCB504D7221EF07E007638BE /* status-flash.tvg */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "status-flash.tvg"; path = "img/filetypes-tvg/status-flash.tvg"; sourceTree = SOURCE_ROOT; };
DCB5D60A25FC14B6004C52D9 /* OCIssue+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OCIssue+Extension.swift"; sourceTree = "<group>"; };
DCB6C4D62453A6CA00C1EAE1 /* ClientAuthenticationUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientAuthenticationUpdater.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1367,6 +1379,8 @@
DCC83303242CF3AC00153F8C /* AlertViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertViewController.swift; sourceTree = "<group>"; };
DCC8535723CE1236007BA3EB /* LicenseInAppProductListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicenseInAppProductListViewController.swift; sourceTree = "<group>"; };
DCC8535F23CE1AF8007BA3EB /* PurchasesSettingsSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PurchasesSettingsSection.swift; sourceTree = "<group>"; };
DCCD776A2604C81B00098573 /* NSDate+ComputedTimes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSDate+ComputedTimes.h"; sourceTree = "<group>"; };
DCCD776B2604C81B00098573 /* NSDate+ComputedTimes.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSDate+ComputedTimes.m"; sourceTree = "<group>"; };
DCD1300923A191C000255779 /* LicenseOfferButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LicenseOfferButton.swift; sourceTree = "<group>"; };
DCD1301023A23F4E00255779 /* OCLicenseManager+AppStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OCLicenseManager+AppStore.swift"; sourceTree = "<group>"; };
DCD2D40522F06ECA0071FB8F /* DataSettingsSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DataSettingsSection.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -2399,6 +2413,8 @@
DC774E6122F44E6D000B11A1 /* OCCore+BundleImport.h */,
DC7C100F24B5F81E00227085 /* OCBookmark+AppExtensions.m */,
DC7C100E24B5F81E00227085 /* OCBookmark+AppExtensions.h */,
DCB458EC2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.m */,
DCB458EB2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.h */,
);
path = "SDK Extensions";
sourceTree = "<group>";
Expand Down Expand Up @@ -2650,6 +2666,7 @@
isa = PBXGroup;
children = (
DCC0856B2293F1FD008CC05C /* LicensingTests.m */,
DCB459042604AD2A006A02AB /* SearchSegmentationTests.m */,
DCC0856D2293F1FD008CC05C /* Info.plist */,
);
path = ownCloudAppFrameworkTests;
Expand All @@ -2660,6 +2677,10 @@
children = (
DCC5E445232654DE002E5B84 /* NSObject+AnnotatedProperties.m */,
DCC5E444232654DE002E5B84 /* NSObject+AnnotatedProperties.h */,
DCCD776B2604C81B00098573 /* NSDate+ComputedTimes.m */,
DCCD776A2604C81B00098573 /* NSDate+ComputedTimes.h */,
DC70398426128B89009F2DC1 /* NSString+ByteCountParser.m */,
DC70398326128B89009F2DC1 /* NSString+ByteCountParser.h */,
);
path = "Foundation Extensions";
sourceTree = "<group>";
Expand Down Expand Up @@ -3132,6 +3153,7 @@
DC4332002472E1B4002DC0E5 /* OCLicenseEMMProvider.h in Headers */,
DCFEFE39236877A7009A142F /* OCLicenseFeature.h in Headers */,
DC23D1DA238F391200423F62 /* OCLicenseAppStoreReceipt.h in Headers */,
DC70398526128B89009F2DC1 /* NSString+ByteCountParser.h in Headers */,
DCF2DA8324C83BFB0026D790 /* OCFileProviderService.h in Headers */,
DCF2DA8624C87A330026D790 /* OCCore+FPServices.h in Headers */,
DC774E6022F44E57000B11A1 /* ZIPArchive.h in Headers */,
Expand All @@ -3157,6 +3179,8 @@
DCF2DA8124C836240026D790 /* OCBookmark+FPServices.h in Headers */,
DC66F3A523965A1400CF4812 /* NSDate+RFC3339.h in Headers */,
DC0030C22350B1CE00BB8570 /* NSData+Encoding.h in Headers */,
DCCD77792604C91600098573 /* NSDate+ComputedTimes.h in Headers */,
DCB458ED2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.h in Headers */,
DCC5E4472326564F002E5B84 /* NSObject+AnnotatedProperties.h in Headers */,
DC66F3AB23965C9C00CF4812 /* OCLicenseAppStoreReceiptInAppPurchase.h in Headers */,
DC049156258C00C400DEDC27 /* OCFileProviderServiceStandby.h in Headers */,
Expand Down Expand Up @@ -4245,6 +4269,7 @@
files = (
DCFEFE9D2368D7FA009A142F /* OCLicenseObserver.m in Sources */,
DC66F39D239659C000CF4812 /* OCASN1.m in Sources */,
DCCD778C2604C91B00098573 /* NSDate+ComputedTimes.m in Sources */,
DC66F3A623965A1400CF4812 /* NSDate+RFC3339.m in Sources */,
DCF2DA8724C87A330026D790 /* OCCore+FPServices.m in Sources */,
DC7C101224B5FD6500227085 /* OCBookmark+AppExtensions.m in Sources */,
Expand All @@ -4260,6 +4285,7 @@
DCFEFE2B236876BD009A142F /* OCLicenseManager.m in Sources */,
DCDC20A22399A715003CFF5B /* OCCore+LicenseEnvironment.m in Sources */,
DCDC20AC2399A8CF003CFF5B /* OCLicenseEnterpriseProvider.m in Sources */,
DC70398626128B89009F2DC1 /* NSString+ByteCountParser.m in Sources */,
DCFEFE3A236877A7009A142F /* OCLicenseFeature.m in Sources */,
DCFEFE50236880B5009A142F /* OCLicenseOffer.m in Sources */,
DC0030C12350B1CE00BB8570 /* NSData+Encoding.m in Sources */,
Expand All @@ -4273,6 +4299,7 @@
DCFEFE4A23687C83009A142F /* OCLicenseEntitlement.m in Sources */,
DC66F3AC23965C9C00CF4812 /* OCLicenseAppStoreReceiptInAppPurchase.m in Sources */,
DCD8109B23984AF6003B0053 /* OCLicenseDuration.m in Sources */,
DCB458EE2604A7D4006A02AB /* OCQueryCondition+SearchSegmenter.m in Sources */,
DC080CF3238C92480044C5D2 /* OCLicenseAppStoreItem.m in Sources */,
DCFEFE982368D099009A142F /* OCLicenseEnvironment.m in Sources */,
DC049157258C00C400DEDC27 /* OCFileProviderServiceStandby.m in Sources */,
Expand All @@ -4284,6 +4311,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
DCB459052604AD2A006A02AB /* SearchSegmentationTests.m in Sources */,
DCE442CE2387452000940A6D /* LicensingTests.m in Sources */,
39057AA7233BA7A60008E6C0 /* Intents.intentdefinition in Sources */,
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,18 @@
isEnabled = "YES">
</EnvironmentVariable>
</EnvironmentVariables>
<AdditionalOptions>
<AdditionalOption
key = "MallocStackLogging"
value = ""
isEnabled = "YES">
</AdditionalOption>
<AdditionalOption
key = "PrefersMallocStackLoggingLite"
value = ""
isEnabled = "YES">
</AdditionalOption>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ class CollaborateAction: Action {
override class var name : String { return "Sharing".localized }
override class var locations : [OCExtensionLocationIdentifier]? { return [.keyboardShortcut, .contextMenuSharingItem] }
override class var keyCommand : String? { return "S" }
override class var keyModifierFlags: UIKeyModifierFlags? { return [.command, .control] }
override class var keyModifierFlags: UIKeyModifierFlags? { return [.command] }

// MARK: - Extension matching
override class func applicablePosition(forContext: ActionContext) -> ActionPosition {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class OpenInAction: Action {
self.interactionController = UIDocumentInteractionController(url: fileURL)
self.interactionController?.delegate = self

if let _ = self.context.sender as? UIKeyCommand, let hostViewController = hostViewController {
if self.context.sender as? UIKeyCommand != nil, let hostViewController = hostViewController {
var sourceRect = hostViewController.view.frame
sourceRect.origin.x = viewController.view.center.x
sourceRect.origin.y = viewController.navigationController?.navigationBar.frame.size.height ?? 0.0
Expand Down
Loading