96 lines
2.3 KiB
Swift
96 lines
2.3 KiB
Swift
//
|
|
// SettingsModel.swift
|
|
// Multiplatform iOS
|
|
//
|
|
// Created by Maurice Parker on 7/4/20.
|
|
// Copyright © 2020 Ranchero Software. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
import Account
|
|
|
|
class SettingsModel: ObservableObject {
|
|
|
|
enum HelpSites {
|
|
case netNewsWireHelp, netNewsWire, supportNetNewsWire, github, bugTracker, technotes, netNewsWireSlack, releaseNotes, none
|
|
|
|
var url: URL? {
|
|
switch self {
|
|
case .netNewsWireHelp:
|
|
return URL(string: "https://netnewswire.com/help/ios/5.0/en/")!
|
|
case .netNewsWire:
|
|
return URL(string: "https://netnewswire.com/")!
|
|
case .supportNetNewsWire:
|
|
return URL(string: "https://github.com/brentsimmons/NetNewsWire/blob/main/Technotes/HowToSupportNetNewsWire.markdown")!
|
|
case .github:
|
|
return URL(string: "https://github.com/brentsimmons/NetNewsWire")!
|
|
case .bugTracker:
|
|
return URL(string: "https://github.com/brentsimmons/NetNewsWire/issues")!
|
|
case .technotes:
|
|
return URL(string: "https://github.com/brentsimmons/NetNewsWire/tree/main/Technotes")!
|
|
case .netNewsWireSlack:
|
|
return URL(string: "https://netnewswire.com/slack")!
|
|
case .releaseNotes:
|
|
return URL.releaseNotes
|
|
case .none:
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
|
|
@Published var presentSheet: Bool = false
|
|
var accounts: [Account] {
|
|
get {
|
|
AccountManager.shared.sortedAccounts
|
|
}
|
|
set {
|
|
|
|
}
|
|
}
|
|
|
|
var activeAccounts: [Account] {
|
|
get {
|
|
AccountManager.shared.sortedActiveAccounts
|
|
}
|
|
set {
|
|
|
|
}
|
|
}
|
|
|
|
// MARK: Init
|
|
|
|
init() {
|
|
NotificationCenter.default.addObserver(self, selector: #selector(displayNameDidChange), name: .DisplayNameDidChange, object: nil)
|
|
NotificationCenter.default.addObserver(self, selector: #selector(userDidAddAccount), name: .UserDidAddAccount, object: nil)
|
|
NotificationCenter.default.addObserver(self, selector: #selector(userDidDeleteAccount), name: .UserDidDeleteAccount, object: nil)
|
|
}
|
|
|
|
var selectedWebsite: HelpSites = .none {
|
|
didSet {
|
|
if selectedWebsite == .none {
|
|
presentSheet = false
|
|
} else {
|
|
presentSheet = true
|
|
}
|
|
}
|
|
}
|
|
|
|
func refreshAccounts() {
|
|
objectWillChange.self.send()
|
|
}
|
|
|
|
// MARK:- Notifications
|
|
|
|
@objc func displayNameDidChange() {
|
|
refreshAccounts()
|
|
}
|
|
|
|
@objc func userDidAddAccount() {
|
|
refreshAccounts()
|
|
}
|
|
|
|
@objc func userDidDeleteAccount() {
|
|
refreshAccounts()
|
|
}
|
|
}
|