@@ -15,20 +15,16 @@ public class DirectoryWatcher: NSObject {
15
15
var watchedUrl : URL
16
16
17
17
private var source : DispatchSourceFileSystemObject ?
18
- private var previousContents : Set < URL >
19
18
private var queue : DispatchQueue ?
20
19
private var retriesLeft : Int !
21
20
private var directoryChanging = false
22
21
23
22
public var ignoreDirectories = true
24
- public var onNewFiles : ( ( [ URL ] ) -> Void ) ?
25
- public var onDeletedFiles : ( ( [ URL ] ) -> Void ) ?
23
+ public var onFilesChanged : ( ( ) -> Void ) ?
26
24
27
25
//init
28
26
init ( watchedUrl: URL ) {
29
27
self . watchedUrl = watchedUrl
30
- let contentsArray = ( try ? FileManager . default. contentsOfDirectory ( at: watchedUrl, includingPropertiesForKeys: [ . isDirectoryKey] , options: . skipsHiddenFiles) ) ?? [ ]
31
- self . previousContents = Set ( contentsArray)
32
28
}
33
29
34
30
public class func watch( _ url: URL ) -> DirectoryWatcher ? {
@@ -79,8 +75,7 @@ public class DirectoryWatcher: NSObject {
79
75
80
76
deinit {
81
77
let _ = self . stopWatching ( )
82
- self . onNewFiles = nil
83
- self . onDeletedFiles = nil
78
+ self . onFilesChanged = nil
84
79
}
85
80
}
86
81
@@ -141,37 +136,7 @@ extension DirectoryWatcher {
141
136
// Changes appear to be completed
142
137
// Post a notification informing that the directory did change
143
138
DispatchQueue . main. async {
144
- let contentsArray = ( try ? FileManager . default. contentsOfDirectory ( at: self . watchedUrl, includingPropertiesForKeys: [ . isDirectoryKey] , options: . skipsHiddenFiles) ) ?? [ ]
145
- let newContents = Set ( contentsArray)
146
-
147
- let newElements = newContents. subtracting ( self . previousContents)
148
- let deletedElements = self . previousContents. subtracting ( newContents)
149
-
150
- self . previousContents = newContents
151
-
152
- if !deletedElements. isEmpty {
153
- let elements = deletedElements. compactMap ( { ( element) -> URL ? in
154
- let isDirectory = ( try ? element. resourceValues ( forKeys: [ . isDirectoryKey] ) ) ? . isDirectory ?? false
155
-
156
- guard ( !isDirectory || !self . ignoreDirectories) else {
157
- return nil
158
- }
159
- return element
160
- } )
161
- self . onDeletedFiles ? ( elements)
162
- }
163
-
164
- if !newElements. isEmpty {
165
- let elements = newElements. compactMap ( { ( element) -> URL ? in
166
- let isDirectory = ( try ? element. resourceValues ( forKeys: [ . isDirectoryKey] ) ) ? . isDirectory ?? false
167
-
168
- guard ( !isDirectory || !self . ignoreDirectories) else {
169
- return nil
170
- }
171
- return element
172
- } )
173
- self . onNewFiles ? ( elements)
174
- }
139
+ self . onFilesChanged ? ( )
175
140
}
176
141
}
177
142
}
0 commit comments