This commit is contained in:
lollipopkit🏳️‍⚧️
2025-08-31 23:59:53 +08:00
parent 5291d316a2
commit 3b7fdf36fb
32 changed files with 726 additions and 687 deletions

View File

@@ -21,7 +21,7 @@ import 'package:server_box/data/model/server/sensors.dart';
import 'package:server_box/data/model/server/server.dart' as server_model;
import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/model/server/system.dart';
import 'package:server_box/data/provider/server.dart';
import 'package:server_box/data/provider/server/single.dart';
import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/page/pve.dart';
import 'package:server_box/view/page/server/edit.dart';
@@ -86,7 +86,7 @@ class _ServerDetailPageState extends ConsumerState<ServerDetailPage> with Single
@override
Widget build(BuildContext context) {
final serverState = ref.watch(individualServerNotifierProvider(widget.args.spi.id));
final serverState = ref.watch(serverNotifierProvider(widget.args.spi.id));
if (serverState.client == null) {
return Scaffold(
appBar: CustomAppBar(),

View File

@@ -17,7 +17,7 @@ import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/model/server/system.dart';
import 'package:server_box/data/model/server/wol_cfg.dart';
import 'package:server_box/data/provider/private_key.dart';
import 'package:server_box/data/provider/server.dart';
import 'package:server_box/data/provider/server/all.dart';
import 'package:server_box/data/res/store.dart';
import 'package:server_box/data/store/server.dart';
import 'package:server_box/view/page/private_key/edit.dart';
@@ -172,7 +172,7 @@ class _ServerEditPageState extends ConsumerState<ServerEditPage> with AfterLayou
hint: 'root',
suggestion: false,
),
TagTile(tags: _tags, allTags: ref.watch(serverNotifierProvider).tags).cardx,
TagTile(tags: _tags, allTags: ref.watch(serversNotifierProvider).tags).cardx,
ListTile(
title: Text(l10n.autoConnect),
trailing: _autoConnect.listenVal(
@@ -492,7 +492,7 @@ class _ServerEditPageState extends ConsumerState<ServerEditPage> with AfterLayou
Widget _buildJumpServer() {
const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7);
final srvs = ref
.watch(serverNotifierProvider)
.watch(serversNotifierProvider)
.servers
.values
.where((e) => e.jumpId == null)
@@ -587,7 +587,7 @@ class _ServerEditPageState extends ConsumerState<ServerEditPage> with AfterLayou
actions: Btn.ok(
onTap: () async {
context.pop();
ref.read(serverNotifierProvider.notifier).delServer(spi!.id);
ref.read(serversNotifierProvider.notifier).delServer(spi!.id);
context.pop(true);
},
red: true,
@@ -683,7 +683,7 @@ extension _Actions on _ServerEditPageState {
if (shouldImport == true) {
for (final server in resolved) {
ref.read(serverNotifierProvider.notifier).addServer(server);
ref.read(serversNotifierProvider.notifier).addServer(server);
}
context.showSnackBar(l10n.sshConfigImported('${resolved.length}'));
}
@@ -802,9 +802,9 @@ extension _Actions on _ServerEditPageState {
context.showSnackBar('${l10n.sameIdServerExist}: ${spi.id}');
return;
}
ref.read(serverNotifierProvider.notifier).addServer(spi);
ref.read(serversNotifierProvider.notifier).addServer(spi);
} else {
ref.read(serverNotifierProvider.notifier).updateServer(this.spi!, spi);
ref.read(serversNotifierProvider.notifier).updateServer(this.spi!, spi);
}
context.pop();
@@ -860,7 +860,7 @@ extension _Utils on _ServerEditPageState {
// Import without asking again since user already gave permission
for (final server in resolved) {
ref.read(serverNotifierProvider.notifier).addServer(server);
ref.read(serversNotifierProvider.notifier).addServer(server);
}
context.showSnackBar(l10n.sshConfigImported('${resolved.length}'));
}

View File

@@ -30,16 +30,16 @@ extension on _ServerPageState {
const Icon(Icons.refresh, size: 21, color: Colors.grey),
() {
TryLimiter.reset(s.spi.id);
ref.read(serverNotifierProvider.notifier).refresh(spi: s.spi);
ref.read(serversNotifierProvider.notifier).refresh(spi: s.spi);
},
),
ServerConn.disconnected => (
const Icon(MingCute.link_3_line, size: 19, color: Colors.grey),
() => ref.read(serverNotifierProvider.notifier).refresh(spi: s.spi),
() => ref.read(serversNotifierProvider.notifier).refresh(spi: s.spi),
),
ServerConn.finished => (
const Icon(MingCute.unlink_2_line, size: 17, color: Colors.grey),
() => ref.read(serverNotifierProvider.notifier).closeServer(id: s.spi.id),
() => ref.read(serversNotifierProvider.notifier).closeServer(id: s.spi.id),
),
};
@@ -106,7 +106,7 @@ ${ss.err?.message ?? 'null'}
Widget _buildNet(ServerStatus ss, String id) {
final cardNoti = _getCardNoti(id);
final type = cardNoti.value.net ?? Stores.setting.netViewType.fetch();
final device = ref.watch(serverNotifierProvider).servers[id]?.custom?.netDev;
final device = ref.watch(serversNotifierProvider).servers[id]?.custom?.netDev;
final (a, b) = type.build(ss, dev: device);
return AnimatedSwitcher(
duration: const Duration(milliseconds: 377),

View File

@@ -26,7 +26,7 @@ extension on _ServerPageState {
}
Widget _buildLandscapeBody() {
final serverState = ref.watch(serverNotifierProvider);
final serverState = ref.watch(serversNotifierProvider);
final order = serverState.serverOrder;
if (order.isEmpty) {
@@ -37,7 +37,7 @@ extension on _ServerPageState {
itemCount: order.length,
itemBuilder: (_, idx) {
final id = order[idx];
final srv = ref.watch(individualServerNotifierProvider(id));
final srv = ref.watch(serverNotifierProvider(id));
final title = _buildServerCardTitle(srv);
final List<Widget> children = [title, _buildNormalCard(srv.status, srv.spi)];

View File

@@ -17,7 +17,8 @@ import 'package:server_box/data/model/app/scripts/shell_func.dart';
import 'package:server_box/data/model/server/server.dart';
import 'package:server_box/data/model/server/server_private_info.dart';
import 'package:server_box/data/model/server/try_limiter.dart';
import 'package:server_box/data/provider/server.dart';
import 'package:server_box/data/provider/server/all.dart';
import 'package:server_box/data/provider/server/single.dart';
import 'package:server_box/data/res/build_data.dart';
import 'package:server_box/data/res/store.dart';
import 'package:server_box/view/page/server/detail/view.dart';
@@ -73,7 +74,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
@override
void initState() {
super.initState();
_tags = ValueNotifier(ref.read(serverNotifierProvider).tags);
_tags = ValueNotifier(ref.read(serversNotifierProvider).tags);
_startAvoidJitterTimer();
}
@@ -88,7 +89,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
Widget build(BuildContext context) {
super.build(context);
// Listen to provider changes and update the ValueNotifier
ref.listen(serverNotifierProvider, (previous, next) {
ref.listen(serversNotifierProvider, (previous, next) {
_tags.value = next.tags;
});
return OrientationBuilder(
@@ -132,7 +133,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
Widget _buildPortrait() {
// final isMobile = ResponsiveBreakpoints.of(context).isMobile;
final serverState = ref.watch(serverNotifierProvider);
final serverState = ref.watch(serversNotifierProvider);
return _tag.listenVal((val) {
final filtered = _filterServers(serverState.serverOrder);
final child = _buildScaffold(_buildBodySmall(filtered: filtered));
@@ -182,7 +183,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
// Last item is just spacing
if (index == lens) return SizedBox(height: 77);
final individualState = ref.watch(individualServerNotifierProvider(serversInThisColumn[index]));
final individualState = ref.watch(serverNotifierProvider(serversInThisColumn[index]));
return _buildEachServerCard(individualState);
},
@@ -338,8 +339,8 @@ class _ServerPageState extends ConsumerState<ServerPage>
@override
Future<void> afterFirstLayout(BuildContext context) async {
ref.read(serverNotifierProvider.notifier).refresh();
ref.read(serverNotifierProvider.notifier).startAutoRefresh();
ref.read(serversNotifierProvider.notifier).refresh();
ref.read(serversNotifierProvider.notifier).startAutoRefresh();
}
static const _kCardHeightMin = 23.0;

View File

@@ -98,7 +98,7 @@ extension _Utils on _ServerPageState {
final tag = _tag.value;
if (tag == TagSwitcher.kDefaultTag) return order;
return order.where((e) {
final tags = ref.read(serverNotifierProvider).servers[e]?.tags;
final tags = ref.read(serversNotifierProvider).servers[e]?.tags;
if (tags == null) return false;
return tags.contains(tag);
}).toList();