import SwiftUI

@Observable class ApplicationData {
   var textInFile: String = "" {
      didSet {
         if let docURL = directories?.first {
            let fileURL = docURL.appendingPathComponent("textdata.dat")
            let filePath = fileURL.path
            if let textData = textInFile.data(using: .utf8, allowLossyConversion: true) {
              manager.createFile(atPath: filePath, contents: textData, attributes: nil)
            }
         }
      }
   }
   @ObservationIgnored var manager: FileManager
   @ObservationIgnored var directories: [URL]?

   static let shared: ApplicationData = ApplicationData()
   private init() {
      manager = FileManager.default
      directories = manager.urls(for: .documentDirectory, in: .userDomainMask)

      if let docURL = directories?.first {
         let fileURL = docURL.appendingPathComponent("textdata.dat")
         let filePath = fileURL.path
         if manager.fileExists(atPath: filePath) {
            if let content = manager.contents(atPath: filePath) {
               if let text = String(data: content, encoding: .utf8) {
                  textInFile = text
               }
            }
         }
      }
   }
}