forked from mirrors/linphone-iphone
Display toast when network change state. Also, remove "hasDefaultAccount" key from coreContext, instead check if accounts is empty.
This commit is contained in:
parent
4fa2d92382
commit
8af6977085
5 changed files with 31 additions and 20 deletions
|
|
@ -39,7 +39,6 @@ final class CoreContext: ObservableObject {
|
|||
var coreVersion: String = Core.getVersion
|
||||
@Published var loggedIn: Bool = false
|
||||
@Published var loggingInProgress: Bool = false
|
||||
@Published var hasDefaultAccount: Bool = false
|
||||
@Published var coreIsStarted: Bool = false
|
||||
@Published var accounts: [AccountModel] = []
|
||||
|
||||
|
|
@ -87,10 +86,15 @@ final class CoreContext: ObservableObject {
|
|||
monitor.pathUpdateHandler = { path in
|
||||
let isConnected = path.status == .satisfied
|
||||
if self.networkStatusIsConnected != isConnected {
|
||||
if isConnected {
|
||||
Log.info("Network is now satisfied")
|
||||
} else {
|
||||
Log.error("Network is now \(path.status)")
|
||||
DispatchQueue.main.async {
|
||||
if isConnected {
|
||||
Log.info("Network is now satisfied")
|
||||
ToastViewModel.shared.toastMessage = "Success_toast_network_connected"
|
||||
} else {
|
||||
Log.error("Network is now \(path.status)")
|
||||
ToastViewModel.shared.toastMessage = "Unavailable_network"
|
||||
}
|
||||
ToastViewModel.shared.displayToast = true
|
||||
}
|
||||
self.networkStatusIsConnected = isConnected
|
||||
}
|
||||
|
|
@ -160,13 +164,11 @@ final class CoreContext: ObservableObject {
|
|||
self.actionsToPerformOnCoreQueueWhenCoreIsStarted.forEach { $0(core) }
|
||||
self.actionsToPerformOnCoreQueueWhenCoreIsStarted.removeAll()
|
||||
|
||||
let hasDefaultAccount = self.mCore.defaultAccount != nil ? true : false
|
||||
var accountModels: [AccountModel] = []
|
||||
for account in self.mCore.accountList {
|
||||
accountModels.append(AccountModel(account: account, corePublisher: self.mCore.publisher))
|
||||
}
|
||||
DispatchQueue.main.async {
|
||||
self.hasDefaultAccount = hasDefaultAccount
|
||||
self.coreIsStarted = true
|
||||
self.accounts = accountModels
|
||||
}
|
||||
|
|
@ -263,14 +265,17 @@ final class CoreContext: ObservableObject {
|
|||
} else if state == .Cleared {
|
||||
self.loggingInProgress = false
|
||||
self.loggedIn = false
|
||||
self.hasDefaultAccount = false
|
||||
ToastViewModel.shared.toastMessage = "Success_account_logged_out"
|
||||
ToastViewModel.shared.displayToast = true
|
||||
} else {
|
||||
self.loggingInProgress = false
|
||||
self.loggedIn = false
|
||||
ToastViewModel.shared.toastMessage = "Registration_failed"
|
||||
ToastViewModel.shared.displayToast = true
|
||||
if self.networkStatusIsConnected {
|
||||
// If network is disconnected, a toast message with key "Unavailable_network" should already be displayed
|
||||
ToastViewModel.shared.toastMessage = "Registration_failed"
|
||||
ToastViewModel.shared.displayToast = true
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}, onAccountAdded: { (_: Core, _: Account) in
|
||||
|
|
|
|||
|
|
@ -94,15 +94,14 @@ struct LinphoneApp: App {
|
|||
ToastView()
|
||||
.zIndex(3)
|
||||
}
|
||||
} else if !coreContext.hasDefaultAccount || sharedMainViewModel.displayProfileMode {
|
||||
} else if coreContext.accounts.isEmpty || sharedMainViewModel.displayProfileMode {
|
||||
ZStack {
|
||||
AssistantView()
|
||||
|
||||
ToastView()
|
||||
.zIndex(3)
|
||||
}
|
||||
} else if coreContext.hasDefaultAccount
|
||||
&& coreContext.loggedIn
|
||||
} else if !coreContext.accounts.isEmpty
|
||||
&& contactViewModel != nil
|
||||
&& editContactViewModel != nil
|
||||
&& historyViewModel != nil
|
||||
|
|
|
|||
|
|
@ -1787,6 +1787,12 @@
|
|||
},
|
||||
"Mosaïque" : {
|
||||
|
||||
},
|
||||
"Network is not reachable" : {
|
||||
|
||||
},
|
||||
"Network is now reachable again" : {
|
||||
|
||||
},
|
||||
"New call" : {
|
||||
|
||||
|
|
|
|||
|
|
@ -123,9 +123,6 @@ class AccountLoginViewModel: ObservableObject {
|
|||
|
||||
// Also set the newly added account as default
|
||||
core.defaultAccount = account
|
||||
DispatchQueue.main.async {
|
||||
self.coreContext.hasDefaultAccount = true
|
||||
}
|
||||
|
||||
self.domain = "sip.linphone.org"
|
||||
self.transportType = "TLS"
|
||||
|
|
@ -157,9 +154,6 @@ class AccountLoginViewModel: ObservableObject {
|
|||
// To completely remove an Account
|
||||
if let account = core.defaultAccount {
|
||||
core.removeAccount(account: account)
|
||||
DispatchQueue.main.async {
|
||||
self.coreContext.hasDefaultAccount = false
|
||||
}
|
||||
|
||||
// To remove all accounts use
|
||||
core.clearAccounts()
|
||||
|
|
|
|||
|
|
@ -130,12 +130,19 @@ struct ToastView: View {
|
|||
.padding(8)
|
||||
|
||||
case "Unavailable_network":
|
||||
Text("Could not reach network")
|
||||
Text("Network is not reachable")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.redDanger500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_toast_network_connected":
|
||||
Text("Network is now reachable again")
|
||||
.multilineTextAlignment(.center)
|
||||
.foregroundStyle(Color.greenSuccess500)
|
||||
.default_text_style(styleSize: 15)
|
||||
.padding(8)
|
||||
|
||||
case "Success_account_logged_out":
|
||||
Text("Account successfully logged out")
|
||||
.multilineTextAlignment(.center)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue