blob: 2da7378fa394295f959255e7518cbbc9262c67e8 (
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
import SwiftUI
import UniformTypeIdentifiers
@Observable class FileInfo: Identifiable, Hashable {
let id: UUID
let path: [String]
let name: String
let type: String
let creator: String
let fileSize: UInt
let isFolder: Bool
let isUnavailable: Bool
var isDropboxFolder: Bool {
guard self.isFolder,
(self.name.range(of: "upload", options: [.caseInsensitive]) != nil) || (self.name.range(of: "drop box", options: [.caseInsensitive]) != nil)
else {
return false
}
return true
}
var isAdminDropboxFolder: Bool {
self.isDropboxFolder && (self.name.range(of: "admin", options: [.caseInsensitive]) != nil)
}
var expanded: Bool = false
var children: [FileInfo]? = nil
var isPreviewable: Bool {
let fileExtension = (self.name as NSString).pathExtension
if let fileType = UTType(filenameExtension: fileExtension) {
if fileType.isSubtype(of: .image) {
return true
}
else if fileType.isSubtype(of: .text) {
return true
}
}
return false
}
var isImage: Bool {
let fileExtension = (self.name as NSString).pathExtension
if let fileType = UTType(filenameExtension: fileExtension) {
if fileType.isSubtype(of: .image) {
return true
}
}
return false
}
init(hotlineFile: HotlineFile) {
self.id = UUID()
self.path = hotlineFile.path
self.name = hotlineFile.name
self.type = hotlineFile.type
self.creator = hotlineFile.creator
self.fileSize = UInt(hotlineFile.fileSize)
self.isFolder = hotlineFile.isFolder
self.isUnavailable = (!self.isFolder && (self.fileSize == 0))
print(self.name, self.type, self.creator, self.isUnavailable)
if self.isFolder {
self.children = []
}
}
static func == (lhs: FileInfo, rhs: FileInfo) -> Bool {
return lhs.id == rhs.id
}
func hash(into hasher: inout Hasher) {
hasher.combine(self.id)
}
}
|