Refactor unread message tracking and implement channel caching (#126)

* Refactor unread message tracking and implement channel caching

* formatted files
This commit is contained in:
zjs81
2026-02-04 20:34:03 -07:00
committed by GitHub
parent b3645481c7
commit c320378be1
7 changed files with 243 additions and 179 deletions
+5 -2
View File
@@ -41,6 +41,8 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
final Map<String, GlobalKey> _messageKeys = {};
bool _isLoadingOlder = false;
MeshCoreConnector? _connector;
@override
void initState() {
super.initState();
@@ -48,7 +50,8 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
_scrollController.onScrollNearTop = _loadOlderMessages;
SchedulerBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
context.read<MeshCoreConnector>().setActiveChannel(widget.channel.index);
_connector = context.read<MeshCoreConnector>();
_connector?.setActiveChannel(widget.channel.index);
});
}
@@ -72,7 +75,7 @@ class _ChannelChatScreenState extends State<ChannelChatScreen> {
@override
void dispose() {
context.read<MeshCoreConnector>().setActiveChannel(null);
_connector?.setActiveChannel(null);
_textFieldFocusNode.removeListener(_onTextFieldFocusChange);
_textFieldFocusNode.dispose();
_textController.dispose();
+4 -4
View File
@@ -44,6 +44,7 @@ class _ChatScreenState extends State<ChatScreen> {
final _scrollController = ChatScrollController();
final _textFieldFocusNode = FocusNode();
bool _isLoadingOlder = false;
MeshCoreConnector? _connector;
@override
void initState() {
@@ -52,9 +53,8 @@ class _ChatScreenState extends State<ChatScreen> {
_scrollController.onScrollNearTop = _loadOlderMessages;
SchedulerBinding.instance.addPostFrameCallback((_) {
if (!mounted) return;
context.read<MeshCoreConnector>().setActiveContact(
widget.contact.publicKeyHex,
);
_connector = context.read<MeshCoreConnector>();
_connector?.setActiveContact(widget.contact.publicKeyHex);
});
}
@@ -78,7 +78,7 @@ class _ChatScreenState extends State<ChatScreen> {
@override
void dispose() {
context.read<MeshCoreConnector>().setActiveContact(null);
_connector?.setActiveContact(null);
_textFieldFocusNode.removeListener(_onTextFieldFocusChange);
_textFieldFocusNode.dispose();
_textController.dispose();