-
Notifications
You must be signed in to change notification settings - Fork 27
/
SuggestedSites.swift
48 lines (40 loc) · 1.57 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.defaultInstance()
public class SuggestedSite: Site {
public let wordmark: Favicon
public let backgroundColor: UIColor
override public var tileURL: NSURL {
return NSURL(string: url) ?? NSURL(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: NSDate(), type: .Icon)
super.init(url: data.url, title: data.title)
self.icon = Favicon(url: data.faviconUrl, date: NSDate(), type: .Icon)
}
}
public let SuggestedSites: SuggestedSitesCursor = SuggestedSitesCursor()
public class SuggestedSitesCursor: ArrayCursor<SuggestedSite> {
private init() {
let locale = NSLocale.currentLocale()
let sites = DefaultSuggestedSites.sites[locale.localeIdentifier] ??
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
}