migrate: riverpod 3

This commit is contained in:
lollipopkit🏳️‍⚧️
2025-10-08 17:03:13 +08:00
parent f68c4a851b
commit da8517bcf7
51 changed files with 840 additions and 884 deletions

View File

@@ -55,9 +55,9 @@ abstract class BackupV2 with _$BackupV2 implements Mergeable {
await Mergeable.mergeStore(backupData: history, store: Stores.history, force: force);
await Mergeable.mergeStore(backupData: settings, store: Stores.setting, force: force);
if (serverChanged) GlobalRef.gRef?.read(serversNotifierProvider.notifier).reload();
if (snippetChanged) GlobalRef.gRef?.read(snippetNotifierProvider.notifier).reload();
if (keyChanged) GlobalRef.gRef?.read(privateKeyNotifierProvider.notifier).reload();
if (serverChanged) GlobalRef.gRef?.read(serversProvider.notifier).reload();
if (snippetChanged) GlobalRef.gRef?.read(snippetProvider.notifier).reload();
if (keyChanged) GlobalRef.gRef?.read(privateKeyProvider.notifier).reload();
_loggerV2.info('Merge completed');
}

View File

@@ -20,11 +20,11 @@ ServerCustom _$ServerCustomFromJson(Map<String, dynamic> json) => ServerCustom(
Map<String, dynamic> _$ServerCustomToJson(ServerCustom instance) =>
<String, dynamic>{
if (instance.pveAddr case final value?) 'pveAddr': value,
'pveAddr': ?instance.pveAddr,
'pveIgnoreCert': instance.pveIgnoreCert,
if (instance.cmds case final value?) 'cmds': value,
if (instance.preferTempDev case final value?) 'preferTempDev': value,
if (instance.logoUrl case final value?) 'logoUrl': value,
if (instance.netDev case final value?) 'netDev': value,
if (instance.scriptDir case final value?) 'scriptDir': value,
'cmds': ?instance.cmds,
'preferTempDev': ?instance.preferTempDev,
'logoUrl': ?instance.logoUrl,
'netDev': ?instance.netDev,
'scriptDir': ?instance.scriptDir,
};

View File

@@ -41,19 +41,18 @@ Map<String, dynamic> _$SpiToJson(_Spi instance) => <String, dynamic>{
'ip': instance.ip,
'port': instance.port,
'user': instance.user,
if (instance.pwd case final value?) 'pwd': value,
if (instance.keyId case final value?) 'pubKeyId': value,
if (instance.tags case final value?) 'tags': value,
if (instance.alterUrl case final value?) 'alterUrl': value,
'pwd': ?instance.pwd,
'pubKeyId': ?instance.keyId,
'tags': ?instance.tags,
'alterUrl': ?instance.alterUrl,
'autoConnect': instance.autoConnect,
if (instance.jumpId case final value?) 'jumpId': value,
if (instance.custom case final value?) 'custom': value,
if (instance.wolCfg case final value?) 'wolCfg': value,
if (instance.envs case final value?) 'envs': value,
'jumpId': ?instance.jumpId,
'custom': ?instance.custom,
'wolCfg': ?instance.wolCfg,
'envs': ?instance.envs,
'id': instance.id,
if (_$SystemTypeEnumMap[instance.customSystemType] case final value?)
'customSystemType': value,
if (instance.disabledCmdTypes case final value?) 'disabledCmdTypes': value,
'customSystemType': ?_$SystemTypeEnumMap[instance.customSystemType],
'disabledCmdTypes': ?instance.disabledCmdTypes,
};
const _$SystemTypeEnumMap = {

View File

@@ -16,5 +16,5 @@ Map<String, dynamic> _$WakeOnLanCfgToJson(WakeOnLanCfg instance) =>
<String, dynamic>{
'mac': instance.mac,
'ip': instance.ip,
if (instance.pwd case final value?) 'pwd': value,
'pwd': ?instance.pwd,
};

View File

@@ -6,20 +6,57 @@ part of 'app.dart';
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(AppStates)
const appStatesProvider = AppStatesProvider._();
final class AppStatesProvider extends $NotifierProvider<AppStates, AppState> {
const AppStatesProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'appStatesProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$appStatesHash();
@$internal
@override
AppStates create() => AppStates();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(AppState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<AppState>(value),
);
}
}
String _$appStatesHash() => r'ef96f10f6fff0f3dd6d3128ebf070ad79cbc8bc9';
/// See also [AppStates].
@ProviderFor(AppStates)
final appStatesProvider = NotifierProvider<AppStates, AppState>.internal(
AppStates.new,
name: r'appStatesProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$appStatesHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$AppStates = Notifier<AppState>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$AppStates extends $Notifier<AppState> {
AppState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<AppState, AppState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<AppState, AppState>,
AppState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -6,35 +6,98 @@ part of 'container.dart';
// RiverpodGenerator
// **************************************************************************
String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd';
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Copied from Dart SDK
class _SystemHash {
_SystemHash._();
@ProviderFor(ContainerNotifier)
const containerProvider = ContainerNotifierFamily._();
static int combine(int hash, int value) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + value);
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
final class ContainerNotifierProvider
extends $NotifierProvider<ContainerNotifier, ContainerState> {
const ContainerNotifierProvider._({
required ContainerNotifierFamily super.from,
required (SSHClient?, String, String, BuildContext) super.argument,
}) : super(
retry: null,
name: r'containerProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$containerNotifierHash();
@override
String toString() {
return r'containerProvider'
''
'$argument';
}
static int finish(int hash) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
// ignore: parameter_assignments
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
@$internal
@override
ContainerNotifier create() => ContainerNotifier();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(ContainerState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<ContainerState>(value),
);
}
@override
bool operator ==(Object other) {
return other is ContainerNotifierProvider && other.argument == argument;
}
@override
int get hashCode {
return argument.hashCode;
}
}
abstract class _$ContainerNotifier
extends BuildlessAutoDisposeNotifier<ContainerState> {
late final SSHClient? client;
late final String userName;
late final String hostId;
late final BuildContext context;
String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd';
final class ContainerNotifierFamily extends $Family
with
$ClassFamilyOverride<
ContainerNotifier,
ContainerState,
ContainerState,
ContainerState,
(SSHClient?, String, String, BuildContext)
> {
const ContainerNotifierFamily._()
: super(
retry: null,
name: r'containerProvider',
dependencies: null,
$allTransitiveDependencies: null,
isAutoDispose: true,
);
ContainerNotifierProvider call(
SSHClient? client,
String userName,
String hostId,
BuildContext context,
) => ContainerNotifierProvider._(
argument: (client, userName, hostId, context),
from: this,
);
@override
String toString() => r'containerProvider';
}
abstract class _$ContainerNotifier extends $Notifier<ContainerState> {
late final _$args = ref.$arg as (SSHClient?, String, String, BuildContext);
SSHClient? get client => _$args.$1;
String get userName => _$args.$2;
String get hostId => _$args.$3;
BuildContext get context => _$args.$4;
ContainerState build(
SSHClient? client,
@@ -42,187 +105,19 @@ abstract class _$ContainerNotifier
String hostId,
BuildContext context,
);
}
/// See also [ContainerNotifier].
@ProviderFor(ContainerNotifier)
const containerNotifierProvider = ContainerNotifierFamily();
/// See also [ContainerNotifier].
class ContainerNotifierFamily extends Family<ContainerState> {
/// See also [ContainerNotifier].
const ContainerNotifierFamily();
/// See also [ContainerNotifier].
ContainerNotifierProvider call(
SSHClient? client,
String userName,
String hostId,
BuildContext context,
) {
return ContainerNotifierProvider(client, userName, hostId, context);
}
@$mustCallSuper
@override
ContainerNotifierProvider getProviderOverride(
covariant ContainerNotifierProvider provider,
) {
return call(
provider.client,
provider.userName,
provider.hostId,
provider.context,
);
}
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'containerNotifierProvider';
}
/// See also [ContainerNotifier].
class ContainerNotifierProvider
extends AutoDisposeNotifierProviderImpl<ContainerNotifier, ContainerState> {
/// See also [ContainerNotifier].
ContainerNotifierProvider(
SSHClient? client,
String userName,
String hostId,
BuildContext context,
) : this._internal(
() => ContainerNotifier()
..client = client
..userName = userName
..hostId = hostId
..context = context,
from: containerNotifierProvider,
name: r'containerNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$containerNotifierHash,
dependencies: ContainerNotifierFamily._dependencies,
allTransitiveDependencies:
ContainerNotifierFamily._allTransitiveDependencies,
client: client,
userName: userName,
hostId: hostId,
context: context,
);
ContainerNotifierProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.client,
required this.userName,
required this.hostId,
required this.context,
}) : super.internal();
final SSHClient? client;
final String userName;
final String hostId;
final BuildContext context;
@override
ContainerState runNotifierBuild(covariant ContainerNotifier notifier) {
return notifier.build(client, userName, hostId, context);
}
@override
Override overrideWith(ContainerNotifier Function() create) {
return ProviderOverride(
origin: this,
override: ContainerNotifierProvider._internal(
() => create()
..client = client
..userName = userName
..hostId = hostId
..context = context,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
client: client,
userName: userName,
hostId: hostId,
context: context,
),
);
}
@override
AutoDisposeNotifierProviderElement<ContainerNotifier, ContainerState>
createElement() {
return _ContainerNotifierProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is ContainerNotifierProvider &&
other.client == client &&
other.userName == userName &&
other.hostId == hostId &&
other.context == context;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, client.hashCode);
hash = _SystemHash.combine(hash, userName.hashCode);
hash = _SystemHash.combine(hash, hostId.hashCode);
hash = _SystemHash.combine(hash, context.hashCode);
return _SystemHash.finish(hash);
void runBuild() {
final created = build(_$args.$1, _$args.$2, _$args.$3, _$args.$4);
final ref = this.ref as $Ref<ContainerState, ContainerState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<ContainerState, ContainerState>,
ContainerState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin ContainerNotifierRef on AutoDisposeNotifierProviderRef<ContainerState> {
/// The parameter `client` of this provider.
SSHClient? get client;
/// The parameter `userName` of this provider.
String get userName;
/// The parameter `hostId` of this provider.
String get hostId;
/// The parameter `context` of this provider.
BuildContext get context;
}
class _ContainerNotifierProviderElement
extends
AutoDisposeNotifierProviderElement<ContainerNotifier, ContainerState>
with ContainerNotifierRef {
_ContainerNotifierProviderElement(super.provider);
@override
SSHClient? get client => (origin as ContainerNotifierProvider).client;
@override
String get userName => (origin as ContainerNotifierProvider).userName;
@override
String get hostId => (origin as ContainerNotifierProvider).hostId;
@override
BuildContext get context => (origin as ContainerNotifierProvider).context;
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package

View File

@@ -6,22 +6,59 @@ part of 'private_key.dart';
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(PrivateKeyNotifier)
const privateKeyProvider = PrivateKeyNotifierProvider._();
final class PrivateKeyNotifierProvider
extends $NotifierProvider<PrivateKeyNotifier, PrivateKeyState> {
const PrivateKeyNotifierProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'privateKeyProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$privateKeyNotifierHash();
@$internal
@override
PrivateKeyNotifier create() => PrivateKeyNotifier();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(PrivateKeyState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<PrivateKeyState>(value),
);
}
}
String _$privateKeyNotifierHash() =>
r'12edd05dca29d1cbc9e2a3e047c3d417d22f7bb7';
/// See also [PrivateKeyNotifier].
@ProviderFor(PrivateKeyNotifier)
final privateKeyNotifierProvider =
NotifierProvider<PrivateKeyNotifier, PrivateKeyState>.internal(
PrivateKeyNotifier.new,
name: r'privateKeyNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$privateKeyNotifierHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$PrivateKeyNotifier = Notifier<PrivateKeyState>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$PrivateKeyNotifier extends $Notifier<PrivateKeyState> {
PrivateKeyState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<PrivateKeyState, PrivateKeyState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<PrivateKeyState, PrivateKeyState>,
PrivateKeyState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -1,4 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_riverpod/misc.dart';
import 'package:server_box/data/provider/app.dart';
import 'package:server_box/data/provider/private_key.dart';
@@ -10,7 +11,7 @@ import 'package:server_box/data/provider/snippet.dart';
/// ref.useNotifier, ref.readProvider, ref.watchProvider
///
/// Usage:
/// - `providers.read.server` -> `ref.read(serversNotifierProvider)`
/// - `providers.read.server` -> `ref.read(serversProvider)`
/// - `providers.use.snippet` -> `ref.read(snippetsNotifierProvider.notifier)`
extension RiverpodNotifiers on ConsumerState {
@@ -45,11 +46,11 @@ final class ReadMyProvider {
T call<T>(ProviderBase<T> provider) => ref.read(provider);
// Specific provider getters
ServersState get server => ref.read(serversNotifierProvider);
SnippetState get snippet => ref.read(snippetNotifierProvider);
ServersState get server => ref.read(serversProvider);
SnippetState get snippet => ref.read(snippetProvider);
AppState get app => ref.read(appStatesProvider);
PrivateKeyState get privateKey => ref.read(privateKeyNotifierProvider);
SftpState get sftp => ref.read(sftpNotifierProvider);
PrivateKeyState get privateKey => ref.read(privateKeyProvider);
SftpState get sftp => ref.read(sftpProvider);
}
final class WatchMyProvider {
@@ -59,11 +60,11 @@ final class WatchMyProvider {
T call<T>(ProviderBase<T> provider) => ref.watch(provider);
// Specific provider getters
ServersState get server => ref.watch(serversNotifierProvider);
SnippetState get snippet => ref.watch(snippetNotifierProvider);
ServersState get server => ref.watch(serversProvider);
SnippetState get snippet => ref.watch(snippetProvider);
AppState get app => ref.watch(appStatesProvider);
PrivateKeyState get privateKey => ref.watch(privateKeyNotifierProvider);
SftpState get sftp => ref.watch(sftpNotifierProvider);
PrivateKeyState get privateKey => ref.watch(privateKeyProvider);
SftpState get sftp => ref.watch(sftpProvider);
}
final class UseNotifierMyProvider {
@@ -74,9 +75,9 @@ final class UseNotifierMyProvider {
ref.read(provider.notifier);
// Specific provider notifier getters
ServersNotifier get server => ref.read(serversNotifierProvider.notifier);
SnippetNotifier get snippet => ref.read(snippetNotifierProvider.notifier);
ServersNotifier get server => ref.read(serversProvider.notifier);
SnippetNotifier get snippet => ref.read(snippetProvider.notifier);
AppStates get app => ref.read(appStatesProvider.notifier);
PrivateKeyNotifier get privateKey => ref.read(privateKeyNotifierProvider.notifier);
SftpNotifier get sftp => ref.read(sftpNotifierProvider.notifier);
PrivateKeyNotifier get privateKey => ref.read(privateKeyProvider.notifier);
SftpNotifier get sftp => ref.read(sftpProvider.notifier);
}

View File

@@ -45,7 +45,7 @@ class PveNotifier extends _$PveNotifier {
@override
PveState build(Spi spiParam) {
spi = spiParam;
final serverState = ref.watch(serverNotifierProvider(spi.id));
final serverState = ref.watch(serverProvider(spi.id));
final client = serverState.client;
if (client == null) {
return const PveState(error: PveErr(type: PveErrType.net, message: 'Server client is null'));

View File

@@ -6,155 +6,96 @@ part of 'pve.dart';
// RiverpodGenerator
// **************************************************************************
String _$pveNotifierHash() => r'b5da7240db1b9ee7d61f238cebca45821b7a3445';
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Copied from Dart SDK
class _SystemHash {
_SystemHash._();
static int combine(int hash, int value) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + value);
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
}
static int finish(int hash) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
// ignore: parameter_assignments
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
}
}
abstract class _$PveNotifier extends BuildlessAutoDisposeNotifier<PveState> {
late final Spi spiParam;
PveState build(Spi spiParam);
}
/// See also [PveNotifier].
@ProviderFor(PveNotifier)
const pveNotifierProvider = PveNotifierFamily();
const pveProvider = PveNotifierFamily._();
/// See also [PveNotifier].
class PveNotifierFamily extends Family<PveState> {
/// See also [PveNotifier].
const PveNotifierFamily();
final class PveNotifierProvider
extends $NotifierProvider<PveNotifier, PveState> {
const PveNotifierProvider._({
required PveNotifierFamily super.from,
required Spi super.argument,
}) : super(
retry: null,
name: r'pveProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
/// See also [PveNotifier].
PveNotifierProvider call(Spi spiParam) {
return PveNotifierProvider(spiParam);
@override
String debugGetCreateSourceHash() => _$pveNotifierHash();
@override
String toString() {
return r'pveProvider'
''
'($argument)';
}
@$internal
@override
PveNotifierProvider getProviderOverride(
covariant PveNotifierProvider provider,
) {
return call(provider.spiParam);
}
PveNotifier create() => PveNotifier();
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'pveNotifierProvider';
}
/// See also [PveNotifier].
class PveNotifierProvider
extends AutoDisposeNotifierProviderImpl<PveNotifier, PveState> {
/// See also [PveNotifier].
PveNotifierProvider(Spi spiParam)
: this._internal(
() => PveNotifier()..spiParam = spiParam,
from: pveNotifierProvider,
name: r'pveNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$pveNotifierHash,
dependencies: PveNotifierFamily._dependencies,
allTransitiveDependencies: PveNotifierFamily._allTransitiveDependencies,
spiParam: spiParam,
);
PveNotifierProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.spiParam,
}) : super.internal();
final Spi spiParam;
@override
PveState runNotifierBuild(covariant PveNotifier notifier) {
return notifier.build(spiParam);
}
@override
Override overrideWith(PveNotifier Function() create) {
return ProviderOverride(
/// {@macro riverpod.override_with_value}
Override overrideWithValue(PveState value) {
return $ProviderOverride(
origin: this,
override: PveNotifierProvider._internal(
() => create()..spiParam = spiParam,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
spiParam: spiParam,
),
providerOverride: $SyncValueProvider<PveState>(value),
);
}
@override
AutoDisposeNotifierProviderElement<PveNotifier, PveState> createElement() {
return _PveNotifierProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is PveNotifierProvider && other.spiParam == spiParam;
return other is PveNotifierProvider && other.argument == argument;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, spiParam.hashCode);
return _SystemHash.finish(hash);
return argument.hashCode;
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin PveNotifierRef on AutoDisposeNotifierProviderRef<PveState> {
/// The parameter `spiParam` of this provider.
Spi get spiParam;
}
String _$pveNotifierHash() => r'b5da7240db1b9ee7d61f238cebca45821b7a3445';
class _PveNotifierProviderElement
extends AutoDisposeNotifierProviderElement<PveNotifier, PveState>
with PveNotifierRef {
_PveNotifierProviderElement(super.provider);
final class PveNotifierFamily extends $Family
with $ClassFamilyOverride<PveNotifier, PveState, PveState, PveState, Spi> {
const PveNotifierFamily._()
: super(
retry: null,
name: r'pveProvider',
dependencies: null,
$allTransitiveDependencies: null,
isAutoDispose: true,
);
PveNotifierProvider call(Spi spiParam) =>
PveNotifierProvider._(argument: spiParam, from: this);
@override
Spi get spiParam => (origin as PveNotifierProvider).spiParam;
String toString() => r'pveProvider';
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$PveNotifier extends $Notifier<PveState> {
late final _$args = ref.$arg as Spi;
Spi get spiParam => _$args;
PveState build(Spi spiParam);
@$mustCallSuper
@override
void runBuild() {
final created = build(_$args);
final ref = this.ref as $Ref<PveState, PveState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<PveState, PveState>,
PveState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -98,7 +98,7 @@ class ServersNotifier extends _$ServersNotifier {
if (spi != null) {
final newManualDisconnected = Set<String>.from(state.manualDisconnectedIds)..remove(spi.id);
state = state.copyWith(manualDisconnectedIds: newManualDisconnected);
final serverNotifier = ref.read(serverNotifierProvider(spi.id).notifier);
final serverNotifier = ref.read(serverProvider(spi.id).notifier);
await serverNotifier.refresh();
return;
}
@@ -109,19 +109,19 @@ class ServersNotifier extends _$ServersNotifier {
final spi = entry.value;
if (onlyFailed) {
final serverState = ref.read(serverNotifierProvider(serverId));
final serverState = ref.read(serverProvider(serverId));
if (serverState.conn != ServerConn.failed) return;
TryLimiter.reset(serverId);
}
if (state.manualDisconnectedIds.contains(serverId)) return;
final serverState = ref.read(serverNotifierProvider(serverId));
final serverState = ref.read(serverProvider(serverId));
if (serverState.conn == ServerConn.disconnected && !spi.autoConnect) {
return;
}
final serverNotifier = ref.read(serverNotifierProvider(serverId).notifier);
final serverNotifier = ref.read(serverProvider(serverId).notifier);
await serverNotifier.refresh();
}),
);
@@ -153,7 +153,7 @@ class ServersNotifier extends _$ServersNotifier {
void setDisconnected() {
for (final serverId in state.servers.keys) {
final serverNotifier = ref.read(serverNotifierProvider(serverId).notifier);
final serverNotifier = ref.read(serverProvider(serverId).notifier);
serverNotifier.updateConnection(ServerConn.disconnected);
// Update SSH session status to disconnected
@@ -180,7 +180,7 @@ class ServersNotifier extends _$ServersNotifier {
return;
}
final serverNotifier = ref.read(serverNotifierProvider(id).notifier);
final serverNotifier = ref.read(serverProvider(id).notifier);
serverNotifier.closeConnection();
final newManualDisconnected = Set<String>.from(state.manualDisconnectedIds)..add(id);
@@ -259,7 +259,7 @@ class ServersNotifier extends _$ServersNotifier {
} else {
newServers[old.id] = newSpi;
// Update SPI in the corresponding IndividualServerNotifier
final serverNotifier = ref.read(serverNotifierProvider(old.id).notifier);
final serverNotifier = ref.read(serverProvider(old.id).notifier);
serverNotifier.updateSpi(newSpi);
}

View File

@@ -6,21 +6,58 @@ part of 'all.dart';
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(ServersNotifier)
const serversProvider = ServersNotifierProvider._();
final class ServersNotifierProvider
extends $NotifierProvider<ServersNotifier, ServersState> {
const ServersNotifierProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'serversProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$serversNotifierHash();
@$internal
@override
ServersNotifier create() => ServersNotifier();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(ServersState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<ServersState>(value),
);
}
}
String _$serversNotifierHash() => r'2b29ad3027a203c7a20bfd0142d384a503cbbcaa';
/// See also [ServersNotifier].
@ProviderFor(ServersNotifier)
final serversNotifierProvider =
NotifierProvider<ServersNotifier, ServersState>.internal(
ServersNotifier.new,
name: r'serversNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$serversNotifierHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$ServersNotifier = Notifier<ServersState>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$ServersNotifier extends $Notifier<ServersState> {
ServersState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<ServersState, ServersState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<ServersState, ServersState>,
ServersState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -45,7 +45,7 @@ abstract class ServerState with _$ServerState {
class ServerNotifier extends _$ServerNotifier {
@override
ServerState build(String serverId) {
final serverNotifier = ref.read(serversNotifierProvider);
final serverNotifier = ref.read(serversProvider);
final spi = serverNotifier.servers[serverId];
if (spi == null) {
throw StateError('Server $serverId not found');
@@ -160,7 +160,7 @@ class ServerNotifier extends _$ServerNotifier {
id: sessionId,
spi: spi,
startTimeMs: time1.millisecondsSinceEpoch,
disconnect: () => ref.read(serversNotifierProvider.notifier).closeOneServer(spi.id),
disconnect: () => ref.read(serversProvider.notifier).closeOneServer(spi.id),
status: TermSessionStatus.connecting,
);
TermSessionManager.setActive(sessionId, hasTerminal: false);

View File

@@ -6,156 +6,103 @@ part of 'single.dart';
// RiverpodGenerator
// **************************************************************************
String _$serverNotifierHash() => r'd9724fbe6d132f2e2ea4dfa5af73aeab168e1c57';
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Copied from Dart SDK
class _SystemHash {
_SystemHash._();
static int combine(int hash, int value) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + value);
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
}
static int finish(int hash) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
// ignore: parameter_assignments
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
}
}
abstract class _$ServerNotifier extends BuildlessNotifier<ServerState> {
late final String serverId;
ServerState build(String serverId);
}
/// See also [ServerNotifier].
@ProviderFor(ServerNotifier)
const serverNotifierProvider = ServerNotifierFamily();
const serverProvider = ServerNotifierFamily._();
/// See also [ServerNotifier].
class ServerNotifierFamily extends Family<ServerState> {
/// See also [ServerNotifier].
const ServerNotifierFamily();
final class ServerNotifierProvider
extends $NotifierProvider<ServerNotifier, ServerState> {
const ServerNotifierProvider._({
required ServerNotifierFamily super.from,
required String super.argument,
}) : super(
retry: null,
name: r'serverProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
/// See also [ServerNotifier].
ServerNotifierProvider call(String serverId) {
return ServerNotifierProvider(serverId);
@override
String debugGetCreateSourceHash() => _$serverNotifierHash();
@override
String toString() {
return r'serverProvider'
''
'($argument)';
}
@$internal
@override
ServerNotifierProvider getProviderOverride(
covariant ServerNotifierProvider provider,
) {
return call(provider.serverId);
}
ServerNotifier create() => ServerNotifier();
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'serverNotifierProvider';
}
/// See also [ServerNotifier].
class ServerNotifierProvider
extends NotifierProviderImpl<ServerNotifier, ServerState> {
/// See also [ServerNotifier].
ServerNotifierProvider(String serverId)
: this._internal(
() => ServerNotifier()..serverId = serverId,
from: serverNotifierProvider,
name: r'serverNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$serverNotifierHash,
dependencies: ServerNotifierFamily._dependencies,
allTransitiveDependencies:
ServerNotifierFamily._allTransitiveDependencies,
serverId: serverId,
);
ServerNotifierProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.serverId,
}) : super.internal();
final String serverId;
@override
ServerState runNotifierBuild(covariant ServerNotifier notifier) {
return notifier.build(serverId);
}
@override
Override overrideWith(ServerNotifier Function() create) {
return ProviderOverride(
/// {@macro riverpod.override_with_value}
Override overrideWithValue(ServerState value) {
return $ProviderOverride(
origin: this,
override: ServerNotifierProvider._internal(
() => create()..serverId = serverId,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
serverId: serverId,
),
providerOverride: $SyncValueProvider<ServerState>(value),
);
}
@override
NotifierProviderElement<ServerNotifier, ServerState> createElement() {
return _ServerNotifierProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is ServerNotifierProvider && other.serverId == serverId;
return other is ServerNotifierProvider && other.argument == argument;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, serverId.hashCode);
return _SystemHash.finish(hash);
return argument.hashCode;
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin ServerNotifierRef on NotifierProviderRef<ServerState> {
/// The parameter `serverId` of this provider.
String get serverId;
}
String _$serverNotifierHash() => r'd9724fbe6d132f2e2ea4dfa5af73aeab168e1c57';
class _ServerNotifierProviderElement
extends NotifierProviderElement<ServerNotifier, ServerState>
with ServerNotifierRef {
_ServerNotifierProviderElement(super.provider);
final class ServerNotifierFamily extends $Family
with
$ClassFamilyOverride<
ServerNotifier,
ServerState,
ServerState,
ServerState,
String
> {
const ServerNotifierFamily._()
: super(
retry: null,
name: r'serverProvider',
dependencies: null,
$allTransitiveDependencies: null,
isAutoDispose: false,
);
ServerNotifierProvider call(String serverId) =>
ServerNotifierProvider._(argument: serverId, from: this);
@override
String get serverId => (origin as ServerNotifierProvider).serverId;
String toString() => r'serverProvider';
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$ServerNotifier extends $Notifier<ServerState> {
late final _$args = ref.$arg as String;
String get serverId => _$args;
ServerState build(String serverId);
@$mustCallSuper
@override
void runBuild() {
final created = build(_$args);
final ref = this.ref as $Ref<ServerState, ServerState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<ServerState, ServerState>,
ServerState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -6,20 +6,58 @@ part of 'sftp.dart';
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(SftpNotifier)
const sftpProvider = SftpNotifierProvider._();
final class SftpNotifierProvider
extends $NotifierProvider<SftpNotifier, SftpState> {
const SftpNotifierProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'sftpProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$sftpNotifierHash();
@$internal
@override
SftpNotifier create() => SftpNotifier();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(SftpState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<SftpState>(value),
);
}
}
String _$sftpNotifierHash() => r'f8412a4bd1f2bc5919ec31a3eba1c27e9a578f41';
/// See also [SftpNotifier].
@ProviderFor(SftpNotifier)
final sftpNotifierProvider = NotifierProvider<SftpNotifier, SftpState>.internal(
SftpNotifier.new,
name: r'sftpNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$sftpNotifierHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$SftpNotifier = Notifier<SftpState>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$SftpNotifier extends $Notifier<SftpState> {
SftpState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<SftpState, SftpState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<SftpState, SftpState>,
SftpState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -6,21 +6,58 @@ part of 'snippet.dart';
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(SnippetNotifier)
const snippetProvider = SnippetNotifierProvider._();
final class SnippetNotifierProvider
extends $NotifierProvider<SnippetNotifier, SnippetState> {
const SnippetNotifierProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'snippetProvider',
isAutoDispose: false,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$snippetNotifierHash();
@$internal
@override
SnippetNotifier create() => SnippetNotifier();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(SnippetState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<SnippetState>(value),
);
}
}
String _$snippetNotifierHash() => r'8285c7edf905a4aaa41cd8b65b0a6755c8b97fc9';
/// See also [SnippetNotifier].
@ProviderFor(SnippetNotifier)
final snippetNotifierProvider =
NotifierProvider<SnippetNotifier, SnippetState>.internal(
SnippetNotifier.new,
name: r'snippetNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$snippetNotifierHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$SnippetNotifier = Notifier<SnippetState>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$SnippetNotifier extends $Notifier<SnippetState> {
SnippetState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<SnippetState, SnippetState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<SnippetState, SnippetState>,
SnippetState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -25,7 +25,7 @@ class SystemdNotifier extends _$SystemdNotifier {
@override
SystemdState build(Spi spi) {
final si = ref.read(serverNotifierProvider(spi.id));
final si = ref.read(serverProvider(spi.id));
_si = si;
// Async initialization
Future.microtask(() => getUnits());

View File

@@ -6,158 +6,103 @@ part of 'systemd.dart';
// RiverpodGenerator
// **************************************************************************
String _$systemdNotifierHash() => r'98466bd176518545be49cae52f8dbe12af3a88a6';
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
/// Copied from Dart SDK
class _SystemHash {
_SystemHash._();
static int combine(int hash, int value) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + value);
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10));
return hash ^ (hash >> 6);
}
static int finish(int hash) {
// ignore: parameter_assignments
hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3));
// ignore: parameter_assignments
hash = hash ^ (hash >> 11);
return 0x1fffffff & (hash + ((0x00003fff & hash) << 15));
}
}
abstract class _$SystemdNotifier
extends BuildlessAutoDisposeNotifier<SystemdState> {
late final Spi spi;
SystemdState build(Spi spi);
}
/// See also [SystemdNotifier].
@ProviderFor(SystemdNotifier)
const systemdNotifierProvider = SystemdNotifierFamily();
const systemdProvider = SystemdNotifierFamily._();
/// See also [SystemdNotifier].
class SystemdNotifierFamily extends Family<SystemdState> {
/// See also [SystemdNotifier].
const SystemdNotifierFamily();
final class SystemdNotifierProvider
extends $NotifierProvider<SystemdNotifier, SystemdState> {
const SystemdNotifierProvider._({
required SystemdNotifierFamily super.from,
required Spi super.argument,
}) : super(
retry: null,
name: r'systemdProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
/// See also [SystemdNotifier].
SystemdNotifierProvider call(Spi spi) {
return SystemdNotifierProvider(spi);
@override
String debugGetCreateSourceHash() => _$systemdNotifierHash();
@override
String toString() {
return r'systemdProvider'
''
'($argument)';
}
@$internal
@override
SystemdNotifierProvider getProviderOverride(
covariant SystemdNotifierProvider provider,
) {
return call(provider.spi);
}
SystemdNotifier create() => SystemdNotifier();
static const Iterable<ProviderOrFamily>? _dependencies = null;
@override
Iterable<ProviderOrFamily>? get dependencies => _dependencies;
static const Iterable<ProviderOrFamily>? _allTransitiveDependencies = null;
@override
Iterable<ProviderOrFamily>? get allTransitiveDependencies =>
_allTransitiveDependencies;
@override
String? get name => r'systemdNotifierProvider';
}
/// See also [SystemdNotifier].
class SystemdNotifierProvider
extends AutoDisposeNotifierProviderImpl<SystemdNotifier, SystemdState> {
/// See also [SystemdNotifier].
SystemdNotifierProvider(Spi spi)
: this._internal(
() => SystemdNotifier()..spi = spi,
from: systemdNotifierProvider,
name: r'systemdNotifierProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$systemdNotifierHash,
dependencies: SystemdNotifierFamily._dependencies,
allTransitiveDependencies:
SystemdNotifierFamily._allTransitiveDependencies,
spi: spi,
);
SystemdNotifierProvider._internal(
super._createNotifier, {
required super.name,
required super.dependencies,
required super.allTransitiveDependencies,
required super.debugGetCreateSourceHash,
required super.from,
required this.spi,
}) : super.internal();
final Spi spi;
@override
SystemdState runNotifierBuild(covariant SystemdNotifier notifier) {
return notifier.build(spi);
}
@override
Override overrideWith(SystemdNotifier Function() create) {
return ProviderOverride(
/// {@macro riverpod.override_with_value}
Override overrideWithValue(SystemdState value) {
return $ProviderOverride(
origin: this,
override: SystemdNotifierProvider._internal(
() => create()..spi = spi,
from: from,
name: null,
dependencies: null,
allTransitiveDependencies: null,
debugGetCreateSourceHash: null,
spi: spi,
),
providerOverride: $SyncValueProvider<SystemdState>(value),
);
}
@override
AutoDisposeNotifierProviderElement<SystemdNotifier, SystemdState>
createElement() {
return _SystemdNotifierProviderElement(this);
}
@override
bool operator ==(Object other) {
return other is SystemdNotifierProvider && other.spi == spi;
return other is SystemdNotifierProvider && other.argument == argument;
}
@override
int get hashCode {
var hash = _SystemHash.combine(0, runtimeType.hashCode);
hash = _SystemHash.combine(hash, spi.hashCode);
return _SystemHash.finish(hash);
return argument.hashCode;
}
}
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
mixin SystemdNotifierRef on AutoDisposeNotifierProviderRef<SystemdState> {
/// The parameter `spi` of this provider.
Spi get spi;
}
String _$systemdNotifierHash() => r'98466bd176518545be49cae52f8dbe12af3a88a6';
class _SystemdNotifierProviderElement
extends AutoDisposeNotifierProviderElement<SystemdNotifier, SystemdState>
with SystemdNotifierRef {
_SystemdNotifierProviderElement(super.provider);
final class SystemdNotifierFamily extends $Family
with
$ClassFamilyOverride<
SystemdNotifier,
SystemdState,
SystemdState,
SystemdState,
Spi
> {
const SystemdNotifierFamily._()
: super(
retry: null,
name: r'systemdProvider',
dependencies: null,
$allTransitiveDependencies: null,
isAutoDispose: true,
);
SystemdNotifierProvider call(Spi spi) =>
SystemdNotifierProvider._(argument: spi, from: this);
@override
Spi get spi => (origin as SystemdNotifierProvider).spi;
String toString() => r'systemdProvider';
}
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$SystemdNotifier extends $Notifier<SystemdState> {
late final _$args = ref.$arg as Spi;
Spi get spi => _$args;
SystemdState build(Spi spi);
@$mustCallSuper
@override
void runBuild() {
final created = build(_$args);
final ref = this.ref as $Ref<SystemdState, SystemdState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<SystemdState, SystemdState>,
SystemdState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -6,21 +6,58 @@ part of 'virtual_keyboard.dart';
// RiverpodGenerator
// **************************************************************************
// GENERATED CODE - DO NOT MODIFY BY HAND
// ignore_for_file: type=lint, type=warning
@ProviderFor(VirtKeyboard)
const virtKeyboardProvider = VirtKeyboardProvider._();
final class VirtKeyboardProvider
extends $NotifierProvider<VirtKeyboard, VirtKeyState> {
const VirtKeyboardProvider._()
: super(
from: null,
argument: null,
retry: null,
name: r'virtKeyboardProvider',
isAutoDispose: true,
dependencies: null,
$allTransitiveDependencies: null,
);
@override
String debugGetCreateSourceHash() => _$virtKeyboardHash();
@$internal
@override
VirtKeyboard create() => VirtKeyboard();
/// {@macro riverpod.override_with_value}
Override overrideWithValue(VirtKeyState value) {
return $ProviderOverride(
origin: this,
providerOverride: $SyncValueProvider<VirtKeyState>(value),
);
}
}
String _$virtKeyboardHash() => r'1327d412bfb0dd261f3b555f353a8852b4f753e5';
/// See also [VirtKeyboard].
@ProviderFor(VirtKeyboard)
final virtKeyboardProvider =
AutoDisposeNotifierProvider<VirtKeyboard, VirtKeyState>.internal(
VirtKeyboard.new,
name: r'virtKeyboardProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$virtKeyboardHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$VirtKeyboard = AutoDisposeNotifier<VirtKeyState>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
abstract class _$VirtKeyboard extends $Notifier<VirtKeyState> {
VirtKeyState build();
@$mustCallSuper
@override
void runBuild() {
final created = build();
final ref = this.ref as $Ref<VirtKeyState, VirtKeyState>;
final element =
ref.element
as $ClassProviderElement<
AnyNotifier<VirtKeyState, VirtKeyState>,
VirtKeyState,
Object?,
Object?
>;
element.handleValue(ref, created);
}
}

View File

@@ -60,7 +60,7 @@ final class _BackupPageState extends ConsumerState<BackupPage> with AutomaticKee
],
[CenterGreyTitle(libL10n.import), _buildBulkImportServers, _buildImportSnippet],
],
);
);
}
Widget get _buildBakPwd {
@@ -400,7 +400,7 @@ final class _BackupPageState extends ConsumerState<BackupPage> with AutomaticKee
child: SingleChildScrollView(child: Text(libL10n.askContinue('${libL10n.import} [$snippetNames]'))),
actions: Btn.ok(
onTap: () {
final notifier = ref.read(snippetNotifierProvider.notifier);
final notifier = ref.read(snippetProvider.notifier);
for (final snippet in snippets) {
notifier.add(snippet);
}

View File

@@ -43,8 +43,8 @@ class _ContainerPageState extends ConsumerState<ContainerPage> {
@override
void initState() {
super.initState();
final serverState = ref.read(serverNotifierProvider(widget.args.spi.id));
_provider = containerNotifierProvider(
final serverState = ref.read(serverProvider(widget.args.spi.id));
_provider = containerProvider(
serverState.client,
widget.args.spi.user,
widget.args.spi.id,

View File

@@ -1,4 +1,5 @@
import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/foundation.dart' show kReleaseMode;
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:responsive_framework/responsive_framework.dart';
@@ -31,15 +32,19 @@ class _HomePageState extends ConsumerState<HomePage>
bool _shouldAuth = false;
DateTime? _pausedTime;
late final _notifier = ref.read(serversNotifierProvider.notifier);
late final _provider = ref.read(serversNotifierProvider);
late final _notifier = ref.read(serversProvider.notifier);
late final _provider = ref.read(serversProvider);
late List<AppTab> _tabs = Stores.setting.homeTabs.fetch();
@override
void dispose() {
super.dispose();
WidgetsBinding.instance.removeObserver(this);
Future(() => _notifier.closeServer());
// In release builds (real app exit), close connections.
// In debug (hot reload), avoid forcing disconnects.
if (kReleaseMode) {
Future(() => _notifier.closeServer());
}
_pageController.dispose();
WakelockPlus.disable();

View File

@@ -131,7 +131,7 @@ class _PingPageState extends ConsumerState<PingPage> with AutomaticKeepAliveClie
return;
}
if (ref.read(serversNotifierProvider).serverOrder.isEmpty) {
if (ref.read(serversProvider).serverOrder.isEmpty) {
context.showSnackBar(l10n.pingNoServer);
return;
}
@@ -143,8 +143,8 @@ class _PingPageState extends ConsumerState<PingPage> with AutomaticKeepAliveClie
}
await Future.wait(
ref.read(serversNotifierProvider).servers.values.map((spi) async {
final serverState = ref.read(serverNotifierProvider(spi.id));
ref.read(serversProvider).servers.values.map((spi) async {
final serverState = ref.read(serverProvider(spi.id));
if (serverState.client == null) {
return;
}

View File

@@ -40,7 +40,7 @@ class _PrivateKeyEditPageState extends ConsumerState<PrivateKeyEditPage> {
final _loading = ValueNotifier<Widget?>(null);
late final _notifier = ref.read(privateKeyNotifierProvider.notifier);
late final _notifier = ref.read(privateKeyProvider.notifier);
PrivateKeyInfo? get pki => widget.args?.pki;

View File

@@ -32,7 +32,7 @@ class _PrivateKeyListState extends ConsumerState<PrivateKeysListPage> with After
}
Widget _buildBody() {
final privateKeyState = ref.watch(privateKeyNotifierProvider);
final privateKeyState = ref.watch(privateKeyProvider);
final pkis = privateKeyState.keys;
if (pkis.isEmpty) {

View File

@@ -37,7 +37,7 @@ class _ProcessPageState extends ConsumerState<ProcessPage> {
ProcSortMode _procSortMode = ProcSortMode.cpu;
List<ProcSortMode> _sortModes = List.from(ProcSortMode.values);
late final _provider = serverNotifierProvider(widget.args.spi.id);
late final _provider = serverProvider(widget.args.spi.id);
@override
void dispose() {

View File

@@ -33,7 +33,7 @@ final class _PvePageState extends ConsumerState<PvePage> {
late MediaQueryData _media;
Timer? _timer;
late final _provider = pveNotifierProvider(widget.args.spi);
late final _provider = pveProvider(widget.args.spi);
late final _notifier = ref.read(_provider.notifier);
@override

View File

@@ -86,7 +86,7 @@ class _ServerDetailPageState extends ConsumerState<ServerDetailPage> with Single
@override
Widget build(BuildContext context) {
final serverState = ref.watch(serverNotifierProvider(widget.args.spi.id));
final serverState = ref.watch(serverProvider(widget.args.spi.id));
if (serverState.client == null) {
return Scaffold(
appBar: CustomAppBar(),

View File

@@ -63,14 +63,18 @@ extension _Actions on _ServerEditPageState {
if (shouldProceed == true) {
final username = usernameController.text.isNotEmpty ? usernameController.text : defaultUsername;
final keyId = keyIdController.text.isNotEmpty ? keyIdController.text : null;
final servers = discoveredServers.map((result) => Spi(
name: result.ip,
ip: result.ip,
port: result.port,
user: username,
keyId: keyId,
pwd: _passwordController.text.isEmpty ? null : _passwordController.text,
)).toList();
final servers = discoveredServers
.map(
(result) => Spi(
name: result.ip,
ip: result.ip,
port: result.port,
user: username,
keyId: keyId,
pwd: _passwordController.text.isEmpty ? null : _passwordController.text,
),
)
.toList();
await _batchImportServers(servers);
}
@@ -93,8 +97,9 @@ extension _Actions on _ServerEditPageState {
}
}
context.showSnackBar('${libL10n.success}: $imported ${l10n.servers}');
if (mounted) Navigator.of(context).pop(true);
if (mounted) context.pop(true);
}
void _onTapSSHImport() async {
try {
final servers = await SSHConfig.parseConfig();
@@ -114,8 +119,7 @@ extension _Actions on _ServerEditPageState {
void _handleImportSSHCfgPermissionIssue(Object e, StackTrace s) async {
dprint('Error importing SSH config: $e');
// Check if it's a permission error and offer file picker as fallback
if (e is PathAccessException ||
e.toString().contains('Operation not permitted')) {
if (e is PathAccessException || e.toString().contains('Operation not permitted')) {
final useFilePicker = await context.showRoundDialog<bool>(
title: l10n.sshConfigImport,
child: Column(
@@ -157,15 +161,10 @@ extension _Actions on _ServerEditPageState {
children: [
Text(l10n.sshConfigFoundServers('${summary.total}')),
if (summary.hasDuplicates)
Text(
l10n.sshConfigDuplicatesSkipped('${summary.duplicates}'),
style: UIs.textGrey,
),
Text(l10n.sshConfigDuplicatesSkipped('${summary.duplicates}'), style: UIs.textGrey),
Text(l10n.sshConfigServersToImport('${summary.toImport}')),
const SizedBox(height: 16),
...resolved.map(
(s) => Text('${s.name} (${s.user}@${s.ip}:${s.port})'),
),
...resolved.map((s) => Text('${s.name} (${s.user}@${s.ip}:${s.port})')),
],
),
),
@@ -174,7 +173,7 @@ extension _Actions on _ServerEditPageState {
if (shouldImport == true) {
for (final server in resolved) {
ref.read(serversNotifierProvider.notifier).addServer(server);
ref.read(serversProvider.notifier).addServer(server);
}
context.showSnackBar(l10n.sshConfigImported('${resolved.length}'));
}
@@ -203,10 +202,7 @@ extension _Actions on _ServerEditPageState {
}
void _onTapCustomItem() async {
final res = await KvEditor.route.go(
context,
KvEditorArgs(data: _customCmds.value),
);
final res = await KvEditor.route.go(context, KvEditorArgs(data: _customCmds.value));
if (res == null) return;
_customCmds.value = res;
}
@@ -257,17 +253,10 @@ extension _Actions on _ServerEditPageState {
scriptDir: _scriptDirCtrl.text.selfNotEmptyOrNull,
);
final wolEmpty =
_wolMacCtrl.text.isEmpty &&
_wolIpCtrl.text.isEmpty &&
_wolPwdCtrl.text.isEmpty;
final wolEmpty = _wolMacCtrl.text.isEmpty && _wolIpCtrl.text.isEmpty && _wolPwdCtrl.text.isEmpty;
final wol = wolEmpty
? null
: WakeOnLanCfg(
mac: _wolMacCtrl.text,
ip: _wolIpCtrl.text,
pwd: _wolPwdCtrl.text.selfNotEmptyOrNull,
);
: WakeOnLanCfg(mac: _wolMacCtrl.text, ip: _wolIpCtrl.text, pwd: _wolPwdCtrl.text.selfNotEmptyOrNull);
if (wol != null) {
final wolValidation = wol.validate();
if (!wolValidation.$2) {
@@ -277,19 +266,13 @@ extension _Actions on _ServerEditPageState {
}
final spi = Spi(
name: _nameController.text.isEmpty
? _ipController.text
: _nameController.text,
name: _nameController.text.isEmpty ? _ipController.text : _nameController.text,
ip: _ipController.text,
port: int.parse(_portController.text),
user: _usernameController.text,
pwd: _passwordController.text.selfNotEmptyOrNull,
keyId: _keyIdx.value != null
? ref
.read(privateKeyNotifierProvider)
.keys
.elementAt(_keyIdx.value!)
.id
? ref.read(privateKeyProvider).keys.elementAt(_keyIdx.value!).id
: null,
tags: _tags.value.isEmpty ? null : _tags.value.toList(),
alterUrl: _altUrlController.text.selfNotEmptyOrNull,
@@ -300,9 +283,7 @@ extension _Actions on _ServerEditPageState {
envs: _env.value.isEmpty ? null : _env.value,
id: widget.args?.spi.id ?? ShortId.generate(),
customSystemType: _systemType.value,
disabledCmdTypes: _disabledCmdTypes.value.isEmpty
? null
: _disabledCmdTypes.value.toList(),
disabledCmdTypes: _disabledCmdTypes.value.isEmpty ? null : _disabledCmdTypes.value.toList(),
);
if (this.spi == null) {
@@ -311,9 +292,9 @@ extension _Actions on _ServerEditPageState {
context.showSnackBar('${l10n.sameIdServerExist}: ${spi.id}');
return;
}
ref.read(serversNotifierProvider.notifier).addServer(spi);
ref.read(serversProvider.notifier).addServer(spi);
} else {
ref.read(serversNotifierProvider.notifier).updateServer(this.spi!, spi);
ref.read(serversProvider.notifier).updateServer(this.spi!, spi);
}
context.pop();
@@ -369,7 +350,7 @@ extension _Utils on _ServerEditPageState {
// Import without asking again since user already gave permission
for (final server in resolved) {
ref.read(serversNotifierProvider.notifier).addServer(server);
ref.read(serversProvider.notifier).addServer(server);
}
context.showSnackBar(l10n.sshConfigImported('${resolved.length}'));
}
@@ -432,10 +413,7 @@ extension _Utils on _ServerEditPageState {
if (spi.keyId == null) {
_passwordController.text = spi.pwd ?? '';
} else {
_keyIdx.value = ref
.read(privateKeyNotifierProvider)
.keys
.indexWhere((e) => e.id == spi.keyId);
_keyIdx.value = ref.read(privateKeyProvider).keys.indexWhere((e) => e.id == spi.keyId);
}
/// List in dart is passed by pointer, so you need to copy it here

View File

@@ -185,7 +185,7 @@ class _ServerEditPageState extends ConsumerState<ServerEditPage> with AfterLayou
hint: 'root',
suggestion: false,
),
TagTile(tags: _tags, allTags: ref.watch(serversNotifierProvider).tags).cardx,
TagTile(tags: _tags, allTags: ref.watch(serversProvider).tags).cardx,
ListTile(
title: Text(l10n.autoConnect),
trailing: _autoConnect.listenVal(

View File

@@ -42,7 +42,7 @@ extension _Widgets on _ServerEditPageState {
Widget _buildKeyAuth() {
const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7);
final privateKeyState = ref.watch(privateKeyNotifierProvider);
final privateKeyState = ref.watch(privateKeyProvider);
final pkis = privateKeyState.keys;
final choice = _keyIdx.listenVal((val) {
@@ -350,7 +350,7 @@ extension _Widgets on _ServerEditPageState {
Widget _buildJumpServer() {
const padding = EdgeInsets.only(left: 13, right: 13, bottom: 7);
final srvs = ref
.watch(serversNotifierProvider)
.watch(serversProvider)
.servers
.values
.where((e) => e.jumpId == null)
@@ -462,7 +462,7 @@ extension _Widgets on _ServerEditPageState {
actions: Btn.ok(
onTap: () async {
context.pop();
ref.read(serversNotifierProvider.notifier).delServer(spi!.id);
ref.read(serversProvider.notifier).delServer(spi!.id);
context.pop(true);
},
red: true,

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(serversNotifierProvider.notifier).refresh(spi: s.spi);
ref.read(serversProvider.notifier).refresh(spi: s.spi);
},
),
ServerConn.disconnected => (
const Icon(MingCute.link_3_line, size: 19, color: Colors.grey),
() => ref.read(serversNotifierProvider.notifier).refresh(spi: s.spi),
() => ref.read(serversProvider.notifier).refresh(spi: s.spi),
),
ServerConn.finished => (
const Icon(MingCute.unlink_2_line, size: 17, color: Colors.grey),
() => ref.read(serversNotifierProvider.notifier).closeServer(id: s.spi.id),
() => ref.read(serversProvider.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(serversNotifierProvider).servers[id]?.custom?.netDev;
final device = ref.watch(serversProvider).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(serversNotifierProvider);
final serverState = ref.watch(serversProvider);
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(serverNotifierProvider(id));
final srv = ref.watch(serverProvider(id));
final title = _buildServerCardTitle(srv);
final List<Widget> children = [title, _buildNormalCard(srv.status, srv.spi)];

View File

@@ -74,7 +74,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
@override
void initState() {
super.initState();
_tags = ValueNotifier(ref.read(serversNotifierProvider).tags);
_tags = ValueNotifier(ref.read(serversProvider).tags);
_startAvoidJitterTimer();
}
@@ -89,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(serversNotifierProvider, (previous, next) {
ref.listen(serversProvider, (previous, next) {
_tags.value = next.tags;
});
return OrientationBuilder(
@@ -133,7 +133,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
Widget _buildPortrait() {
// final isMobile = ResponsiveBreakpoints.of(context).isMobile;
final serverState = ref.watch(serversNotifierProvider);
final serverState = ref.watch(serversProvider);
return _tag.listenVal((val) {
final filtered = _filterServers(serverState.serverOrder);
final child = _buildScaffold(_buildBodySmall(filtered: filtered));
@@ -183,7 +183,7 @@ class _ServerPageState extends ConsumerState<ServerPage>
// Last item is just spacing
if (index == lens) return SizedBox(height: 77);
final individualState = ref.watch(serverNotifierProvider(serversInThisColumn[index]));
final individualState = ref.watch(serverProvider(serversInThisColumn[index]));
return _buildEachServerCard(individualState);
},
@@ -339,8 +339,8 @@ class _ServerPageState extends ConsumerState<ServerPage>
@override
Future<void> afterFirstLayout(BuildContext context) async {
ref.read(serversNotifierProvider.notifier).refresh();
ref.read(serversNotifierProvider.notifier).startAutoRefresh();
ref.read(serversProvider.notifier).refresh();
ref.read(serversProvider.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(serversNotifierProvider).servers[e]?.tags;
final tags = ref.read(serversProvider).servers[e]?.tags;
if (tags == null) return false;
return tags.contains(tag);
}).toList();

View File

@@ -63,7 +63,7 @@ extension _Server on _AppSettingsPageState {
onTap: () async {
final keys = Stores.server.keys();
final names = Map.fromEntries(
keys.map((e) => MapEntry(e, ref.read(serversNotifierProvider).servers[e]?.name ?? e)),
keys.map((e) => MapEntry(e, ref.read(serversProvider).servers[e]?.name ?? e)),
);
final deleteKeys = await context.showPickDialog<String>(
clearable: true,

View File

@@ -42,7 +42,7 @@ class _ServerOrderPageState extends ConsumerState<ServerOrderPage> {
}
Widget _buildBody() {
final serverState = ref.watch(serversNotifierProvider);
final serverState = ref.watch(serversProvider);
final order = serverState.serverOrder;
if (order.isEmpty) {
@@ -77,7 +77,7 @@ class _ServerOrderPageState extends ConsumerState<ServerOrderPage> {
}
Widget _buildCardTile(int index) {
final serverState = ref.watch(serversNotifierProvider);
final serverState = ref.watch(serversProvider);
final order = serverState.serverOrder;
final id = order[index];
final spi = serverState.servers[id];

View File

@@ -62,7 +62,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.snippet}(${snippet.name})')),
actions: Btn.ok(
onTap: () {
ref.read(snippetNotifierProvider.notifier).del(snippet);
ref.read(snippetProvider.notifier).del(snippet);
context.pop();
context.pop();
},
@@ -96,7 +96,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
autoRunOn: _autoRunOn.value.isEmpty ? null : _autoRunOn.value,
);
final oldSnippet = widget.args?.snippet;
final notifier = ref.read(snippetNotifierProvider.notifier);
final notifier = ref.read(snippetProvider.notifier);
if (oldSnippet != null) {
notifier.update(oldSnippet, snippet);
} else {
@@ -130,7 +130,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
),
Consumer(
builder: (_, ref, _) {
final tags = ref.watch(snippetNotifierProvider.select((p) => p.tags));
final tags = ref.watch(snippetProvider.select((p) => p.tags));
return TagTile(tags: _tags, allTags: tags).cardx;
},
),
@@ -157,7 +157,7 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
builder: (vals) {
final subtitle = vals.isEmpty
? null
: vals.map((e) => ref.read(serversNotifierProvider).servers[e]?.name ?? e).join(', ');
: vals.map((e) => ref.read(serversProvider).servers[e]?.name ?? e).join(', ');
return ListTile(
leading: const Padding(
padding: EdgeInsets.only(left: 5),
@@ -170,11 +170,11 @@ class _SnippetEditPageState extends ConsumerState<SnippetEditPage> with AfterLay
: Text(subtitle, maxLines: 1, style: UIs.textGrey, overflow: TextOverflow.ellipsis),
onTap: () async {
// Create a filtered copy for the dialog, don't modify the original
final validServerIds = vals.where((e) => ref.read(serversNotifierProvider).serverOrder.contains(e)).toList();
final validServerIds = vals.where((e) => ref.read(serversProvider).serverOrder.contains(e)).toList();
final serverIds = await context.showPickDialog(
title: l10n.autoRun,
items: ref.read(serversNotifierProvider).serverOrder,
display: (e) => ref.read(serversNotifierProvider).servers[e]?.name ?? e,
items: ref.read(serversProvider).serverOrder,
display: (e) => ref.read(serversProvider).servers[e]?.name ?? e,
initial: validServerIds,
clearable: true,
);

View File

@@ -36,7 +36,7 @@ class _SnippetListPageState extends ConsumerState<SnippetListPage> with Automati
Widget _buildBody() {
// final isMobile = ResponsiveBreakpoints.of(context).isMobile;
final snippetState = ref.watch(snippetNotifierProvider);
final snippetState = ref.watch(snippetProvider);
final snippets = snippetState.snippets;
return _tag.listenVal((tag) {
@@ -56,7 +56,7 @@ class _SnippetListPageState extends ConsumerState<SnippetListPage> with Automati
}
Widget _buildScaffold(List<Snippet> snippets, String tag) {
final snippetState = ref.watch(snippetNotifierProvider);
final snippetState = ref.watch(snippetProvider);
return Scaffold(
appBar: TagSwitcher(
tags: snippetState.tags.vn,

View File

@@ -66,7 +66,7 @@ extension _Init on SSHPageState {
// Mark status connected for notifications / live activities
TermSessionManager.updateStatus(_sessionId, TermSessionStatus.connected);
final snippets = ref.read(snippetNotifierProvider.select((p) => p.snippets));
final snippets = ref.read(snippetProvider.select((p) => p.snippets));
for (final snippet in snippets) {
if (snippet.autoRunOn?.contains(widget.args.spi.id) == true) {
snippet.runInTerm(_terminal, widget.args.spi);

View File

@@ -118,7 +118,7 @@ class SSHPageState extends ConsumerState<SSHPage>
_setupDiscontinuityTimer();
// Initialize client from provider
final serverState = ref.read(serverNotifierProvider(widget.args.spi.id));
final serverState = ref.read(serverProvider(widget.args.spi.id));
_client = serverState.client;
if (++_sshConnCount == 1) {

View File

@@ -52,7 +52,7 @@ extension _VirtKey on SSHPageState {
}
break;
case VirtualKeyFunc.snippet:
final snippetState = ref.read(snippetNotifierProvider);
final snippetState = ref.read(snippetProvider);
final snippets = await context.showPickWithTagDialog<Snippet>(
title: l10n.snippet,
tags: snippetState.tags.vn,

View File

@@ -249,7 +249,7 @@ class _AddPage extends ConsumerWidget {
const viewPadding = 7.0;
final viewWidth = context.windowSize.width - 2 * viewPadding;
final serverState = ref.watch(serversNotifierProvider);
final serverState = ref.watch(serversProvider);
final itemCount = serverState.servers.length;
const itemPadding = 1.0;
const itemWidth = 150.0;

View File

@@ -359,7 +359,7 @@ extension _OnTapFile on _LocalFilePageState {
final spi = await context.showPickSingleDialog<Spi>(
title: libL10n.select,
items: ref.read(serversNotifierProvider).servers.values.toList(),
items: ref.read(serversProvider).servers.values.toList(),
display: (e) => e.name,
);
if (spi == null) return;
@@ -370,7 +370,7 @@ extension _OnTapFile on _LocalFilePageState {
return;
}
ref.read(sftpNotifierProvider.notifier).add(SftpReq(spi, '$remotePath/$fileName', file.absolute.path, SftpReqType.upload));
ref.read(sftpProvider.notifier).add(SftpReq(spi, '$remotePath/$fileName', file.absolute.path, SftpReqType.upload));
context.showSnackBar(l10n.added2List);
}
}

View File

@@ -50,7 +50,7 @@ class _SftpPageState extends ConsumerState<SftpPage> with AfterLayoutMixin {
@override
void initState() {
super.initState();
final serverState = ref.read(serverNotifierProvider(widget.args.spi.id));
final serverState = ref.read(serverProvider(widget.args.spi.id));
_client = serverState.client!;
_status = SftpBrowserStatus(_client);
}
@@ -290,7 +290,7 @@ extension _Actions on _SftpPageState {
final localPath = _getLocalPath(remotePath);
final completer = Completer();
final req = SftpReq(widget.args.spi, remotePath, localPath, SftpReqType.download);
ref.read(sftpNotifierProvider.notifier).add(req, completer: completer);
ref.read(sftpProvider.notifier).add(req, completer: completer);
final (suc, err) = await context.showLoadingDialog(fn: () => completer.future);
if (suc == null || err != null) return;
@@ -300,7 +300,7 @@ extension _Actions on _SftpPageState {
path: localPath,
onSave: (_) {
ref
.read(sftpNotifierProvider.notifier)
.read(sftpProvider.notifier)
.add(SftpReq(req.spi, remotePath, localPath, SftpReqType.upload));
context.showSnackBar(l10n.added2List);
},
@@ -323,7 +323,7 @@ extension _Actions on _SftpPageState {
final remotePath = _getRemotePath(name);
ref
.read(sftpNotifierProvider.notifier)
.read(sftpProvider.notifier)
.add(SftpReq(widget.args.spi, remotePath, _getLocalPath(remotePath), SftpReqType.download));
context.pop();
@@ -653,7 +653,7 @@ extension _Actions on _SftpPageState {
final remotePath = '$remoteDir/$fileName';
Loggers.app.info('SFTP upload local: $path, remote: $remotePath');
ref
.read(sftpNotifierProvider.notifier)
.read(sftpProvider.notifier)
.add(SftpReq(widget.args.spi, remotePath, path, SftpReqType.upload));
},
icon: const Icon(Icons.upload_file),

View File

@@ -25,7 +25,7 @@ class _SftpMissionPageState extends ConsumerState<SftpMissionPage> {
}
Widget _buildBody() {
final status = ref.watch(sftpNotifierProvider.select((pro) => pro.requests));
final status = ref.watch(sftpProvider.select((pro) => pro.requests));
if (status.isEmpty) {
return Center(child: Text(libL10n.empty));
}
@@ -143,7 +143,7 @@ class _SftpMissionPageState extends ConsumerState<SftpMissionPage> {
child: Text(libL10n.askContinue('${libL10n.delete} ${l10n.mission}($name)')),
actions: Btn.ok(
onTap: () {
ref.read(sftpNotifierProvider.notifier).cancel(id);
ref.read(sftpProvider.notifier).cancel(id);
context.pop();
},
).toList,

View File

@@ -19,7 +19,7 @@ final class SystemdPage extends ConsumerStatefulWidget {
}
final class _SystemdPageState extends ConsumerState<SystemdPage> {
late final _pro = systemdNotifierProvider(widget.args.spi);
late final _pro = systemdProvider(widget.args.spi);
late final _notifier = ref.read(_pro.notifier);

View File

@@ -121,7 +121,7 @@ void _onTapMoreBtns(ServerFuncBtn value, Spi spi, BuildContext context, WidgetRe
break;
case ServerFuncBtn.snippet:
final snippetState = ref.read(snippetNotifierProvider);
final snippetState = ref.read(snippetProvider);
if (snippetState.snippets.isEmpty) {
context.showSnackBar(libL10n.empty);
return;
@@ -273,7 +273,7 @@ void _gotoSSH(Spi spi, BuildContext context) async {
}
bool _checkClient(BuildContext context, String id, WidgetRef ref) {
final serverState = ref.read(serverNotifierProvider(id));
final serverState = ref.read(serverProvider(id));
if (serverState.client == null) {
context.showSnackBar(l10n.waitConnection);
return false;

View File

@@ -653,7 +653,7 @@
PRODUCT_BUNDLE_IDENTIFIER = com.lollipopkit.toolbox;
PRODUCT_NAME = "Server Box";
PROVISIONING_PROFILE_SPECIFIER = "";
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = hj_macmini_for_serverbox;
"PROVISIONING_PROFILE_SPECIFIER[sdk=macosx*]" = serverbox_lkmm;
SWIFT_VERSION = 5.0;
};
name = Release;

View File

@@ -17,6 +17,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "7.6.0"
analyzer_buffer:
dependency: transitive
description:
name: analyzer_buffer
sha256: f7833bee67c03c37241c67f8741b17cc501b69d9758df7a5a4a13ed6c947be43
url: "https://pub.dev"
source: hosted
version: "0.1.10"
analyzer_plugin:
dependency: transitive
description:
@@ -117,10 +125,10 @@ packages:
dependency: transitive
description:
name: build
sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7"
sha256: "7d95cbbb1526ab5ae977df9b4cc660963b9b27f6d1075c0b34653868911385e4"
url: "https://pub.dev"
source: hosted
version: "2.5.4"
version: "3.0.0"
build_config:
dependency: transitive
description:
@@ -141,26 +149,26 @@ packages:
dependency: transitive
description:
name: build_resolvers
sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62
sha256: "38c9c339333a09b090a638849a4c56e70a404c6bdd3b511493addfbc113b60c2"
url: "https://pub.dev"
source: hosted
version: "2.5.4"
version: "3.0.0"
build_runner:
dependency: "direct dev"
description:
name: build_runner
sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53"
sha256: b971d4a1c789eba7be3e6fe6ce5e5b50fd3719e3cb485b3fad6d04358304351d
url: "https://pub.dev"
source: hosted
version: "2.5.4"
version: "2.6.0"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792"
sha256: c04e612ca801cd0928ccdb891c263a2b1391cb27940a5ea5afcf9ba894de5d62
url: "https://pub.dev"
source: hosted
version: "9.1.2"
version: "9.2.0"
built_collection:
dependency: transitive
description:
@@ -343,10 +351,10 @@ packages:
dependency: transitive
description:
name: custom_lint_core
sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be"
sha256: cc4684d22ca05bf0a4a51127e19a8aea576b42079ed2bc9e956f11aaebe35dd1
url: "https://pub.dev"
source: hosted
version: "0.7.5"
version: "0.8.0"
custom_lint_visitor:
dependency: transitive
description:
@@ -496,11 +504,9 @@ packages:
fl_lib:
dependency: "direct main"
description:
path: "."
ref: "v1.0.349"
resolved-ref: "77971814f0d7624c9473d4f6ed796c0166d0828b"
url: "https://github.com/lppcg/fl_lib"
source: git
path: "../fl_lib"
relative: true
source: path
version: "0.0.1"
flutter:
dependency: "direct main"
@@ -511,10 +517,10 @@ packages:
dependency: "direct main"
description:
name: flutter_displaymode
sha256: "42c5e9abd13d28ed74f701b60529d7f8416947e58256e6659c5550db719c57ef"
sha256: ecd44b1e902b0073b42ff5b55bf283f38e088270724cdbb7f7065ccf54aa60a8
url: "https://pub.dev"
source: hosted
version: "0.6.0"
version: "0.7.0"
flutter_gbk2utf8:
dependency: "direct main"
description:
@@ -588,10 +594,10 @@ packages:
dependency: "direct main"
description:
name: flutter_riverpod
sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1"
sha256: "71a420767ae786f9402e4efb74e1119fa95b53e6a3781ab8ab21c121ac1349c6"
url: "https://pub.dev"
source: hosted
version: "2.6.1"
version: "3.0.1"
flutter_secure_storage:
dependency: transitive
description:
@@ -640,6 +646,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "3.1.2"
flutter_staggered_grid_view:
dependency: transitive
description:
name: flutter_staggered_grid_view
sha256: "19e7abb550c96fbfeb546b23f3ff356ee7c59a019a651f8f102a4ba9b7349395"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
flutter_svg:
dependency: transitive
description:
@@ -662,10 +676,10 @@ packages:
dependency: "direct dev"
description:
name: freezed
sha256: "2d399f823b8849663744d2a9ddcce01c49268fb4170d0442a655bf6a2f47be22"
sha256: "13065f10e135263a4f5a4391b79a8efc5fb8106f8dd555a9e49b750b45393d77"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
version: "3.2.3"
freezed_annotation:
dependency: "direct main"
description:
@@ -743,10 +757,10 @@ packages:
dependency: "direct dev"
description:
name: hive_ce_generator
sha256: "609678c10ebee7503505a0007050af40a0a4f498b1fb7def3220df341e573a89"
sha256: a169feeff2da9cc2c417ce5ae9bcebf7c8a95d7a700492b276909016ad70a786
url: "https://pub.dev"
source: hosted
version: "1.9.2"
version: "1.9.3"
html:
dependency: transitive
description:
@@ -871,10 +885,10 @@ packages:
dependency: "direct dev"
description:
name: json_serializable
sha256: c50ef5fc083d5b5e12eef489503ba3bf5ccc899e487d691584699b4bdefeea8c
sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe"
url: "https://pub.dev"
source: hosted
version: "6.9.5"
version: "6.11.1"
leak_tracker:
dependency: transitive
description:
@@ -1003,6 +1017,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.0"
mockito:
dependency: transitive
description:
name: mockito
sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99"
url: "https://pub.dev"
source: hosted
version: "5.5.0"
multi_split_view:
dependency: transitive
description:
@@ -1248,10 +1270,10 @@ packages:
dependency: "direct main"
description:
name: re_editor
sha256: "17e430f0591dd361992ec2dd6f69191c1853fa46e05432e095310a8f82ee820e"
sha256: dd4e6ca7350a8fa0cda4e425b82a0c3c010f0f6b3f618c74223e05b8129ab629
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.8.0"
re_highlight:
dependency: transitive
description:
@@ -1272,34 +1294,34 @@ packages:
dependency: transitive
description:
name: riverpod
sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959"
sha256: b21446f04474040479b19004c5b729605cde221bbd14cf16ad0db8804dce4810
url: "https://pub.dev"
source: hosted
version: "2.6.1"
version: "3.0.1"
riverpod_analyzer_utils:
dependency: transitive
description:
name: riverpod_analyzer_utils
sha256: "03a17170088c63aab6c54c44456f5ab78876a1ddb6032ffde1662ddab4959611"
sha256: a0f68adb078b790faa3c655110a017f9a7b7b079a57bbd40f540e80dce5fcd29
url: "https://pub.dev"
source: hosted
version: "0.5.10"
version: "1.0.0-dev.7"
riverpod_annotation:
dependency: "direct main"
description:
name: riverpod_annotation
sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8
sha256: d8154e04008b98015ee3e0514a5d929e3d15605790d28bcd74e63e2d415632a1
url: "https://pub.dev"
source: hosted
version: "2.6.1"
version: "3.0.1"
riverpod_generator:
dependency: "direct dev"
description:
name: riverpod_generator
sha256: "44a0992d54473eb199ede00e2260bd3c262a86560e3c6f6374503d86d0580e36"
sha256: af92fa4051568071f7e12bd44b8b4f3adc7470e3676bd5ac953582a9cce4a1c0
url: "https://pub.dev"
source: hosted
version: "2.6.5"
version: "3.0.1"
screen_retriever:
dependency: transitive
description:
@@ -1352,10 +1374,10 @@ packages:
dependency: transitive
description:
name: share_plus
sha256: d7dc0630a923883c6328ca31b89aa682bacbf2f8304162d29f7c6aaff03a27a1
sha256: "3424e9d5c22fd7f7590254ba09465febd6f8827c8b19a44350de4ac31d92d3a6"
url: "https://pub.dev"
source: hosted
version: "11.1.0"
version: "12.0.0"
share_plus_platform_interface:
dependency: transitive
description:
@@ -1461,10 +1483,10 @@ packages:
dependency: transitive
description:
name: source_gen
sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b"
sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
version: "3.1.0"
source_helper:
dependency: transitive
description:

View File

@@ -19,9 +19,9 @@ dependencies:
easy_isolate: ^1.3.0
extended_image: ^10.0.0
file_picker: ^10.1.9
flutter_riverpod: ^2.6.1
flutter_riverpod: ^3.0.1
flutter_highlight: ^0.7.0
flutter_displaymode: ^0.6.0
flutter_displaymode: ^0.7.0
fl_chart: ^1.0.0
freezed_annotation: ^3.0.0
highlight: ^0.7.0
@@ -29,8 +29,8 @@ dependencies:
intl: ^0.20.2
json_annotation: ^4.9.0
responsive_framework: ^1.5.1
re_editor: ^0.7.0
riverpod_annotation: ^2.6.1
re_editor: ^0.8.0
riverpod_annotation: ^3.0.1
shared_preferences: ^2.1.1
wakelock_plus: ^1.2.4
wake_on_lan: ^4.1.1+3
@@ -74,8 +74,8 @@ dependency_overrides:
# path: ../dartssh2
# xterm:
# path: ../xterm.dart
# fl_lib:
# path: ../fl_lib
fl_lib:
path: ../fl_lib
# fl_build:
# path: ../fl_build
gtk: # TODO: remove it after fixed in upstream
@@ -91,7 +91,7 @@ dev_dependencies:
flutter_lints: ^6.0.0
json_serializable: ^6.8.0
freezed: ^3.0.0
riverpod_generator: ^2.6.1
riverpod_generator: ^3.0.1
test: ^1.24.0
flutter_test:
sdk: flutter