diff --git a/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountModel.swift b/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountModel.swift new file mode 100644 index 000000000..34a343050 --- /dev/null +++ b/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountModel.swift @@ -0,0 +1,41 @@ +// +// SettingsAddAccountModel.swift +// Multiplatform iOS +// +// Created by Rizwan on 09/07/20. +// Copyright © 2020 Ranchero Software. All rights reserved. +// + +import SwiftUI +import Account +import RSCore + +class SettingsAddAccountModel: ObservableObject { + + struct SettingsAddAccount: Identifiable { + var id: Int { accountType.rawValue } + + let name: String + let accountType: AccountType + + var image: RSImage { + AppAssets.image(for: accountType)! + } + } + + @Published var accounts: [SettingsAddAccount] = [] + @Published var isAddPresented = false + @Published var selectedAccountType: AccountType? = nil { + didSet { + selectedAccountType != nil ? (isAddPresented = true) : (isAddPresented = false) + } + } + + init() { + self.accounts = [ + SettingsAddAccount(name: Account.defaultLocalAccountName, accountType: .onMyMac), + SettingsAddAccount(name: "Feedbin", accountType: .feedbin) + ] + } + +} diff --git a/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountView.swift b/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountView.swift index 76385f098..5e1d8bd3f 100644 --- a/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountView.swift +++ b/Multiplatform/iOS/Settings/Accounts/SettingsAddAccountView.swift @@ -10,36 +10,27 @@ import SwiftUI import Account struct SettingsAddAccountView: View { - @State private var isAddPresented = false - @State private var selectedAccountType: AccountType = .onMyMac + @StateObject private var model = SettingsAddAccountModel() var body: some View { List { - Button(action: { - self.selectedAccountType = AccountType.onMyMac - self.isAddPresented = true - }) { - SettingsAccountLabelView( - accountImage: AppAssets.image(for: .onMyMac), - accountLabel: Account.defaultLocalAccountName - ) - } - Button(action: { - self.selectedAccountType = AccountType.feedbin - self.isAddPresented = true - }) { - SettingsAccountLabelView( - accountImage: AppAssets.image(for: .feedbin), - accountLabel: "Feedbin" - ) + ForEach(model.accounts) { account in + Button(action: { + model.selectedAccountType = account.accountType + }) { + SettingsAccountLabelView( + accountImage: account.image, + accountLabel: account.name + ) + } } } .listStyle(InsetGroupedListStyle()) - .sheet(isPresented: $isAddPresented) { - if selectedAccountType == .onMyMac { + .sheet(isPresented: $model.isAddPresented) { + if model.selectedAccountType == .onMyMac { SettingsLocalAccountView() } - if selectedAccountType == .feedbin { + if model.selectedAccountType == .feedbin { SettingsFeedbinAccountView() } } diff --git a/NetNewsWire.xcodeproj/project.pbxproj b/NetNewsWire.xcodeproj/project.pbxproj index a800c8515..50492f3b1 100644 --- a/NetNewsWire.xcodeproj/project.pbxproj +++ b/NetNewsWire.xcodeproj/project.pbxproj @@ -672,6 +672,7 @@ 55E15BCB229D65A900D6602A /* AccountsReaderAPI.xib in Resources */ = {isa = PBXBuildFile; fileRef = 55E15BC1229D65A900D6602A /* AccountsReaderAPI.xib */; }; 55E15BCC229D65A900D6602A /* AccountsReaderAPIWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55E15BCA229D65A900D6602A /* AccountsReaderAPIWindowController.swift */; }; 5F323809231DF9F000706F6B /* VibrantTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F323808231DF9F000706F6B /* VibrantTableViewCell.swift */; }; + 65422D1724B75CD1008A2FA2 /* SettingsAddAccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65422D1624B75CD1008A2FA2 /* SettingsAddAccountModel.swift */; }; 6581C73820CED60100F4AD34 /* SafariExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6581C73720CED60100F4AD34 /* SafariExtensionHandler.swift */; }; 6581C73A20CED60100F4AD34 /* SafariExtensionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6581C73920CED60100F4AD34 /* SafariExtensionViewController.swift */; }; 6581C73D20CED60100F4AD34 /* SafariExtensionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6581C73B20CED60100F4AD34 /* SafariExtensionViewController.xib */; }; @@ -2088,6 +2089,7 @@ 55E15BC1229D65A900D6602A /* AccountsReaderAPI.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AccountsReaderAPI.xib; sourceTree = ""; }; 55E15BCA229D65A900D6602A /* AccountsReaderAPIWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AccountsReaderAPIWindowController.swift; sourceTree = ""; }; 5F323808231DF9F000706F6B /* VibrantTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VibrantTableViewCell.swift; sourceTree = ""; }; + 65422D1624B75CD1008A2FA2 /* SettingsAddAccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsAddAccountModel.swift; sourceTree = ""; }; 6543108B2322D90900658221 /* common */ = {isa = PBXFileReference; lastKnownFileType = folder; path = common; sourceTree = ""; }; 6581C73320CED60000F4AD34 /* Subscribe to Feed.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Subscribe to Feed.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 6581C73420CED60100F4AD34 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; @@ -3161,6 +3163,7 @@ isa = PBXGroup; children = ( 65ACE48324B4779B003AE06A /* SettingsAddAccountView.swift */, + 65422D1624B75CD1008A2FA2 /* SettingsAddAccountModel.swift */, 65ACE48524B477C9003AE06A /* SettingsAccountLabelView.swift */, 65ACE48724B48020003AE06A /* SettingsLocalAccountView.swift */, 65ACE48924B4C2D8003AE06A /* SettingsFeedbinAccountView.swift */, @@ -5069,6 +5072,7 @@ 51E4991E24A8094300B667CB /* RSImage-AppIcons.swift in Sources */, 51E499D824A912C200B667CB /* SceneModel.swift in Sources */, 5177470E24B2FF6F00EB0F74 /* ArticleView.swift in Sources */, + 65422D1724B75CD1008A2FA2 /* SettingsAddAccountModel.swift in Sources */, 5177471424B37D4000EB0F74 /* PreloadedWebView.swift in Sources */, 517B2EBC24B3E62A001AC46C /* WrapperScriptMessageHandler.swift in Sources */, 51919FB324AAB97900541E64 /* FeedIconImageLoader.swift in Sources */,