This commit is contained in:
2025-09-04 22:10:00 +08:00
parent c527b5e67c
commit 3b375abc09
18 changed files with 150 additions and 6 deletions

View File

@@ -1,15 +1,18 @@
import 'dart:async';
import 'package:bitsdojo_window/bitsdojo_window.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:island/pods/websocket.dart';
import 'package:island/screens/tray_manager.dart';
import 'package:island/services/notify.dart';
import 'package:island/services/sharing_intent.dart';
import 'package:island/services/update_service.dart';
import 'package:island/widgets/content/network_status_sheet.dart';
import 'package:island/widgets/tour/tour.dart';
import 'package:tray_manager/tray_manager.dart';
class AppWrapper extends HookConsumerWidget {
class AppWrapper extends HookConsumerWidget with TrayListener {
final Widget child;
const AppWrapper({super.key, required this.child});
@@ -20,10 +23,16 @@ class AppWrapper extends HookConsumerWidget {
Future(() {
if (context.mounted) ntySubs = setupNotificationListener(context, ref);
});
final sharingService = SharingIntentService();
sharingService.initialize(context);
UpdateService().checkForUpdates(context);
TrayService.instance.initialize(this);
return () {
TrayService.instance.dispose(this);
sharingService.dispose();
ntySubs?.cancel();
};
@@ -52,4 +61,27 @@ class AppWrapper extends HookConsumerWidget {
return TourTriggerWidget(key: UniqueKey(), child: child);
}
void _trayIconPrimaryAction() {
appWindow.show();
}
void _trayIconSecondaryAction() {
trayManager.popUpContextMenu();
}
@override
void onTrayIconMouseUp() {
_trayIconPrimaryAction();
}
@override
void onTrayIconRightMouseDown() {
_trayIconSecondaryAction();
}
@override
void onTrayMenuItemClick(MenuItem menuItem) {
TrayService.instance.handleAction(menuItem);
}
}