OSDN Git Service

コメントを追加
[kcd/KCD.git] / KCD / ScreenshotLoader.swift
1 //
2 //  ScreenshotLoader.swift
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2017/11/05.
6 //  Copyright © 2017年 Hori,Masaki. All rights reserved.
7 //
8
9 import Cocoa
10
11 final class ScreenshotLoader {
12     
13     let url: URL
14     
15     init(_ url: URL) {
16         
17         self.url = url
18     }
19     
20     func merge(screenshots: [ScreenshotInformation]) -> [ScreenshotInformation] {
21         
22         let urls = screenshotURLs()
23         
24         // なくなっているものを削除
25         let itemWithoutDeleting = screenshots.filter { urls.contains($0.url) }
26         
27         // 新しいものを追加
28         let newItems = urls
29             .filter { url in !itemWithoutDeleting.contains(where: { url == $0.url }) }
30             .map { ScreenshotInformation(url: $0) }
31         
32         return itemWithoutDeleting + newItems
33     }
34     
35     private func screenshotURLs() -> [URL] {
36         
37         guard let files = try? FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys: nil) else {
38             
39             return Logger.shared.log("can not read list of screenshot directory", value: [])
40         }
41         
42         return files.filter(isPicture)
43     }
44     
45     private func isPicture(_ url: URL) -> Bool {
46         
47         guard let type = try? NSWorkspace.shared.type(ofFile: url.path) else { return false }
48         
49         return NSImage.imageTypes.contains(type)
50     }
51 }