Skip to content

Commit

Permalink
refactor: switch to iOS17 Observation
Browse files Browse the repository at this point in the history
refactor: switch to iOS17 Observation for managing model data
  • Loading branch information
geigerzaehler242 committed May 6, 2024
1 parent e3c08c5 commit 971859d
Show file tree
Hide file tree
Showing 11 changed files with 67 additions and 59 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"originHash" : "4caa31a5b0b2afde3986ba8e2709839c0876c7621cbab657fdb0ccad5f0b7777",
"pins" : [
{
"identity" : "bdk-swift",
Expand All @@ -19,5 +20,5 @@
}
}
],
"version" : 2
"version" : 3
}
7 changes: 4 additions & 3 deletions PadawanWalletiOS/PadawanWallet/ContentView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ struct ContentView: View {

// MARK: PROPERTIES

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel
@State var selectedTab: Int = 0

enum Tab: Int {
Expand Down Expand Up @@ -54,16 +54,17 @@ struct ContentView: View {
// })
}
.onAppear{
viewModel.load()
walletViewModel.load()
}
}
}

// MARK: PREVIEW

struct ContentView_Previews: PreviewProvider {

static var previews: some View {
ContentView()
.environmentObject(WalletViewModel())
.environment(WalletViewModel())
}
}
10 changes: 5 additions & 5 deletions PadawanWalletiOS/PadawanWallet/LearnView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import SwiftUI

struct LearnView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel
@Binding var selectedTab: Int

var body: some View {
Expand All @@ -25,7 +25,7 @@ struct LearnView: View {
.font(.largeTitle)
.foregroundColor(.blue)

Text("\(String(viewModel.blockHeight))")
Text("\(String(walletViewModel.blockHeight))")
//.font(.largeTitle)
.font(.system(size: 60))
.foregroundColor(.blue)
Expand All @@ -35,13 +35,13 @@ struct LearnView: View {
}
}
.onAppear{
viewModel.load()
viewModel.getBlockHeight()
walletViewModel.load()
walletViewModel.getBlockHeight()
}
}
}

#Preview {
LearnView(selectedTab: .constant (1))
.environmentObject(WalletViewModel())
.environment(WalletViewModel())
}
4 changes: 2 additions & 2 deletions PadawanWalletiOS/PadawanWallet/MenuView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import SwiftUI

struct MenuView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel
@Binding var selectedTab: Int

