aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Library/DataAdditions.swift
blob: 0e9dd964bb5f66c9a28cc4e60c11de98dff00405 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import Foundation

extension Data {
  func saveAsFileToDownloads(filename: String, bounceDock: Bool = true) -> Bool {
    let folderURL = FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask)[0]
    let filePath = folderURL.generateUniqueFilePath(filename: filename)
    if FileManager.default.createFile(atPath: filePath, contents: nil) {
      if let h = FileHandle(forWritingAtPath: filePath) {
        try? h.write(contentsOf: self)
        try? h.close()
        if bounceDock {
          #if os(macOS)
          var downloadURL = URL(filePath: filePath)
          downloadURL.resolveSymlinksInPath()
          DistributedNotificationCenter.default().post(name: .init("com.apple.DownloadFileFinished"), object: downloadURL.path)
          #endif
        }
        return true
      }
    }
    return false
  }
}