aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/DataAdditions.swift
blob: 1eb7f6f58f0a31716949ea1e4c72cc32b03a178a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
  }
}