* location name in notifications
* remove tests
* panic nostr
* mentions with hashes, otherwise none
* fix timestamps
* parse geohashes in messages
* works
* fix country name
* mention notifications work
* adding notification for active peers + tests
* adding a recently seen peer set to track if we've seen that peer before
* changing back to notificationManager naming
* fixing some weird formatting that occurred during merge conflict fix
* favorite each other
* show favorites as system messsages
* wip show glove when offline but mayb edoesnt work
* send and receive works
* wip kinda works but no
* getting there
* kinda
* show offline peers in peer list
* kinda wonky but almost works
* fixes
* nostr user goes offline works
* nostr -> mesh works
* handoff works
* background message processing
* read works
* seen message store was missing
* first nostr build
* add test file
* internet access
* fix relay manager
* fix serialization
* demo service - remove later
* fix nostr
* event dedupe
* dedupe
* ui wip
* can send messages
* subscription works
* works
* favs
* works
* delete chat on change
* fix mentions
* remove autojoin channels
* styling
* adjust colors
* ui changes
* live updates working
* use local timestamp
* message history in background
* robust
* fixes
* nicknames refresh optimization
* nostr service
* refactor nostr
* style
* geohash works
* centralize colors
* refactoring
* disable DMs for now: click on peer nickname doesnt open chat list in geohash mode
* use local time
* less logging
* robustness
* scroll nickname
* adjust some text
- Created MeshDelegateHandler.kt to handle all BluetoothMeshDelegate callbacks
- Created ChatViewModelUtils.kt for utility functions like haptic feedback
- ChatViewModel now delegates all mesh events to MeshDelegateHandler
- Final ChatViewModel size: 337 lines (down from 1000+ original)
This completes the refactoring while maintaining 100% functionality.
- Created ChatState.kt for centralized state management
- Created DataManager.kt for persistence operations
- Created MessageManager.kt for message handling and deduplication
- Created ChannelManager.kt for channel operations and encryption
- Created PrivateChatManager.kt for private chat functionality
- Created CommandProcessor.kt for IRC-style command processing
ChatViewModel.kt reduced from 1000+ lines to ~300 lines while maintaining 100% functionality.
All existing functionality preserved, just better organized.