show cm after receiving textchat when cm hidden

Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
21pages 2023-06-20 12:43:38 +08:00
parent 2e5eb86c97
commit 79fc51a1b5
3 changed files with 44 additions and 21 deletions

View File

@ -224,36 +224,54 @@ void runConnectionManagerScreen(bool hide) async {
MyTheme.currentThemeMode(), MyTheme.currentThemeMode(),
); );
if (hide) { if (hide) {
hideCmWindow(); await hideCmWindow(isStartup: true);
} else { } else {
showCmWindow(); await showCmWindow(isStartup: true);
} }
// Start the uni links handler and redirect links to Native, not for Flutter. // Start the uni links handler and redirect links to Native, not for Flutter.
_uniLinkSubscription = listenUniLinks(handleByFlutter: false); _uniLinkSubscription = listenUniLinks(handleByFlutter: false);
} }
void showCmWindow() { showCmWindow({bool isStartup = false}) async {
WindowOptions windowOptions = getHiddenTitleBarWindowOptions( if (isStartup) {
size: kConnectionManagerWindowSizeClosedChat); WindowOptions windowOptions = getHiddenTitleBarWindowOptions(
windowManager.waitUntilReadyToShow(windowOptions, () async { size: kConnectionManagerWindowSizeClosedChat);
bind.mainHideDocker(); windowManager.waitUntilReadyToShow(windowOptions, () async {
await windowManager.show(); bind.mainHideDocker();
await Future.wait([windowManager.focus(), windowManager.setOpacity(1)]); await windowManager.show();
// ensure initial window size to be changed await Future.wait([windowManager.focus(), windowManager.setOpacity(1)]);
await windowManager.setSizeAlignment( // ensure initial window size to be changed
kConnectionManagerWindowSizeClosedChat, Alignment.topRight); await windowManager.setSizeAlignment(
}); kConnectionManagerWindowSizeClosedChat, Alignment.topRight);
});
} else {
if (await windowManager.getOpacity() != 1) {
await windowManager.setOpacity(1);
await windowManager.focus();
await windowManager.minimize(); //needed
await windowManager.setSizeAlignment(
kConnectionManagerWindowSizeClosedChat, Alignment.topRight);
window_on_top(null);
}
}
} }
void hideCmWindow() { hideCmWindow({bool isStartup = false}) async {
WindowOptions windowOptions = getHiddenTitleBarWindowOptions( if (isStartup) {
size: kConnectionManagerWindowSizeClosedChat); WindowOptions windowOptions = getHiddenTitleBarWindowOptions(
windowManager.setOpacity(0); size: kConnectionManagerWindowSizeClosedChat);
windowManager.waitUntilReadyToShow(windowOptions, () async { windowManager.setOpacity(0);
windowManager.waitUntilReadyToShow(windowOptions, () async {
bind.mainHideDocker();
await windowManager.minimize();
await windowManager.hide();
});
} else {
await windowManager.setOpacity(0);
bind.mainHideDocker(); bind.mainHideDocker();
await windowManager.minimize(); await windowManager.minimize();
await windowManager.hide(); await windowManager.hide();
}); }
} }
void _runApp( void _runApp(

View File

@ -13,6 +13,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import '../consts.dart'; import '../consts.dart';
import '../common.dart'; import '../common.dart';
import '../common/widgets/overlay.dart'; import '../common/widgets/overlay.dart';
import '../main.dart';
import 'model.dart'; import 'model.dart';
class MessageBody { class MessageBody {
@ -288,6 +289,10 @@ class ChatModel with ChangeNotifier {
return; return;
} }
if (text.isEmpty) return; if (text.isEmpty) return;
if (desktopType == DesktopType.cm) {
await showCmWindow();
}
// mobile: first message show overlay icon // mobile: first message show overlay icon
if (!isDesktop && chatIconOverlayEntry == null) { if (!isDesktop && chatIconOverlayEntry == null) {
showChatIconOverlay(); showChatIconOverlay();

View File

@ -224,9 +224,9 @@ class ServerModel with ChangeNotifier {
_hideCm = hideCm; _hideCm = hideCm;
if (desktopType == DesktopType.cm) { if (desktopType == DesktopType.cm) {
if (hideCm) { if (hideCm) {
hideCmWindow(); await hideCmWindow();
} else { } else {
showCmWindow(); await showCmWindow();
} }
} }
update = true; update = true;