🐛 Dozens of bug fixes

This commit is contained in:
2025-09-28 01:39:07 +08:00
parent fffca4a78c
commit b1326d8f04
4 changed files with 26 additions and 7 deletions

View File

@@ -26,6 +26,7 @@ import 'package:relative_time/relative_time.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart'; import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:talker_flutter/talker_flutter.dart';
import 'package:talker_riverpod_logger/talker_riverpod_logger.dart'; import 'package:talker_riverpod_logger/talker_riverpod_logger.dart';
import 'package:url_launcher/url_launcher_string.dart'; import 'package:url_launcher/url_launcher_string.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
@@ -281,9 +282,15 @@ class IslandApp extends HookConsumerWidget {
key: globalOverlay, key: globalOverlay,
initialEntries: [ initialEntries: [
OverlayEntry( OverlayEntry(
builder: builder: (_) {
(_) => return TalkerWrapper(
WindowScaffold(child: child ?? const SizedBox.shrink()), talker: talker,
options: const TalkerWrapperOptions(enableErrorAlerts: true),
child: WindowScaffold(
child: child ?? const SizedBox.shrink(),
),
);
},
), ),
], ],
); );

View File

@@ -1,6 +1,7 @@
import "dart:async"; import "dart:async";
import "dart:convert"; import "dart:convert";
import "package:flutter/material.dart"; import "package:flutter/material.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:island/models/chat.dart"; import "package:island/models/chat.dart";
import "package:island/pods/lifecycle.dart"; import "package:island/pods/lifecycle.dart";
import "package:island/pods/chat/messages_notifier.dart"; import "package:island/pods/chat/messages_notifier.dart";
@@ -11,6 +12,8 @@ import "package:riverpod_annotation/riverpod_annotation.dart";
part 'chat_subscribe.g.dart'; part 'chat_subscribe.g.dart';
final currentSubscribedChatIdProvider = StateProvider<String?>((ref) => null);
@riverpod @riverpod
class ChatSubscribeNotifier extends _$ChatSubscribeNotifier { class ChatSubscribeNotifier extends _$ChatSubscribeNotifier {
late final String _roomId; late final String _roomId;
@@ -55,6 +58,10 @@ class ChatSubscribeNotifier extends _$ChatSubscribeNotifier {
), ),
); );
Future.microtask(
() => ref.read(currentSubscribedChatIdProvider.notifier).state = roomId,
);
// Send initial read receipt // Send initial read receipt
sendReadReceipt(); sendReadReceipt();
@@ -123,6 +130,7 @@ class ChatSubscribeNotifier extends _$ChatSubscribeNotifier {
// Cleanup on dispose // Cleanup on dispose
ref.onDispose(() { ref.onDispose(() {
ref.read(currentSubscribedChatIdProvider.notifier).state = null;
wsState.sendMessage( wsState.sendMessage(
jsonEncode( jsonEncode(
WebSocketPacket( WebSocketPacket(

View File

@@ -2,6 +2,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:island/models/chat.dart'; import 'package:island/models/chat.dart';
import 'package:island/pods/network.dart'; import 'package:island/pods/network.dart';
import 'package:island/pods/websocket.dart'; import 'package:island/pods/websocket.dart';
import 'package:island/pods/chat/chat_subscribe.dart';
part 'chat_summary.g.dart'; part 'chat_summary.g.dart';
@@ -55,10 +56,12 @@ class ChatSummary extends _$ChatSummary {
state.whenData((summaries) { state.whenData((summaries) {
final summary = summaries[chatId]; final summary = summaries[chatId];
if (summary != null) { if (summary != null) {
final currentSubscribed = ref.read(currentSubscribedChatIdProvider);
final increment = (chatId != currentSubscribed) ? 1 : 0;
state = AsyncData({ state = AsyncData({
...summaries, ...summaries,
chatId: SnChatSummary( chatId: SnChatSummary(
unreadCount: summary.unreadCount + 1, unreadCount: summary.unreadCount + increment,
lastMessage: message, lastMessage: message,
), ),
}); });

View File

@@ -102,9 +102,10 @@ final apiClientProvider = Provider<Dio>((ref) {
TalkerDioLogger( TalkerDioLogger(
talker: talker, talker: talker,
settings: const TalkerDioLoggerSettings( settings: const TalkerDioLoggerSettings(
printRequestHeaders: true, printRequestHeaders: false,
printResponseHeaders: true, printResponseHeaders: false,
printResponseMessage: true, printResponseMessage: false,
printRequestData: false,
), ),
), ),
]); ]);