* Remove extra want config call when adding a contact
* App badge and unnecessary notification fixes (#1455)
* - Fix for app badge not going to zero if a message arrives while you have that chat open
- Fix for push notifications popping up when a message is received while that chat is open
* Fix for cancelling notifications, works now. And scroll to bottom of conversation upon new message
* Fix: Channels help grammer fix (#1452)
* remove outdated TCP not available on Apple devices (#1450)
* Update initial onboarding view
* remove toggle gating for mac
* Update crash reporting opt out in real time
* Update onboarding text
* Use mDNS text records for node name
* TCP IP and port on the connection screen
* Hide app icon chooser on mac
* Infinite loop hang bugfixes and performance improvements for both `UserMessageList` and `ChannelMessageList` (#1465)
* 2.7.5 Working Changes (#1460)
* Remove extra want config call when adding a contact
* App badge and unnecessary notification fixes (#1455)
* - Fix for app badge not going to zero if a message arrives while you have that chat open
- Fix for push notifications popping up when a message is received while that chat is open
* Fix for cancelling notifications, works now. And scroll to bottom of conversation upon new message
* Fix: Channels help grammer fix (#1452)
* remove outdated TCP not available on Apple devices (#1450)
* Update initial onboarding view
* remove toggle gating for mac
* Update crash reporting opt out in real time
* Update onboarding text
---------
Co-authored-by: Gnome Adrift <646322+gnomeadrift@users.noreply.github.com>
Co-authored-by: Zain Kergaye <62440012+ZainKergaye@users.noreply.github.com>
Co-authored-by: NillRudd <102033730+NillRudd@users.noreply.github.com>
* UserEntity: add mostRecentMessage and unreadMessages with early exit when lastMessage is nil, and fetch 1 row (not N) otherwise
* UserList: replace 5 slow calls to user.messageList with new fast calls
* NodeList: always put the connected node at the top of list (if it matches the node filters)
* ChannelEntity: add faster mostRecentPrivateMessage and unreadMessages which fetch 1 row (not N)
* ChannelList: replace 5 calls to channel.allPrivateMessage with new fast calls
* Fix incorrect appState.unreadDirectMessages calculations
* MyInfoEntity: also fix unreadMessages count here to be fast, and use it for appState.unreadChannelMessages
* UserMessageList: use @FetchRequest to prevent the N^2 behavior that was happening in calls to allPrivateMessages
* Refactor ChannelEntityExtension and MyInfoEntityExtension to be more similar to UserEntityExtension
* Remove SwiftUI-infinite-loop-causing `.id(redrawTapbacksTrigger)` in ChannelMessageList and UserMessageList (duplicate row ids)
* MyInfoEntityExtension: exclude emoji tapbacks (which never get marked as read anyway) from unread message count
* Add SaveChannelLinkData so MessageText and MeshtasticApp can use .sheet(item: ...) and avoid infinite loop hang due to Binding rebuild
* ChannelMessageList and UserMessageList: switch to stable messageId for ForEach SwiftUI row identity
* ChannelMessageList and UserMessageList: debouncedScrollToBottom; keyboardWillShowNotification/keyboardDidShowNotification
* ChannelMessageList and UserMessageList: scroll to bottom onFirstAppear
* ChannelMessageList and UserMessageList: block spurious markMessagesAsRead when this View is not active
---------
Co-authored-by: Garth Vander Houwen <garth@meshtastic.com>
Co-authored-by: Gnome Adrift <646322+gnomeadrift@users.noreply.github.com>
Co-authored-by: Zain Kergaye <62440012+ZainKergaye@users.noreply.github.com>
Co-authored-by: NillRudd <102033730+NillRudd@users.noreply.github.com>
* message-list-performance: revert scrolling changes (#1472)
* Revert e0f0b4a0f7 (ChannelMessageList and UserMessageList: scroll to bottom onFirstAppear)
* Revert "ChannelMessageList and UserMessageList: debouncedScrollToBottom; keyboardWillShowNotification/keyboardDidShowNotification"
This reverts commit ee1a7c4415.
---------
Co-authored-by: Gnome Adrift <646322+gnomeadrift@users.noreply.github.com>
Co-authored-by: Zain Kergaye <62440012+ZainKergaye@users.noreply.github.com>
Co-authored-by: NillRudd <102033730+NillRudd@users.noreply.github.com>
Co-authored-by: Jake-B <jake-b@users.noreply.github.com>
Co-authored-by: Mike Robbins <mrobbins@alum.mit.edu>
After this change, a developer can now clone the project and run without the build failing due to lint errors! 😃
* I ran `swiftlint --fix` to resolve many auto-correctable issues (mostly whitespace)
* Excluded the `Meshtastic/Protobufs` directory from lint, since that code is automatically generated.
* Converted some single letter method parameters to lowercase.
* Converted several instances `force_cast` to instead use `guard` or `if let` to unwrap optional values. During this change, some of the SwiftUI views became "too complex to be solved in a reasonable time", so I broke up the views into distinct sub-expressions.
I was able to build and run the app on an iOS simulator.