Merge branch 'restrict-feedback'

This commit is contained in:
Davide De Rosa 2019-11-02 11:34:23 +01:00
commit 244337fbbe
3 changed files with 36 additions and 10 deletions

View File

@ -33,6 +33,8 @@ import PassepartoutCore
private let log = SwiftyBeaver.self
class ProductManager: NSObject {
static let didReloadReceipt = Notification.Name("ProductManagerDidReloadReceipt")
private static let lastFullVersionBuild = 2016 // 1.8.1
static let shared = ProductManager()
@ -41,7 +43,7 @@ class ProductManager: NSObject {
private var purchasedAppBuild: Int?
private(set) var purchasedFeatures: Set<Product>
private var purchasedFeatures: Set<Product>
private var refreshRequest: SKReceiptRefreshRequest?
@ -133,6 +135,8 @@ class ProductManager: NSObject {
}
}
log.info("Purchased features: \(purchasedFeatures)")
NotificationCenter.default.post(name: ProductManager.didReloadReceipt, object: nil)
}
func isFullVersion() -> Bool {
@ -157,6 +161,10 @@ class ProductManager: NSObject {
return $0.rawValue.hasSuffix("providers.\(name.rawValue)")
}
}
func isEligibleForFeedback() -> Bool {
return AppConstants.Flags.isBeta || !purchasedFeatures.isEmpty
}
}
extension ConnectionService {

View File

@ -44,8 +44,10 @@ class OrganizerViewController: UITableViewController, StrongTableHost {
// MARK: StrongTableHost
let model: StrongTableModel<SectionType, RowType> = {
let model: StrongTableModel<SectionType, RowType> = StrongTableModel()
let model: StrongTableModel<SectionType, RowType> = StrongTableModel()
func reloadModel() {
model.clear()
model.add(.vpn)
model.add(.providers)
model.add(.hosts)
@ -53,7 +55,9 @@ class OrganizerViewController: UITableViewController, StrongTableHost {
model.add(.siri)
}
model.add(.support)
model.add(.feedback)
if ProductManager.shared.isEligibleForFeedback() {
model.add(.feedback)
}
model.add(.about)
model.add(.destruction)
model.setHeader(L10n.App.Service.Sections.Vpn.header, forSection: .vpn)
@ -78,10 +82,9 @@ class OrganizerViewController: UITableViewController, StrongTableHost {
model.setHeader("Beta", forSection: .test)
model.set([.testDisplayLog, .testTermination], forSection: .test)
}
return model
}()
func reloadModel() {
//
providers = service.ids(forContext: .provider).sorted()
hosts = service.ids(forContext: .host).sortedCaseInsensitive()
@ -122,7 +125,9 @@ class OrganizerViewController: UITableViewController, StrongTableHost {
// see UISplitViewControllerDelegate in AppDelegate (collapse is now commented out)
service.delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(vpnDidUpdate), name: .VPNDidChangeStatus, object: nil)
let nc = NotificationCenter.default
nc.addObserver(self, selector: #selector(vpnDidUpdate), name: .VPNDidChangeStatus, object: nil)
nc.addObserver(self, selector: #selector(productManagerDidReloadReceipt), name: ProductManager.didReloadReceipt, object: nil)
}
override func viewDidAppear(_ animated: Bool) {
@ -359,6 +364,11 @@ class OrganizerViewController: UITableViewController, StrongTableHost {
@objc private func vpnDidUpdate() {
tableView.reloadData()
}
@objc private func productManagerDidReloadReceipt() {
reloadModel()
tableView.reloadData()
}
}
// MARK: -

View File

@ -117,6 +117,7 @@ class ServiceViewController: UIViewController, StrongTableHost {
nc.addObserver(self, selector: #selector(vpnDidUpdate), name: .VPNDidReinstall, object: nil)
nc.addObserver(self, selector: #selector(intentDidUpdateService), name: .IntentDidUpdateService, object: nil)
nc.addObserver(self, selector: #selector(serviceDidUpdateDataCount(_:)), name: .ConnectionServiceDidUpdateDataCount, object: nil)
nc.addObserver(self, selector: #selector(productManagerDidReloadReceipt), name: ProductManager.didReloadReceipt, object: nil)
// run this no matter what
// XXX: convenient here vs AppDelegate for updating table
@ -666,6 +667,11 @@ class ServiceViewController: UIViewController, StrongTableHost {
}
refreshDataCount(dataCount)
}
@objc private func productManagerDidReloadReceipt() {
reloadModel()
tableView.reloadData()
}
}
// MARK: -
@ -1158,7 +1164,9 @@ extension ServiceViewController: UITableViewDataSource, UITableViewDelegate, Tog
model.add(.trusted)
model.add(.trustedPolicy)
model.add(.diagnostics)
model.add(.feedback)
if ProductManager.shared.isEligibleForFeedback() {
model.add(.feedback)
}
}
// headers