/
SuggestedSites.swift
48 lines (40 loc) · 1.55 KB
/
SuggestedSites.swift
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
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
import XCGLogger
import UIKit
import Shared
private let log = XCGLogger.default
open class SuggestedSite: Site {
open let wordmark: Favicon
open let backgroundColor: UIColor
override open var tileURL: URL {
return URL(string: url) ?? URL(string: "about:blank")!
}
let trackingId: Int
init(data: SuggestedSiteData) {
self.backgroundColor = UIColor(colorString: data.bgColor)
self.trackingId = data.trackingId
self.wordmark = Favicon(url: data.imageUrl, date: Date(), type: .icon)
super.init(url: data.url, title: data.title, bookmarked: nil)
self.icon = Favicon(url: data.faviconUrl, date: Date(), type: .icon)
}
}
public let SuggestedSites: SuggestedSitesCursor = SuggestedSitesCursor()
open class SuggestedSitesCursor: ArrayCursor<SuggestedSite> {
fileprivate init() {
let locale = Locale.current
let sites = DefaultSuggestedSites.sites[locale.identifier] ??
DefaultSuggestedSites.sites["default"]! as Array<SuggestedSiteData>
let tiles = sites.map({data in SuggestedSite(data: data)})
super.init(data: tiles, status: .Success, statusMessage: "Loaded")
}
}
public struct SuggestedSiteData {
var url: String
var bgColor: String
var imageUrl: String
var faviconUrl: String
var trackingId: Int
var title: String
}