🐛 Fix loading indicator not hiding on first time load

This commit is contained in:
LittleSheep 2025-03-04 21:20:54 +08:00
parent 76d8cd943d
commit cdaa8cfe58
2 changed files with 8 additions and 8 deletions

View File

@ -357,6 +357,7 @@ class ChatMessageController extends ChangeNotifier {
if (mostRecentMessage == null) { if (mostRecentMessage == null) {
// Initial load // Initial load
await loadMessages(take: 20); await loadMessages(take: 20);
isAggressiveLoading = false;
isCheckedUpdate = true; isCheckedUpdate = true;
return; return;
} }

View File

@ -60,6 +60,9 @@ class _ChatRoomScreenState extends State<ChatRoomScreen> {
final GlobalKey<ChatMessageInputState> _inputGlobalKey = GlobalKey(); final GlobalKey<ChatMessageInputState> _inputGlobalKey = GlobalKey();
late final ChatMessageController _messageController; late final ChatMessageController _messageController;
late final NotificationProvider _nty = context.read<NotificationProvider>();
late final WebSocketProvider _ws = context.read<WebSocketProvider>();
bool _isEncrypted = false; bool _isEncrypted = false;
StreamSubscription? _wsSubscription; StreamSubscription? _wsSubscription;
@ -91,8 +94,7 @@ class _ChatRoomScreenState extends State<ChatRoomScreen> {
} }
if (!mounted) return; if (!mounted) return;
final nty = context.read<NotificationProvider>(); _nty.skippableNotifyChannel = _channel!.id;
nty.skippableNotifyChannel = _channel!.id;
final ws = context.read<WebSocketProvider>(); final ws = context.read<WebSocketProvider>();
if (_channel != null) { if (_channel != null) {
ws.conn?.sink.add( ws.conn?.sink.add(
@ -229,8 +231,7 @@ class _ChatRoomScreenState extends State<ChatRoomScreen> {
]); ]);
}); });
final ws = context.read<WebSocketProvider>(); _wsSubscription = _ws.pk.stream.listen((event) {
_wsSubscription = ws.pk.stream.listen((event) {
switch (event.method) { switch (event.method) {
case 'calls.new': case 'calls.new':
final payload = SnChatCall.fromJson(event.payload!); final payload = SnChatCall.fromJson(event.payload!);
@ -252,11 +253,9 @@ class _ChatRoomScreenState extends State<ChatRoomScreen> {
void dispose() { void dispose() {
_wsSubscription?.cancel(); _wsSubscription?.cancel();
_messageController.dispose(); _messageController.dispose();
final nty = context.read<NotificationProvider>(); _nty.skippableNotifyChannel = null;
nty.skippableNotifyChannel = null;
final ws = context.read<WebSocketProvider>();
if (_channel != null) { if (_channel != null) {
ws.conn?.sink.add( _ws.conn?.sink.add(
jsonEncode(WebSocketPackage( jsonEncode(WebSocketPackage(
method: 'events.unsubscribe', method: 'events.unsubscribe',
endpoint: 'im', endpoint: 'im',