FileContainer.swift 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. //
  2. // FileContainer.swift
  3. // App
  4. //
  5. //
  6. import Capacitor
  7. import Foundation
  8. import MobileCoreServices
  9. @objc(FileContainer)
  10. public class FileContainer: CAPPlugin, UIDocumentPickerDelegate {
  11. var iCloudContainerUrl: URL? {
  12. return FileManager.default.url(forUbiquityContainerIdentifier: nil)?.appendingPathComponent("Documents")
  13. }
  14. var localContainerUrl: URL? {
  15. return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first
  16. }
  17. @objc func ensureDocuments(_ call: CAPPluginCall) {
  18. var data: [String: String] = [:]
  19. if self.iCloudContainerUrl != nil {
  20. validateDocuments(at: self.iCloudContainerUrl!)
  21. data["iCloudContainerUrl"] = self.iCloudContainerUrl?.absoluteString
  22. }
  23. if self.localContainerUrl != nil {
  24. validateDocuments(at: self.localContainerUrl!)
  25. data["localContainerUrl"] = self.localContainerUrl?.absoluteString
  26. }
  27. call.resolve(data)
  28. }
  29. func validateDocuments(at url: URL) {
  30. if !FileManager.default.fileExists(atPath: url.path, isDirectory: nil) {
  31. do {
  32. print("the url = " + url.path)
  33. try FileManager.default.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil)
  34. } catch {
  35. print("container doesn't exist")
  36. print(error.localizedDescription)
  37. }
  38. }
  39. let str = ""
  40. let filename = url.appendingPathComponent(".logseq", isDirectory: false)
  41. if !FileManager.default.fileExists(atPath: filename.path) {
  42. do {
  43. try str.write(to: filename, atomically: true, encoding: String.Encoding.utf8)
  44. } catch {
  45. print("write .logseq failed")
  46. print(error.localizedDescription)
  47. }
  48. }
  49. }
  50. }