Try to fix compile error

This commit is contained in:
2024-02-06 13:32:07 +08:00
parent c9891c1034
commit e8d800f93f

View File

@@ -6,15 +6,7 @@ import System
var urlMaps: [CInt: URL] = [:] var urlMaps: [CInt: URL] = [:]
func openFile(result: FlutterResult, url: URL, readOnly: Bool, writeOnly: Bool, append: Bool, isSecure: Bool) { func openFile(result: FlutterResult, url: URL, readOnly: Bool, writeOnly: Bool, append: Bool, isSecure: Bool) {
let mode = if readOnly && writeOnly { let mode = readOnly && writeOnly ? FileDescriptor.AccessMode.readWrite : readOnly ? FileDescriptor.AccessMode.readOnly : writeOnly ? FileDescriptor.AccessMode.writeOnly : FileDescriptor.AccessMode.readWrite;
FileDescriptor.AccessMode.readWrite
} else if readOnly {
FileDescriptor.AccessMode.readOnly
} else if writeOnly {
FileDescriptor.AccessMode.writeOnly
} else {
FileDescriptor.AccessMode.readWrite
}
var opts = FileDescriptor.OpenOptions.init() var opts = FileDescriptor.OpenOptions.init()
if writeOnly { if writeOnly {
opts.insert(FileDescriptor.OpenOptions.create) opts.insert(FileDescriptor.OpenOptions.create)
@@ -25,7 +17,6 @@ func openFile(result: FlutterResult, url: URL, readOnly: Bool, writeOnly: Bool,
if append { if append {
opts.insert(FileDescriptor.OpenOptions.append) opts.insert(FileDescriptor.OpenOptions.append)
} }
let permissions = FilePermissions(rawValue: 0o644);
let uPath = if #available(iOS 16.0, *) { let uPath = if #available(iOS 16.0, *) {
url.path(percentEncoded: false) url.path(percentEncoded: false)
} else { } else {
@@ -33,7 +24,7 @@ func openFile(result: FlutterResult, url: URL, readOnly: Bool, writeOnly: Bool,
} }
let path = FilePath(stringLiteral: uPath); let path = FilePath(stringLiteral: uPath);
do { do {
let fd = try FileDescriptor.open(path, mode, options: opts, permissions: permissions) let fd = try FileDescriptor.open(path, mode, options: opts, permissions: FilePermissions(rawValue: 0o644))
result(NSNumber(value: fd.rawValue)) result(NSNumber(value: fd.rawValue))
if isSecure { if isSecure {
urlMaps[fd.rawValue] = url urlMaps[fd.rawValue] = url
@@ -140,36 +131,36 @@ class FilePickerDelegate: NSObject, UIDocumentPickerDelegate {
let writeOnly = args[4] as? NSNumber, let writeOnly = args[4] as? NSNumber,
let append = args[5] as? NSNumber, let append = args[5] as? NSNumber,
let saveAs = args[6] as? NSNumber { let saveAs = args[6] as? NSNumber {
let ext = extFromMimetype(mimeType: mimeType) let ext = extFromMimetype(mimeType: mimeType)
if saveAs.boolValue { if saveAs.boolValue {
let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last let path = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.cachesDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).last
if path == nil { if path == nil {
result(FlutterError(code: "FAILED_TO_GET_CACHE_DIRERCTORY", message: nil, details: nil)) result(FlutterError(code: "FAILED_TO_GET_CACHE_DIRERCTORY", message: nil, details: nil))
return return
}
let dUrl = if #available(iOS 16.0, *) {
URL.init(filePath: path!)
} else {
URL.init(fileURLWithPath: path!)
}
let url = dUrl.appendingPathComponent(fileName + (ext ?? ""))
let uPath = if #available(iOS 16.0, *) {
url.path(percentEncoded: false)
} else {
url.path
}
if !FileManager.default.createFile(atPath: uPath, contents: Data.init()) {
result(FlutterError(code: "FAILED_TO_CREATE_FILE", message: nil, details: nil))
return
}
self.filePickerDelegate = FilePickerDelegate(readOnly: readOnly.boolValue, writeOnly: writeOnly.boolValue, append: append.boolValue, url: url, result: result)
self.filePickerDelegate!.pickFile()
} else {
result(FlutterMethodNotImplemented)
} }
} else { let dUrl = if #available(iOS 16.0, *) {
result(FlutterError(code: "INVALID_ARGUMENTS", message: nil, details: nil)) URL.init(filePath: path!)
} } else {
URL.init(fileURLWithPath: path!)
}
let url = dUrl.appendingPathComponent(fileName + (ext ?? ""))
let uPath = if #available(iOS 16.0, *) {
url.path(percentEncoded: false)
} else {
url.path
}
if !FileManager.default.createFile(atPath: uPath, contents: Data.init()) {
result(FlutterError(code: "FAILED_TO_CREATE_FILE", message: nil, details: nil))
return
}
self.filePickerDelegate = FilePickerDelegate(readOnly: readOnly.boolValue, writeOnly: writeOnly.boolValue, append: append.boolValue, url: url, result: result)
self.filePickerDelegate!.pickFile()
} else {
result(FlutterMethodNotImplemented)
}
} else {
result(FlutterError(code: "INVALID_ARGUMENTS", message: nil, details: nil))
}
case "writeFile": case "writeFile":
if let args = call.arguments as? Array<Any>, if let args = call.arguments as? Array<Any>,
let fd = args[0] as? NSNumber, let fd = args[0] as? NSNumber,