Skip to content

Commit 5f7550b

Browse files
DeepDiver1975felix-schwarzhosy
authored
release 12.4.0 (#1440)
* doc: add changelog items for 12.4.0 * - ownCloud project: update version and build number - ReleaseNotes: add changes for v12.4 - THIRD_PARTY: fix typo, line with bad encoding and include better description of PLCrashReporter license * - Xcode project: change version number from 12.4 to 12.4.0 * - ReleaseNotes: update version number from 12.4 to 12.4.0, too * - ImportPasteboardAction: - add missing error handling and calls to OCCoreManager.returnCore - add comments - fix formatting - NSURL+OCVaultTools: NSURL additions to simplify finding out if a file is located within the SDK/app vault storage - and if it is a local file (or something else, like a folder) - OCCore+BundleImport: - make imports more straightforward and avoid file coordination if the file to import is a local file managed by the SDK/app - for imports outside the vault, use file coordination only for non-file types - add missing error handling in case file coordination fails * - bump build number to 294 * - update SDK to include changes that greatly decrease memory consumption in minimum memory configuration * - AppRootViewController: remove wording pointing to "Send Feedback" feature from beta warning - Branding+App: remove default URL for sending feedback, so the stock client will no longer show that option - include updated xcstrings files * - bump build number * - update ios-sdk to address finding (3) (lack of proper handling for 409 status code for direct uploads) * - updated App Store release notes - Changelog: Moved all changelog files from the unreleased folder to the new version folder --------- Co-authored-by: Felix Schwarz <fs-git@iospirit.com> Co-authored-by: Matthias Hühne <github@hosy.de>
1 parent 5cfb7c1 commit 5f7550b

File tree

19 files changed

+265
-175
lines changed

19 files changed

+265
-175
lines changed

THIRD_PARTY.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
###########
2222

2323
This program is free software: you can redistribute it and/or modify
24-
it under the terms of the GNU General Public License verions 3,
24+
it under the terms of the GNU General Public License version 3,
2525
as published by the Free Software Foundation.
2626

2727
This program is distributed in the hope that it will be useful,
@@ -77,13 +77,13 @@ The third party software included and used by this project is:
7777
* PLCrashReporter
7878
Copyright (c) Microsoft Corporation.
7979
Copyright (c) 2008 - 2014 Plausible Labs Cooperative, Inc.
80-
Licensed under proprietary license
80+
Licensed under MIT, Apache License 2.0 (see license file)
8181
Placed as Swift package
8282
Original license document included at ownCloud/Resources/PLCrashReporter.LICENSE.
8383
See https://github.com/microsoft/plcrashreporter
8484

8585
* PocketSVG
86-
Copyright (c) Ponderwell, Ariel Elkin, Fj�lnir �sgeirsson, and Contributors
86+
Copyright (c) Ponderwell, Ariel Elkin, Fjölnir Ásgeirsson, and Contributors
8787
Licensed under MIT License.
8888
Placed as Swift package
8989
Original license document included at ownCloudAppShared/PocketSVG.LICENSE.

changelog/12.4.0_2025-02-03/1416

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
Bugfix: Memory usage optimizations
2+
3+
Memory optimizations specifically to the file provider to ensure stability.
4+
5+
https://github.com/owncloud/ios-app/pull/1416
6+
https://github.com/owncloud/ios-sdk/pull/121

changelog/12.4.0_2025-02-03/1430

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
Enhancement: Content Protection
2+
3+
Content is protected by water marking and screenshot prevention mechanisms.
4+
Available via MDM and buils time settings.
5+
6+
https://github.com/owncloud/ios-app/pull/1430
7+
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
iOS 18
2-
The app is now compatible with iOS 18.
1+
Confidential Protection
2+
Watermarking, screenshot protection and more are now available via MDM and branding.
33

4-
General Improvements
5-
General app improvements and internal fixes to enhance performance, synchronization, and stability.
4+
File Provider Memory Efficiency
5+
The File Provider is now more stable thanks to improved memory efficiency.
66

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
iOS 18
2-
The app is now compatible with iOS 18.
1+
Confidential Protection
2+
Watermarking, screenshot protection and more are now available via MDM and branding.
33

4-
General Improvements
5-
General app improvements and internal fixes to enhance performance, synchronization, and stability.
4+
File Provider Memory Efficiency
5+
The File Provider is now more stable thanks to improved memory efficiency.
66

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
iOS 18
2-
The app is now compatible with iOS 18.
1+
Confidential Protection
2+
Watermarking, screenshot protection and more are now available via MDM and branding.
33

4-
General Improvements
5-
General app improvements and internal fixes to enhance performance, synchronization, and stability.
4+
File Provider Memory Efficiency
5+
The File Provider is now more stable thanks to improved memory efficiency.
66

ownCloud Action Extension/InfoPlist.xcstrings

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"strings" : {
44
"CFBundleDisplayName" : {
55
"comment" : "Bundle display name",
6-
"extractionState" : "extracted_with_value",
76
"localizations" : {
87
"cs" : {
98
"stringUnit" : {
@@ -75,7 +74,6 @@
7574
},
7675
"CFBundleName" : {
7776
"comment" : "Bundle name",
78-
"extractionState" : "extracted_with_value",
7977
"localizations" : {
8078
"cs" : {
8179
"stringUnit" : {
@@ -147,7 +145,6 @@
147145
},
148146
"NSHumanReadableCopyright" : {
149147
"comment" : "Copyright (human-readable)",
150-
"extractionState" : "extracted_with_value",
151148
"localizations" : {
152149
"cs" : {
153150
"stringUnit" : {

ownCloud Share Extension/InfoPlist.xcstrings

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"strings" : {
44
"CFBundleDisplayName" : {
55
"comment" : "Bundle display name",
6-
"extractionState" : "extracted_with_value",
76
"localizations" : {
87
"ar" : {
98
"stringUnit" : {
@@ -123,7 +122,6 @@
123122
},
124123
"CFBundleName" : {
125124
"comment" : "Bundle name",
126-
"extractionState" : "extracted_with_value",
127125
"localizations" : {
128126
"cs" : {
129127
"stringUnit" : {

ownCloud.xcodeproj/project.pbxproj

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@
149149
DC0030C12350B1CE00BB8570 /* NSData+Encoding.m in Sources */ = {isa = PBXBuildFile; fileRef = DC0030BF2350B1CE00BB8570 /* NSData+Encoding.m */; };
150150
DC0030C22350B1CE00BB8570 /* NSData+Encoding.h in Headers */ = {isa = PBXBuildFile; fileRef = DC0030C02350B1CE00BB8570 /* NSData+Encoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
151151
DC0030CB2350B75000BB8570 /* ScanViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC1AC7CF2319ADAE002B7892 /* ScanViewController.swift */; };
152+
DC0073EC2D4B893100C1C6F7 /* NSURL+OCVaultTools.h in Headers */ = {isa = PBXBuildFile; fileRef = DC0073EB2D4B893100C1C6F7 /* NSURL+OCVaultTools.h */; settings = {ATTRIBUTES = (Public, ); }; };
153+
DC0073ED2D4B893100C1C6F7 /* NSURL+OCVaultTools.m in Sources */ = {isa = PBXBuildFile; fileRef = DC0073EA2D4B893100C1C6F7 /* NSURL+OCVaultTools.m */; };
154+
DC0073F12D4B898100C1C6F7 /* NSURL+OCVaultTools.m in Sources */ = {isa = PBXBuildFile; fileRef = DC0073EA2D4B893100C1C6F7 /* NSURL+OCVaultTools.m */; };
152155
DC0196AB20F7690C00C41B78 /* OCBookmark+FileProvider.m in Sources */ = {isa = PBXBuildFile; fileRef = DC27A1A420CBEF85008ACB6C /* OCBookmark+FileProvider.m */; };
153156
DC01AF2128411D8400903101 /* ThemeableCollectionViewListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC01AF2028411D8400903101 /* ThemeableCollectionViewListCell.swift */; };
154157
DC01CDCC212EDDF600FC8E38 /* TextViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC01CDCB212EDDF600FC8E38 /* TextViewController.swift */; };
@@ -1182,6 +1185,8 @@
11821185
D0D9C062DD1E85A838608B0F /* EarlGrey.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = EarlGrey.framework; path = Pods/EarlGrey/EarlGrey/EarlGrey.framework; sourceTree = SOURCE_ROOT; };
11831186
DC0030BF2350B1CE00BB8570 /* NSData+Encoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Encoding.m"; sourceTree = "<group>"; };
11841187
DC0030C02350B1CE00BB8570 /* NSData+Encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Encoding.h"; sourceTree = "<group>"; };
1188+
DC0073EA2D4B893100C1C6F7 /* NSURL+OCVaultTools.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSURL+OCVaultTools.m"; sourceTree = "<group>"; };
1189+
DC0073EB2D4B893100C1C6F7 /* NSURL+OCVaultTools.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSURL+OCVaultTools.h"; sourceTree = "<group>"; };
11851190
DC018F8B20A1060A00135198 /* ProgressHUDViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProgressHUDViewController.swift; sourceTree = "<group>"; };
11861191
DC01AF2028411D8400903101 /* ThemeableCollectionViewListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeableCollectionViewListCell.swift; sourceTree = "<group>"; };
11871192
DC01CDCB212EDDF600FC8E38 /* TextViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewController.swift; sourceTree = "<group>"; };
@@ -3196,6 +3201,8 @@
31963201
DCCD776A2604C81B00098573 /* NSDate+ComputedTimes.h */,
31973202
DC70398426128B89009F2DC1 /* NSString+ByteCountParser.m */,
31983203
DC70398326128B89009F2DC1 /* NSString+ByteCountParser.h */,
3204+
DC0073EA2D4B893100C1C6F7 /* NSURL+OCVaultTools.m */,
3205+
DC0073EB2D4B893100C1C6F7 /* NSURL+OCVaultTools.h */,
31993206
);
32003207
path = "Foundation Extensions";
32013208
sourceTree = "<group>";
@@ -3766,6 +3773,7 @@
37663773
DC3DDF07287E1C0E00E5586D /* UIViewController+HostBundleID.h in Headers */,
37673774
DCB330D629F07ECF00BFF393 /* UIImage+ViewProvider.h in Headers */,
37683775
DCFEFE39236877A7009A142F /* OCLicenseFeature.h in Headers */,
3776+
DC0073EC2D4B893100C1C6F7 /* NSURL+OCVaultTools.h in Headers */,
37693777
DC23D1DA238F391200423F62 /* OCLicenseAppStoreReceipt.h in Headers */,
37703778
DC24E0EA28B36A81002E4F5B /* OCSearchSegment.h in Headers */,
37713779
DC70398526128B89009F2DC1 /* NSString+ByteCountParser.h in Headers */,
@@ -4940,6 +4948,7 @@
49404948
DC24B29825BA2A34005783E2 /* Branding.m in Sources */,
49414949
DCFEFE3E236877B7009A142F /* OCLicenseProduct.m in Sources */,
49424950
DC774E6422F44E6D000B11A1 /* OCCore+BundleImport.m in Sources */,
4951+
DC0073ED2D4B893100C1C6F7 /* NSURL+OCVaultTools.m in Sources */,
49434952
DC6179E828E0578400C7C4E0 /* OCFileProviderSettings.m in Sources */,
49444953
DC8E99E3297E906700594697 /* OCLicenseQAProvider.m in Sources */,
49454954
DCF2DA7E24C835BF0026D790 /* OCVault+FPServices.m in Sources */,
@@ -5011,6 +5020,7 @@
50115020
DC1251E62C7470820040FBC6 /* Branding.m in Sources */,
50125021
DC2218CC2823329100808BCE /* FileProviderContentEnumerator.m in Sources */,
50135022
DC27A1E920CC56B0008ACB6C /* FileProviderExtensionThumbnailRequest.m in Sources */,
5023+
DC0073F12D4B898100C1C6F7 /* NSURL+OCVaultTools.m in Sources */,
50145024
DCF2DA7A24C82E480026D790 /* FileProviderServiceSource.m in Sources */,
50155025
DC2FB16A2D3EF4FD00726E97 /* ConfidentialManager.m in Sources */,
50165026
DC625141225C904700736874 /* NSError+MessageResolution.m in Sources */,
@@ -5263,8 +5273,8 @@
52635273
APP_BUILD_FLAGS = "$(inherited)";
52645274
APP_BUILD_FLAGS_SWIFT = "$(APP_BUILD_FLAGS)";
52655275
APP_PRODUCT_NAME = ownCloud;
5266-
APP_SHORT_VERSION = 12.3.1;
5267-
APP_VERSION = 292;
5276+
APP_SHORT_VERSION = 12.4.0;
5277+
APP_VERSION = 295;
52685278
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
52695279
CLANG_ANALYZER_NONNULL = YES;
52705280
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@@ -5334,8 +5344,8 @@
53345344
APP_BUILD_FLAGS = "$(inherited)";
53355345
APP_BUILD_FLAGS_SWIFT = "$(APP_BUILD_FLAGS)";
53365346
APP_PRODUCT_NAME = ownCloud;
5337-
APP_SHORT_VERSION = 12.3.1;
5338-
APP_VERSION = 292;
5347+
APP_SHORT_VERSION = 12.4.0;
5348+
APP_VERSION = 295;
53395349
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
53405350
CLANG_ANALYZER_NONNULL = YES;
53415351
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;

ownCloud/App Controllers/AppRootViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ open class AppRootViewController: EmbeddingViewController, BrowserNavigationView
267267
let lastGitCommit = GitInfo.app.lastCommit,
268268
(lastBetaWarningCommit == nil) || (lastBetaWarningCommit != lastGitCommit) {
269269
// Beta warning has never been shown before - or has last been shown for a different release
270-
let betaAlert = ThemedAlertController(with: OCLocalizedString("Beta Warning", nil), message: OCLocalizedString("\nThis is a BETA release that may - and likely will - still contain bugs.\n\nYOU SHOULD NOT USE THIS BETA VERSION WITH PRODUCTION SYSTEMS, PRODUCTION DATA OR DATA OF VALUE. YOU'RE USING THIS BETA AT YOUR OWN RISK.\n\nPlease let us know about any issues that come up via the \"Send Feedback\" option in the settings.", nil), okLabel: OCLocalizedString("Agree", nil)) {
270+
let betaAlert = ThemedAlertController(with: OCLocalizedString("Beta Warning", nil), message: OCLocalizedString("\nThis is a BETA release that may - and likely will - still contain bugs.\n\nYOU SHOULD NOT USE THIS BETA VERSION WITH PRODUCTION SYSTEMS, PRODUCTION DATA OR DATA OF VALUE. YOU'RE USING THIS BETA AT YOUR OWN RISK.", nil), okLabel: OCLocalizedString("Agree", nil)) {
271271
OCAppIdentity.shared.userDefaults?.set(lastGitCommit, forKey: "LastBetaWarningCommit")
272272
OCAppIdentity.shared.userDefaults?.set(NSDate(), forKey: "LastBetaWarningAcceptDate")
273273
}

ownCloud/Client/Actions/Actions+Extensions/ImportPasteboardAction.swift

Lines changed: 62 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
//
88

99
/*
10-
* Copyright (C) 2019, ownCloud GmbH.
11-
*
12-
* This code is covered by the GNU Public License Version 3.
13-
*
14-
* For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/
15-
* You should have received a copy of this license along with this program. If not, see <http://www.gnu.org/licenses/gpl-3.0.en.html>.
16-
*
17-
*/
10+
* Copyright (C) 2019, ownCloud GmbH.
11+
*
12+
* This code is covered by the GNU Public License Version 3.
13+
*
14+
* For distribution utilizing Apple mechanisms please see https://owncloud.org/contribute/iOS-license-exception/
15+
* You should have received a copy of this license along with this program. If not, see <http://www.gnu.org/licenses/gpl-3.0.en.html>.
16+
*
17+
*/
1818

1919
import Foundation
2020
import ownCloudSDK
@@ -81,19 +81,20 @@ class ImportPasteboardAction : Action {
8181
let generalPasteboard = UIPasteboard.general
8282

8383
if generalPasteboard.contains(pasteboardTypes: [ImportPasteboardAction.InternalPasteboardCopyKey, ImportPasteboardAction.InternalPasteboardCutKey]) {
84-
84+
// Internal pasteboard items
8585
for item in generalPasteboard.itemProviders {
8686
// Copy Items Internally
8787
item.loadDataRepresentation(forTypeIdentifier: ImportPasteboardAction.InternalPasteboardCopyKey, completionHandler: { data, error in
88-
if let data = data, let object = OCItemPasteboardValue.decode(data: data) {
88+
if let data, let object = OCItemPasteboardValue.decode(data: data) {
8989
guard let bookmarkUUID = object.bookmarkUUID,
9090
let item = object.item,
9191
let name = item.name
9292
else {
93-
return
93+
return
9494
}
9595

9696
if core.bookmark.uuid.uuidString == bookmarkUUID {
97+
// Copy within account
9798
core.copy(item, to: rootItem, withName: name, options: nil, resultHandler: { (error, _, _, _) in
9899
if error != nil {
99100
self.completed(with: error)
@@ -103,31 +104,40 @@ class ImportPasteboardAction : Action {
103104
// Move between Accounts
104105
guard let sourceBookmark = OCBookmarkManager.shared.bookmark(forUUIDString: bookmarkUUID), let destinationItem = self.context.items.first else {return }
105106

106-
OCCoreManager.shared.requestCore(for: sourceBookmark, setup: nil) { (srcCore, error) in
107-
if error == nil {
108-
srcCore?.downloadItem(item, options: nil, resultHandler: { (error, _, srcItem, _) in
109-
if error == nil, let srcItem = srcItem, let localURL = srcCore?.localCopy(of: srcItem) {
110-
core.importItemNamed(srcItem.name, at: destinationItem, from: localURL, isSecurityScoped: false, options: nil, placeholderCompletionHandler: nil) { (_, _, _, _) in
111-
}
112-
}
113-
})
114-
}
107+
// Request core from source account
108+
OCCoreManager.shared.requestCore(for: sourceBookmark, setup: nil) { (srcCore, error) in
109+
if error == nil {
110+
// Download file from source account
111+
srcCore?.downloadItem(item, options: nil, resultHandler: { (error, _, srcItem, _) in
112+
if error == nil, let srcItem, let localURL = srcCore?.localCopy(of: srcItem) {
113+
// Import local copy of file from source account
114+
core.importItemNamed(srcItem.name, at: destinationItem, from: localURL, isSecurityScoped: false, options: nil, placeholderCompletionHandler: nil, resultHandler: { err, core, item, parameter in
115+
// Release core of source account
116+
OCCoreManager.shared.returnCore(for: sourceBookmark)
117+
})
118+
} else {
119+
// Release core of source account
120+
OCCoreManager.shared.returnCore(for: sourceBookmark)
121+
}
122+
})
115123
}
124+
}
116125
}
117126
}
118127
})
119128

120129
// Cut Item Internally
121130
item.loadDataRepresentation(forTypeIdentifier: ImportPasteboardAction.InternalPasteboardCutKey, completionHandler: { data, error in
122-
if let data = data, let object = OCItemPasteboardValue.decode(data: data) {
131+
if let data, let object = OCItemPasteboardValue.decode(data: data) {
123132
guard let bookmarkUUID = object.bookmarkUUID,
124133
let item = object.item,
125134
let name = item.name
126135
else {
127-
return
136+
return
128137
}
129138

130139
if core.bookmark.uuid.uuidString == bookmarkUUID {
140+
// Move within same account
131141
core.move(item, to: rootItem, withName: name, options: nil) { (error, _, _, _) in
132142
if error != nil {
133143
self.completed(with: error)
@@ -139,32 +149,44 @@ class ImportPasteboardAction : Action {
139149
// Move between Accounts
140150
guard let sourceBookmark = OCBookmarkManager.shared.bookmark(forUUIDString: bookmarkUUID), let destinationItem = self.context.items.first else {return }
141151

142-
OCCoreManager.shared.requestCore(for: sourceBookmark, setup: nil) { (srcCore, error) in
143-
if error == nil {
144-
srcCore?.downloadItem(item, options: nil, resultHandler: { (error, _, srcItem, _) in
145-
if error == nil, let srcItem = srcItem, let localURL = srcCore?.localCopy(of: srcItem) {
146-
core.importItemNamed(srcItem.name, at: destinationItem, from: localURL, isSecurityScoped: false, options: nil, placeholderCompletionHandler: nil) { (_, _, _, _) in
147-
152+
// Request a core from the source account
153+
OCCoreManager.shared.requestCore(for: sourceBookmark, setup: nil) { (srcCore, error) in
154+
if error == nil {
155+
// Download item from source account
156+
srcCore?.downloadItem(item, options: nil, resultHandler: { (error, _, srcItem, _) in
157+
if error == nil, let srcItem, let localURL = srcCore?.localCopy(of: srcItem) {
158+
// Import file into destination account
159+
core.importItemNamed(srcItem.name, at: destinationItem, from: localURL, isSecurityScoped: false, options: nil, placeholderCompletionHandler: nil) { err, core, importedItem, parameter in
160+
if err == nil {
161+
// Delete file from source account
148162
srcCore?.delete(srcItem, requireMatch: true, resultHandler: { (error, _, _, _) in
149-
if error != nil {
150-
Log.log("Error \(String(describing: error)) deleting \(String(describing: item.path))")
151-
} else {
152-
153-
generalPasteboard.items = []
154-
}
155-
})
163+
if error != nil {
164+
Log.log("Error \(String(describing: error)) deleting \(String(describing: srcItem.path))")
165+
} else {
166+
generalPasteboard.items = []
167+
}
168+
169+
// Return source account core
170+
OCCoreManager.shared.returnCore(for: sourceBookmark)
171+
})
172+
} else {
173+
// Return source account core
174+
OCCoreManager.shared.returnCore(for: sourceBookmark)
156175
}
157176
}
158-
})
159-
}
177+
} else {
178+
// Return source account core
179+
OCCoreManager.shared.returnCore(for: sourceBookmark)
180+
}
181+
})
160182
}
183+
}
161184
}
162185
}
163186
})
164187
}
165188
} else {
166189
// System-wide Pasteboard Items
167-
168190
for item in generalPasteboard.itemProviders {
169191
let typeIdentifiers = item.registeredTypeIdentifiers
170192
let preferredUTIs = [
@@ -231,9 +253,9 @@ class ImportPasteboardAction : Action {
231253
fileName = url.lastPathComponent
232254
}
233255

234-
guard let name = fileName else { return }
256+
guard let fileName else { return }
235257

236-
self.upload(itemURL: url, rootItem: rootItem, name: name)
258+
self.upload(itemURL: url, rootItem: rootItem, name: fileName)
237259
}
238260
}
239261
}

0 commit comments

Comments
 (0)