From 0210f0e7602f02a52b35a6cd9d9ec8e1ac4fd52a Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Mon, 25 Sep 2023 09:44:57 -0700 Subject: [PATCH] Check for nil context on message views --- Meshtastic/Views/Messages/ChannelList.swift | 5 ++++ .../Views/Messages/ChannelMessageList.swift | 5 +++- Meshtastic/Views/Messages/Messages.swift | 4 ++- Meshtastic/Views/Messages/UserList.swift | 26 +++++++++---------- .../Views/Messages/UserMessageList.swift | 8 +++--- 5 files changed, 30 insertions(+), 18 deletions(-) diff --git a/Meshtastic/Views/Messages/ChannelList.swift b/Meshtastic/Views/Messages/ChannelList.swift index 5df1a487..8349abf3 100644 --- a/Meshtastic/Views/Messages/ChannelList.swift +++ b/Meshtastic/Views/Messages/ChannelList.swift @@ -123,6 +123,11 @@ struct ChannelList: View { Text("delete") } } + .onAppear { + if self.bleManager.context == nil { + self.bleManager.context = context + } + } } } .padding([.top, .bottom]) diff --git a/Meshtastic/Views/Messages/ChannelMessageList.swift b/Meshtastic/Views/Messages/ChannelMessageList.swift index f6211355..74a92b70 100644 --- a/Meshtastic/Views/Messages/ChannelMessageList.swift +++ b/Meshtastic/Views/Messages/ChannelMessageList.swift @@ -259,7 +259,9 @@ struct ChannelMessageList: View { .padding([.top]) .scrollDismissesKeyboard(.immediately) .onAppear(perform: { - self.bleManager.context = context + if self.bleManager.context == nil { + self.bleManager.context = context + } if channel.allPrivateMessages.count > 0 { scrollView.scrollTo(channel.allPrivateMessages.last!.messageId) } @@ -409,6 +411,7 @@ struct ChannelMessageList: View { }) { Image(systemName: "arrow.up.circle.fill").font(.largeTitle).foregroundColor(.accentColor) } + } .padding(.all, 15) } diff --git a/Meshtastic/Views/Messages/Messages.swift b/Meshtastic/Views/Messages/Messages.swift index c4bd1f89..f22414cd 100644 --- a/Meshtastic/Views/Messages/Messages.swift +++ b/Meshtastic/Views/Messages/Messages.swift @@ -63,7 +63,9 @@ struct Messages: View { .navigationBarTitleDisplayMode(.large) .navigationBarItems(leading: MeshtasticLogo()) .onAppear { - self.bleManager.context = context + if self.bleManager.context == nil { + self.bleManager.context = context + } if UserDefaults.preferredPeripheralId.count > 0 { let fetchNodeInfoRequest: NSFetchRequest = NSFetchRequest.init(entityName: "NodeInfoEntity") fetchNodeInfoRequest.predicate = NSPredicate(format: "num == %lld", Int64(bleManager.connectedPeripheral?.num ?? -1)) diff --git a/Meshtastic/Views/Messages/UserList.swift b/Meshtastic/Views/Messages/UserList.swift index 9fa4e2b8..8959407e 100644 --- a/Meshtastic/Views/Messages/UserList.swift +++ b/Meshtastic/Views/Messages/UserList.swift @@ -143,19 +143,19 @@ struct UserList: View { } } } - .alert( - "Trace Route Sent", - isPresented: $isPresentingTraceRouteSentAlert - ) { - Button("OK", role: .cancel) { } - } message: { - Text("This could take a while, response will appear in the mesh log.") - } - .confirmationDialog( - "This conversation will be deleted.", - isPresented: $isPresentingDeleteUserMessagesConfirm, - titleVisibility: .visible - ) { + .alert( + "Trace Route Sent", + isPresented: $isPresentingTraceRouteSentAlert + ) { + Button("OK", role: .cancel) { } + } message: { + Text("This could take a while, response will appear in the mesh log.") + } + .confirmationDialog( + "This conversation will be deleted.", + isPresented: $isPresentingDeleteUserMessagesConfirm, + titleVisibility: .visible + ) { Button(role: .destructive) { deleteUserMessages(user: userSelection!, context: context) context.refresh(node!.user!, mergeChanges: true) diff --git a/Meshtastic/Views/Messages/UserMessageList.swift b/Meshtastic/Views/Messages/UserMessageList.swift index 4b9898ff..c2458d71 100644 --- a/Meshtastic/Views/Messages/UserMessageList.swift +++ b/Meshtastic/Views/Messages/UserMessageList.swift @@ -237,12 +237,14 @@ struct UserMessageList: View { } .padding([.top]) .scrollDismissesKeyboard(.immediately) - .onAppear(perform: { - self.bleManager.context = context + .onAppear { + if self.bleManager.context == nil { + self.bleManager.context = context + } if user.messageList.count > 0 { scrollView.scrollTo(user.messageList.last!.messageId) } - }) + } .onChange(of: user.messageList, perform: { _ in if user.messageList.count > 0 { scrollView.scrollTo(user.messageList.last!.messageId)