mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-06 21:33:08 +00:00
Persist last visited tab and restore it on launch
This commit is contained in:
parent
eb41590ed0
commit
49736388cf
3 changed files with 33 additions and 3 deletions
|
|
@ -131,6 +131,8 @@ struct LinphoneApp: App {
|
|||
@ObservedObject private var coreContext = CoreContext.shared
|
||||
@ObservedObject private var sharedMainViewModel = SharedMainViewModel.shared
|
||||
|
||||
@State var index: Int = 0
|
||||
|
||||
@State private var contactViewModel: ContactViewModel?
|
||||
@State private var editContactViewModel: EditContactViewModel?
|
||||
@State private var historyViewModel: HistoryViewModel?
|
||||
|
|
@ -192,10 +194,12 @@ struct LinphoneApp: App {
|
|||
meetingsListViewModel: meetingsListViewModel!,
|
||||
meetingViewModel: meetingViewModel!,
|
||||
conversationForwardMessageViewModel: conversationForwardMessageViewModel!,
|
||||
accountProfileViewModel: accountProfileViewModel!
|
||||
accountProfileViewModel: accountProfileViewModel!,
|
||||
index: $index
|
||||
)
|
||||
.environmentObject(navigationManager)
|
||||
.onAppear {
|
||||
index = sharedMainViewModel.indexView
|
||||
// Link the navigation manager to the AppDelegate
|
||||
delegate.navigationManager = navigationManager
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ struct ContentView: View {
|
|||
@ObservedObject var conversationForwardMessageViewModel: ConversationForwardMessageViewModel
|
||||
@ObservedObject var accountProfileViewModel: AccountProfileViewModel
|
||||
|
||||
@State var index = 0
|
||||
@Binding var index: Int
|
||||
@State private var orientation = UIDevice.current.orientation
|
||||
@State var sideMenuIsOpen: Bool = false
|
||||
|
||||
|
|
@ -143,6 +143,7 @@ struct ContentView: View {
|
|||
|
||||
Button(action: {
|
||||
self.index = 0
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 0)
|
||||
historyViewModel.displayedCall = nil
|
||||
conversationViewModel.displayedConversation = nil
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
|
|
@ -188,6 +189,7 @@ struct ContentView: View {
|
|||
|
||||
Button(action: {
|
||||
self.index = 1
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 1)
|
||||
contactViewModel.indexDisplayedFriend = nil
|
||||
conversationViewModel.displayedConversation = nil
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
|
|
@ -237,6 +239,7 @@ struct ContentView: View {
|
|||
|
||||
Button(action: {
|
||||
self.index = 2
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 2)
|
||||
historyViewModel.displayedCall = nil
|
||||
contactViewModel.indexDisplayedFriend = nil
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
|
|
@ -263,6 +266,7 @@ struct ContentView: View {
|
|||
|
||||
Button(action: {
|
||||
self.index = 3
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 3)
|
||||
contactViewModel.indexDisplayedFriend = nil
|
||||
historyViewModel.displayedCall = nil
|
||||
conversationViewModel.displayedConversation = nil
|
||||
|
|
@ -733,6 +737,7 @@ struct ContentView: View {
|
|||
Spacer()
|
||||
Button(action: {
|
||||
self.index = 0
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 0)
|
||||
historyViewModel.displayedCall = nil
|
||||
conversationViewModel.displayedConversation = nil
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
|
|
@ -780,6 +785,7 @@ struct ContentView: View {
|
|||
|
||||
Button(action: {
|
||||
self.index = 1
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 1)
|
||||
contactViewModel.indexDisplayedFriend = nil
|
||||
conversationViewModel.displayedConversation = nil
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
|
|
@ -831,6 +837,7 @@ struct ContentView: View {
|
|||
|
||||
Button(action: {
|
||||
self.index = 2
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 2)
|
||||
historyViewModel.displayedCall = nil
|
||||
contactViewModel.indexDisplayedFriend = nil
|
||||
meetingViewModel.displayedMeeting = nil
|
||||
|
|
@ -858,6 +865,7 @@ struct ContentView: View {
|
|||
Spacer()
|
||||
Button(action: {
|
||||
self.index = 3
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 3)
|
||||
contactViewModel.indexDisplayedFriend = nil
|
||||
historyViewModel.displayedCall = nil
|
||||
conversationViewModel.displayedConversation = nil
|
||||
|
|
@ -1198,6 +1206,7 @@ struct ContentView: View {
|
|||
contactViewModel.indexDisplayedFriend = nil
|
||||
historyViewModel.displayedCall = nil
|
||||
index = 2
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 2)
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
|
||||
withAnimation {
|
||||
self.conversationViewModel.changeDisplayedChatRoom(conversationModel: contactViewModel.displayedConversation!)
|
||||
|
|
@ -1381,6 +1390,7 @@ struct ContentView: View {
|
|||
.onChange(of: navigationManager.selectedCallId) { newCallId in
|
||||
if newCallId != nil {
|
||||
self.index = 2
|
||||
sharedMainViewModel.changeIndexView(indexViewInt: 2)
|
||||
}
|
||||
}
|
||||
.onReceive(contactLoaded) { _ in
|
||||
|
|
@ -1454,7 +1464,8 @@ class NavigationManager: ObservableObject {
|
|||
meetingsListViewModel: MeetingsListViewModel(),
|
||||
meetingViewModel: MeetingViewModel(),
|
||||
conversationForwardMessageViewModel: ConversationForwardMessageViewModel(),
|
||||
accountProfileViewModel: AccountProfileViewModel()
|
||||
accountProfileViewModel: AccountProfileViewModel(),
|
||||
index: .constant(0)
|
||||
)
|
||||
}
|
||||
// swiftlint:enable type_body_length
|
||||
|
|
|
|||
|
|
@ -27,17 +27,25 @@ class SharedMainViewModel: ObservableObject {
|
|||
@Published var generalTermsAccepted = false
|
||||
@Published var displayProfileMode = false
|
||||
@Published var defaultAvatar: URL?
|
||||
@Published var indexView: Int = 0
|
||||
|
||||
let welcomeViewKey = "welcome_view"
|
||||
let generalTermsKey = "general_terms"
|
||||
let displayProfileModeKey = "display_profile_mode"
|
||||
let defaultAvatarKey = "default_avatar"
|
||||
let indexViewKey = "index_view"
|
||||
|
||||
var maxWidth = 600.0
|
||||
|
||||
private init() {
|
||||
let preferences = UserDefaults.standard
|
||||
|
||||
if preferences.object(forKey: indexViewKey) == nil {
|
||||
preferences.set(indexView, forKey: indexViewKey)
|
||||
} else {
|
||||
indexView = preferences.integer(forKey: indexViewKey)
|
||||
}
|
||||
|
||||
if preferences.object(forKey: welcomeViewKey) == nil {
|
||||
preferences.set(welcomeViewDisplayed, forKey: welcomeViewKey)
|
||||
} else {
|
||||
|
|
@ -99,4 +107,11 @@ class SharedMainViewModel: ObservableObject {
|
|||
defaultAvatar = defaultAvatarURL
|
||||
preferences.set(defaultAvatar, forKey: defaultAvatarKey)
|
||||
}
|
||||
|
||||
func changeIndexView(indexViewInt: Int) {
|
||||
let preferences = UserDefaults.standard
|
||||
|
||||
indexView = indexViewInt
|
||||
preferences.set(indexView, forKey: indexViewKey)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue