mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 16:10:20 +00:00
migrate the share extension to swift 6
This commit is contained in:
@@ -9718,6 +9718,8 @@
|
|||||||
PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)";
|
PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)";
|
||||||
PRODUCT_NAME = ShareExtension;
|
PRODUCT_NAME = ShareExtension;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
||||||
|
SWIFT_VERSION = 6.2;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
@@ -10005,6 +10007,8 @@
|
|||||||
PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)";
|
PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)";
|
||||||
PRODUCT_NAME = ShareExtension;
|
PRODUCT_NAME = ShareExtension;
|
||||||
SDKROOT = iphoneos;
|
SDKROOT = iphoneos;
|
||||||
|
SWIFT_APPROACHABLE_CONCURRENCY = YES;
|
||||||
|
SWIFT_VERSION = 6.2;
|
||||||
TARGETED_DEVICE_FAMILY = "1,2";
|
TARGETED_DEVICE_FAMILY = "1,2";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
|
|||||||
@@ -51,11 +51,6 @@ extension NSItemProvider {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let pngData = uiImage.pngData() else {
|
|
||||||
MXLog.error("Failed extracting PNG data out of the UIImage")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
let filename = if let suggestedName = suggestedName as NSString?,
|
let filename = if let suggestedName = suggestedName as NSString?,
|
||||||
// Suggestions are nice but their extension is `jpeg`
|
// Suggestions are nice but their extension is `jpeg`
|
||||||
let filename = (suggestedName.deletingPathExtension as NSString).appendingPathExtension(contentType.fileExtension) {
|
let filename = (suggestedName.deletingPathExtension as NSString).appendingPathExtension(contentType.fileExtension) {
|
||||||
@@ -64,14 +59,10 @@ extension NSItemProvider {
|
|||||||
"\(UUID().uuidString).\(contentType.fileExtension)"
|
"\(UUID().uuidString).\(contentType.fileExtension)"
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
return await Self.writePNGData(of: uiImage,
|
||||||
return try FileManager.default.writeDataToTemporaryDirectory(data: pngData,
|
filename: filename,
|
||||||
fileName: filename,
|
withinAppGroupContainer: withinAppGroupContainer,
|
||||||
withinAppGroupContainer: withinAppGroupContainer)
|
providerDescription: description)
|
||||||
} catch {
|
|
||||||
MXLog.error("Failed storing NSItemProvider data \(self) with error: \(error)")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func generateURLForGenericData(_ contentType: PreferredContentType, withinAppGroupContainer: Bool) async -> URL? {
|
private func generateURLForGenericData(_ contentType: PreferredContentType, withinAppGroupContainer: Bool) async -> URL? {
|
||||||
@@ -108,12 +99,39 @@ extension NSItemProvider {
|
|||||||
"\(UUID().uuidString).\(contentType.fileExtension)"
|
"\(UUID().uuidString).\(contentType.fileExtension)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return await Self.writeData(shareData,
|
||||||
|
filename: filename,
|
||||||
|
withinAppGroupContainer: withinAppGroupContainer,
|
||||||
|
providerDescription: providerDescription)
|
||||||
|
}
|
||||||
|
|
||||||
|
// The next 2 methods are static as NSItemProvider isn't Sendable.
|
||||||
|
|
||||||
|
@concurrent private static func writePNGData(of image: UIImage,
|
||||||
|
filename: String,
|
||||||
|
withinAppGroupContainer: Bool,
|
||||||
|
providerDescription: String) async -> URL? {
|
||||||
|
guard let pngData = image.pngData() else {
|
||||||
|
MXLog.error("Failed extracting PNG data out of the UIImage")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return await writeData(pngData,
|
||||||
|
filename: filename,
|
||||||
|
withinAppGroupContainer: withinAppGroupContainer,
|
||||||
|
providerDescription: providerDescription)
|
||||||
|
}
|
||||||
|
|
||||||
|
@concurrent private static func writeData(_ data: Data,
|
||||||
|
filename: String,
|
||||||
|
withinAppGroupContainer: Bool,
|
||||||
|
providerDescription: String) async -> URL? {
|
||||||
do {
|
do {
|
||||||
return try FileManager.default.writeDataToTemporaryDirectory(data: shareData,
|
return try FileManager.default.writeDataToTemporaryDirectory(data: data,
|
||||||
fileName: filename,
|
fileName: filename,
|
||||||
withinAppGroupContainer: withinAppGroupContainer)
|
withinAppGroupContainer: withinAppGroupContainer)
|
||||||
} catch {
|
} catch {
|
||||||
MXLog.error("Failed storing NSItemProvider data \(self) with error: \(error)")
|
MXLog.error("Failed storing NSItemProvider data \(providerDescription) with error: \(error)")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,8 @@ targets:
|
|||||||
MARKETING_VERSION: $(MARKETING_VERSION)
|
MARKETING_VERSION: $(MARKETING_VERSION)
|
||||||
CURRENT_PROJECT_VERSION: $(CURRENT_PROJECT_VERSION)
|
CURRENT_PROJECT_VERSION: $(CURRENT_PROJECT_VERSION)
|
||||||
DEVELOPMENT_TEAM: $(DEVELOPMENT_TEAM)
|
DEVELOPMENT_TEAM: $(DEVELOPMENT_TEAM)
|
||||||
|
SWIFT_VERSION: 6.2
|
||||||
|
SWIFT_APPROACHABLE_CONCURRENCY: YES
|
||||||
|
|
||||||
sources:
|
sources:
|
||||||
- path: ../Sources
|
- path: ../Sources
|
||||||
|
|||||||
Reference in New Issue
Block a user