Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

Ghostery Bug Migration

  • Loading branch information
Tim Palade authored and naira-cliqz committed May 23, 2018
1 parent 759d615 commit 09eeea86401dd9dcdc3e08432ab2a0a22e7721ff

Large diffs are not rendered by default.

@@ -6,6 +6,8 @@
// Copyright © 2018 Cliqz. All rights reserved.
//
import Storage

final class BlockListIdentifiers {

class func antitrackingBlockSelectedIdentifiers(domain: String?) -> [String] {
@@ -7,6 +7,7 @@
//
import WebKit
import Storage

enum BlockListType {
case antitracking
@@ -7,6 +7,7 @@
//
import UIKit
import Storage

enum TableType {
case page
@@ -7,6 +7,7 @@
//
import UIKit
import Storage

protocol ControlCenterDelegateProtocol: class {
func chageSiteState(to: DomainState)
@@ -7,6 +7,8 @@
//
import Foundation
import Storage

fileprivate func < <T : Comparable>(lhs: T?, rhs: T?) -> Bool {
switch (lhs, rhs) {
case let (l?, r?):
@@ -7,6 +7,7 @@
//
import Foundation
import Storage

@objc class TrackerListApp : NSObject {
var appId: Int
@@ -50,6 +50,7 @@ public class GhosteryMigrationManager {

DispatchQueue.global().async { [weak self] in
self?.migrateOpenTabs()
self?.migrateBugs()
self?.migrateFoldersAndBookmarks()
}
}
@@ -60,6 +61,7 @@ public class GhosteryMigrationManager {
let bookmarks = self.fetchBookmarks()
if bookmarks.value.isSuccess {
self.performBookmarkMigration()
//TODO: Ask why cleanup is over here...it should happen after migration is done.
self.cleanup()
}
}
@@ -76,6 +78,15 @@ public class GhosteryMigrationManager {
}
}

private func migrateBugs() {
let sql = "SELECT * from \(TableGhosteryBugs)"
ghosteryDB!.runQuery(sql, args: [], factory: GhosterySQLiteFactories.bugFactory) >>== { appIds in
for appId in appIds.asArray() {
TrackerStateStore.createTrackerState(appId: appId, state: .blocked)
}
}
}

private func fetchBookmarkFolders() -> Deferred<Maybe<Cursor<BookmarkMirrorItem>>> {
let sql = "SELECT * from \(TableGhosteryBookmarkFolders)"
return ghosteryDB!.runQuery(sql, args: [], factory: GhosterySQLiteFactories.bookmarkFolderFactory) >>== { [weak self] bookmarkFolders in
@@ -12,6 +12,7 @@ import Shared
let TableGhosteryBookmarkFolders = "zfolder"
let TableGhosteryBookmarks = "zbookmark"
let TableGhosteryTabs = "ztab"
let TableGhosteryBugs = "zbug"

class GhosterySQLiteFactories {

@@ -46,4 +47,10 @@ class GhosterySQLiteFactories {
let tab = GhosteryTab(id, order: order, url: url)
return tab
}

class func bugFactory(_ row: SDRow) -> Int {
//let id = row["Z_PK"] as! Int
let appID = row["ZAID"] as! Int
return appID
}
}
@@ -9,17 +9,17 @@
import Foundation
import RealmSwift

class Domain: Object {
public class Domain: Object {
@objc dynamic var name: String = ""
@objc dynamic var state: Int = 0 //0 none, 1 trusted, 2 restricted
var trustedTrackers = List<Int>()
var restrictedTrackers = List<Int>()
public var trustedTrackers = List<Int>()
public var restrictedTrackers = List<Int>()

override static func primaryKey() -> String? {
override static public func primaryKey() -> String? {
return "name"
}

var translatedState: DomainState {
public var translatedState: DomainState {
switch state {
case 0:
return .empty
@@ -33,28 +33,28 @@ class Domain: Object {
}
}

enum DomainState {
public enum DomainState {
case empty
case trusted
case restricted
}

enum ListType {
public enum ListType {
case trustedList
case restrictedList
}

class DomainStore: NSObject {
public class DomainStore: NSObject {

class func get(domain: String) -> Domain? {
public class func get(domain: String) -> Domain? {
let realm = try! Realm()
if let domain = realm.object(ofType: Domain.self, forPrimaryKey: domain) {
return domain
}
return nil
}

class func create(domain: String) -> Domain {
public class func create(domain: String) -> Domain {
let realm = try! Realm()
let domainObj = Domain()
domainObj.name = domain
@@ -66,7 +66,7 @@ class DomainStore: NSObject {
return domainObj
}

class func changeState(domain: Domain, state: DomainState) {
public class func changeState(domain: Domain, state: DomainState) {

let realm = try! Realm()
do {
@@ -80,7 +80,7 @@ class DomainStore: NSObject {
}
}

class func add(appId: Int, domain: Domain, list: ListType) {
public class func add(appId: Int, domain: Domain, list: ListType) {

let realm = try! Realm()
do {
@@ -101,7 +101,7 @@ class DomainStore: NSObject {
}
}

class func remove(appId: Int, domain: Domain, list: ListType) {
public class func remove(appId: Int, domain: Domain, list: ListType) {

let realm = try! Realm()
do {
@@ -9,15 +9,15 @@
import Foundation
import RealmSwift

class TrackerState: Object {
public class TrackerState: Object {
@objc dynamic var appId: Int = -1
@objc dynamic var state: Int = 0 //0 none, 1 trusted, 2 restricted, 3 blocked
override static func primaryKey() -> String? {
override public static func primaryKey() -> String? {
return "appId"
}

var translatedState: TrackerStateEnum {
public var translatedState: TrackerStateEnum {
switch state {
case 0:
return .empty
@@ -33,24 +33,24 @@ class TrackerState: Object {
}
}

enum TrackerStateEnum {
public enum TrackerStateEnum {
case empty
case trusted
case restricted
case blocked
}

class TrackerStateStore: NSObject {
public class TrackerStateStore: NSObject {

class func getTrackerState(appId: Int) -> TrackerState? {
public class func getTrackerState(appId: Int) -> TrackerState? {
let realm = try! Realm()
if let trackerState = realm.object(ofType: TrackerState.self, forPrimaryKey: appId) {
return trackerState
}
return nil
}

class func createTrackerState(appId: Int, state: TrackerStateEnum = .empty) -> TrackerState {
@discardableResult public class func createTrackerState(appId: Int, state: TrackerStateEnum = .empty) -> TrackerState {

let realm = try! Realm()
let trackerState = TrackerState()
@@ -64,7 +64,7 @@ class TrackerStateStore: NSObject {
return trackerState
}

class func change(trackerState: TrackerState, toState: TrackerStateEnum) {
public class func change(trackerState: TrackerState, toState: TrackerStateEnum) {
let realm = try! Realm()
do {
try realm.write {
@@ -34,7 +34,10 @@ target 'Client' do
pod 'RxSwift', '~> 4.0'
pod 'RealmSwift'
pod 'Charts', '~> 3.0.1'
end

target 'Storage' do
pod 'RealmSwift'
end

post_install do |installer|

0 comments on commit 09eeea8

Please sign in to comment.