37 lines
1.4 KiB
Swift
37 lines
1.4 KiB
Swift
|
//
|
||
|
// WidgetDataDecoder.swift
|
||
|
// NetNewsWire
|
||
|
//
|
||
|
// Created by Stuart Breckenridge on 18/11/20.
|
||
|
// Copyright © 2020 Ranchero Software. All rights reserved.
|
||
|
//
|
||
|
|
||
|
import Foundation
|
||
|
|
||
|
struct WidgetDataDecoder {
|
||
|
|
||
|
static func decodeWidgetData() throws -> WidgetData {
|
||
|
let appGroup = Bundle.main.object(forInfoDictionaryKey: "AppGroup") as! String
|
||
|
let containerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: appGroup)
|
||
|
let dataURL = containerURL?.appendingPathComponent("widget-data.json")
|
||
|
if FileManager.default.fileExists(atPath: dataURL!.path) {
|
||
|
let decodedWidgetData = try JSONDecoder().decode(WidgetData.self, from: Data(contentsOf: dataURL!))
|
||
|
return decodedWidgetData
|
||
|
} else {
|
||
|
return WidgetData(currentUnreadCount: 0, currentTodayCount: 0, currentStarredCount: 0, unreadArticles: [], starredArticles: [], todayArticles: [], lastUpdateTime: Date())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
static func sampleData() -> WidgetData {
|
||
|
let pathToSample = Bundle.main.url(forResource: "widget-sample", withExtension: "json")
|
||
|
do {
|
||
|
let data = try Data(contentsOf: pathToSample!)
|
||
|
let decoded = try JSONDecoder().decode(WidgetData.self, from: data)
|
||
|
return decoded
|
||
|
} catch {
|
||
|
return WidgetData(currentUnreadCount: 0, currentTodayCount: 0, currentStarredCount: 0, unreadArticles: [], starredArticles: [], todayArticles: [], lastUpdateTime: Date())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|