@Environment(\.dismiss) var dismiss
Expand Down Expand Up @@ -84,5 +84,5 @@ struct MenuView: View {

#Preview {
MenuView(selectedTab: .constant (2))
.environmentObject(WalletViewModel())
.environment(WalletViewModel())
}
7 changes: 5 additions & 2 deletions PadawanWalletiOS/PadawanWallet/PadawanWalletApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,16 @@ import SwiftUI
@main
struct PadawanWalletApp: App {
@AppStorage("isOnboarding") var isOnboarding: Bool = true
@State private var walletViewModel = WalletViewModel()

var body: some Scene {
WindowGroup {
if isOnboarding {
WelcomeView().environmentObject(WalletViewModel())
WelcomeView()
.environment(walletViewModel)
} else {
ContentView().environmentObject(WalletViewModel())
ContentView()
.environment(walletViewModel)
}
}
}
Expand Down
8 changes: 4 additions & 4 deletions PadawanWalletiOS/PadawanWallet/ReceiveView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ let filter = CIFilter.qrCodeGenerator()

struct ReceiveView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel

@Binding var navigationPath: [String]

Expand All @@ -28,7 +28,7 @@ struct ReceiveView: View {
}

func getAddress() {
switch viewModel.state {
switch walletViewModel.state {
case .loaded(let wallet, _):
do {
let addressInfo = try wallet.getAddress(addressIndex: AddressIndex.lastUnused)
Expand Down Expand Up @@ -115,14 +115,14 @@ struct ReceiveView: View {
//.modifier(BackButtonMod())
.onAppear(perform: {
getAddress()
viewModel.sync()
walletViewModel.sync()
})
}
}

struct ReceiveView_Previews: PreviewProvider {
static var previews: some View {
ReceiveView(navigationPath: .constant (["Receive ↓"]))
.environmentObject(WalletViewModel())
.environment(WalletViewModel())
}
}
5 changes: 3 additions & 2 deletions PadawanWalletiOS/PadawanWallet/RecoverView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import SwiftUI

struct RecoverView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel
@State private var words = Array(repeating: "", count: 12)

@Environment(\.dismiss) var dismiss
Expand Down Expand Up @@ -48,7 +48,7 @@ struct RecoverView: View {
if !words.isEmpty {
do {
let joinedWords = words.joined(separator: " ")
try viewModel.createWallet(words: joinedWords)
try walletViewModel.createWallet(words: joinedWords)
} catch {
// self.walletViewError = .Generic(message: "Error Getting Transactions")
print("error")
Expand Down Expand Up @@ -94,5 +94,6 @@ struct RecoverView: View {
struct RecoverView_Previews: PreviewProvider {
static var previews: some View {
RecoverView()
.environment(WalletViewModel())
}
}
23 changes: 12 additions & 11 deletions PadawanWalletiOS/PadawanWallet/SendView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ import BitcoinDevKit

struct SendView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel
//@Bindable var viewModel: WalletViewModel

@State private var feesSatsPerVByte = 4.0
@State private var isEditing = false
Expand All @@ -38,7 +39,7 @@ struct SendView: View {

HStack{
Spacer()
Text(viewModel.balanceText)
Text(walletViewModel.balanceText)
.font(.title2)
Text(" sats")
.font(.title2)
Expand Down Expand Up @@ -138,14 +139,14 @@ struct SendView: View {
.padding(40)
.onAppear(perform: {
//viewModel.sync()
viewModel.toggleBTCDisplay(displayOption: "sats")
walletViewModel.toggleBTCDisplay(displayOption: "sats")
})
.sheet(isPresented: $verifyReady, onDismiss: {

isSent == true ? navigationPath.removeAll() : () //navigate to wallet view if send sucessful
})
{
VerifyView(feesSatsPerVByte: $feesSatsPerVByte, satsAmount: $satsAmount, btcAddress: $btcAddress, verifyReady: $verifyReady, isSent: $isSent)
VerifyView(walletViewModel: walletViewModel,feesSatsPerVByte: $feesSatsPerVByte, satsAmount: $satsAmount, btcAddress: $btcAddress, verifyReady: $verifyReady, isSent: $isSent)
.presentationDetents([.medium]) //half height sheet
.presentationCornerRadius(50)
.presentationBackground(alignment: .bottom) {
Expand All @@ -159,7 +160,7 @@ struct SendView: View {

struct VerifyView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Bindable var walletViewModel: WalletViewModel

@Binding var feesSatsPerVByte: Double
@Binding var satsAmount: String
Expand Down Expand Up @@ -218,10 +219,10 @@ struct VerifyView: View {

Button(action: {

viewModel.send(recipient: btcAddress, amount: (UInt64(satsAmount) ?? 0), fee: Float(feesSatsPerVByte))
walletViewModel.send(recipient: btcAddress, amount: (UInt64(satsAmount) ?? 0), fee: Float(feesSatsPerVByte))

DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
if self.viewModel.sendViewError == nil {
if self.walletViewModel.sendViewError == nil {
self.isSent = true
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
self.verifyReady.toggle() //cause verify sheet to dismiss
Expand All @@ -241,12 +242,12 @@ struct VerifyView: View {
.cornerRadius(20)
})
.padding(40)
.alert(isPresented: $viewModel.showingSendViewErrorAlert) {
.alert(isPresented: $walletViewModel.showingSendViewErrorAlert) {
Alert(
title: Text("Send Error"),
message: Text(viewModel.sendViewError?.description ?? "Unknown"),
message: Text(walletViewModel.sendViewError?.description ?? "Unknown"),
dismissButton: .default(Text("OK")) {
viewModel.sendViewError = nil
walletViewModel.sendViewError = nil
}
)
}
Expand All @@ -257,6 +258,6 @@ struct SendView_Previews: PreviewProvider {

static var previews: some View {
SendView(navigationPath: .constant (["Send ↑"]))
.environmentObject(WalletViewModel())
.environment(WalletViewModel())
}
}
26 changes: 13 additions & 13 deletions PadawanWalletiOS/PadawanWallet/WalletView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import class PadawanKmp.FaucetService

struct WalletView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) private var walletViewModel
@Binding var selectedTab: Int

@State var navigationPath: [String] = []
Expand Down Expand Up @@ -44,22 +44,22 @@ struct WalletView: View {
.pickerStyle(.segmented)
.onChange(of: satsBTC) {
if satsBTC == "BTC" {
viewModel.toggleBTCDisplay(displayOption: "BTC")
walletViewModel.toggleBTCDisplay(displayOption: "BTC")
} else {
viewModel.toggleBTCDisplay(displayOption: "sats")
walletViewModel.toggleBTCDisplay(displayOption: "sats")
}
}
}

Spacer()
VStack {
Text(viewModel.balanceText).font(.largeTitle)
Text(walletViewModel.balanceText).font(.largeTitle)
Text("\(satsBTC)")
}

Spacer()
Button(action: {
viewModel.sync()
walletViewModel.sync()
satsBTC = amountDisplayOptions[0] //reset segment picker to display BTC
}, label: {
Text("Sync \(Image(systemName: "bitcoinsign.arrow.circlepath"))")
Expand Down Expand Up @@ -101,7 +101,7 @@ struct WalletView: View {
}
.navigationDestination(for: String.self) { navigaionValue in

switch viewModel.state {
switch walletViewModel.state {

case .loaded(_, _):
do {
Expand All @@ -125,15 +125,15 @@ struct WalletView: View {
Spacer()
}

if viewModel.transactions.isEmpty {
if walletViewModel.transactions.isEmpty {

FaucetView()

} else {
List {

ForEach(
viewModel.transactions.sorted(
walletViewModel.transactions.sorted(
by: {
$0.confirmationTime?.timestamp ?? $0.received > $1.confirmationTime?
.timestamp ?? $1.received
Expand Down Expand Up @@ -175,15 +175,15 @@ struct WalletView: View {

} //navigation stack
.onAppear{
viewModel.load()
walletViewModel.load()
}
} //body
}


struct FaucetView: View {

@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) var walletViewModel
@State private var faucetFailed = false

var body: some View {
Expand All @@ -197,7 +197,7 @@ struct FaucetView: View {
Text("Hey! It looks like your transaction list is empty. Take a look around, and come back to get some coins so you can start playing with the wallet!").padding(20)
}

if viewModel.syncState == .synced { //only show button once synced!
if walletViewModel.syncState == .synced { //only show button once synced!
Button(action: {
let faucetService = FaucetService()
let response: FaucetCall = faucetService.callTatooineFaucet(
Expand Down Expand Up @@ -306,7 +306,7 @@ struct WalletTransactionsListItemView: View {

struct TransactionDetailsView: View {
// @ObservedObject var viewModel: TransactionDetailsViewModel
@EnvironmentObject var viewModel: WalletViewModel
@Environment(WalletViewModel.self) var viewModel

let transaction: TransactionDetails
let amount: UInt64
Expand Down Expand Up @@ -450,5 +450,5 @@ func handleResponse(response: FaucetCall) {

#Preview {
WalletView(selectedTab: .constant (0))
.environmentObject(WalletViewModel())
.environment(WalletViewModel())
}
Loading

0 comments on commit 971859d

Please sign in to comment.