mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 23:34:24 +01:00
migrate: riverpod 3
This commit is contained in:
@@ -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');
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -6,20 +6,57 @@ part of 'app.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$appStatesHash() => r'ef96f10f6fff0f3dd6d3128ebf070ad79cbc8bc9';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// See also [AppStates].
|
||||
@ProviderFor(AppStates)
|
||||
final appStatesProvider = NotifierProvider<AppStates, AppState>.internal(
|
||||
AppStates.new,
|
||||
const appStatesProvider = AppStatesProvider._();
|
||||
|
||||
final class AppStatesProvider extends $NotifierProvider<AppStates, AppState> {
|
||||
const AppStatesProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'appStatesProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$appStatesHash,
|
||||
isAutoDispose: false,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: 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
|
||||
@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';
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,35 +6,98 @@ part of 'container.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
@ProviderFor(ContainerNotifier)
|
||||
const containerProvider = ContainerNotifierFamily._();
|
||||
|
||||
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';
|
||||
}
|
||||
|
||||
@$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;
|
||||
}
|
||||
}
|
||||
|
||||
String _$containerNotifierHash() => r'fea65e66499234b0a59bffff8d69c4ab8c93b2fd';
|
||||
|
||||
/// Copied from Dart SDK
|
||||
class _SystemHash {
|
||||
_SystemHash._();
|
||||
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,
|
||||
);
|
||||
|
||||
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);
|
||||
ContainerNotifierProvider call(
|
||||
SSHClient? client,
|
||||
String userName,
|
||||
String hostId,
|
||||
BuildContext context,
|
||||
) => ContainerNotifierProvider._(
|
||||
argument: (client, userName, hostId, context),
|
||||
from: this,
|
||||
);
|
||||
|
||||
@override
|
||||
String toString() => r'containerProvider';
|
||||
}
|
||||
|
||||
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 _$ContainerNotifier
|
||||
extends BuildlessAutoDisposeNotifier<ContainerState> {
|
||||
late final SSHClient? client;
|
||||
late final String userName;
|
||||
late final String hostId;
|
||||
late final BuildContext context;
|
||||
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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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'));
|
||||
|
||||
@@ -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();
|
||||
|
||||
/// See also [PveNotifier].
|
||||
PveNotifierProvider call(Spi spiParam) {
|
||||
return PveNotifierProvider(spiParam);
|
||||
}
|
||||
|
||||
@override
|
||||
PveNotifierProvider getProviderOverride(
|
||||
covariant PveNotifierProvider provider,
|
||||
) {
|
||||
return call(provider.spiParam);
|
||||
}
|
||||
|
||||
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(
|
||||
origin: this,
|
||||
override: PveNotifierProvider._internal(
|
||||
() => create()..spiParam = spiParam,
|
||||
from: from,
|
||||
name: null,
|
||||
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,
|
||||
debugGetCreateSourceHash: null,
|
||||
spiParam: spiParam,
|
||||
),
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeNotifierProviderElement<PveNotifier, PveState> createElement() {
|
||||
return _PveNotifierProviderElement(this);
|
||||
String debugGetCreateSourceHash() => _$pveNotifierHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'pveProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
PveNotifier create() => PveNotifier();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(PveState value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<PveState>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,21 +6,58 @@ part of 'all.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$serversNotifierHash() => r'2b29ad3027a203c7a20bfd0142d384a503cbbcaa';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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,
|
||||
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,
|
||||
$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
|
||||
@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';
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
/// See also [ServerNotifier].
|
||||
ServerNotifierProvider call(String serverId) {
|
||||
return ServerNotifierProvider(serverId);
|
||||
}
|
||||
|
||||
@override
|
||||
ServerNotifierProvider getProviderOverride(
|
||||
covariant ServerNotifierProvider provider,
|
||||
) {
|
||||
return call(provider.serverId);
|
||||
}
|
||||
|
||||
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(
|
||||
origin: this,
|
||||
override: ServerNotifierProvider._internal(
|
||||
() => create()..serverId = serverId,
|
||||
from: from,
|
||||
name: null,
|
||||
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,
|
||||
debugGetCreateSourceHash: null,
|
||||
serverId: serverId,
|
||||
),
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
NotifierProviderElement<ServerNotifier, ServerState> createElement() {
|
||||
return _ServerNotifierProviderElement(this);
|
||||
String debugGetCreateSourceHash() => _$serverNotifierHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'serverProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
ServerNotifier create() => ServerNotifier();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(ServerState value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<ServerState>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,20 +6,58 @@ part of 'sftp.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$sftpNotifierHash() => r'f8412a4bd1f2bc5919ec31a3eba1c27e9a578f41';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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,
|
||||
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,
|
||||
$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
|
||||
@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';
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,21 +6,58 @@ part of 'snippet.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$snippetNotifierHash() => r'8285c7edf905a4aaa41cd8b65b0a6755c8b97fc9';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// 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,
|
||||
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,
|
||||
$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
|
||||
@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';
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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();
|
||||
|
||||
/// See also [SystemdNotifier].
|
||||
SystemdNotifierProvider call(Spi spi) {
|
||||
return SystemdNotifierProvider(spi);
|
||||
}
|
||||
|
||||
@override
|
||||
SystemdNotifierProvider getProviderOverride(
|
||||
covariant SystemdNotifierProvider provider,
|
||||
) {
|
||||
return call(provider.spi);
|
||||
}
|
||||
|
||||
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(
|
||||
origin: this,
|
||||
override: SystemdNotifierProvider._internal(
|
||||
() => create()..spi = spi,
|
||||
from: from,
|
||||
name: null,
|
||||
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,
|
||||
debugGetCreateSourceHash: null,
|
||||
spi: spi,
|
||||
),
|
||||
$allTransitiveDependencies: null,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
AutoDisposeNotifierProviderElement<SystemdNotifier, SystemdState>
|
||||
createElement() {
|
||||
return _SystemdNotifierProviderElement(this);
|
||||
String debugGetCreateSourceHash() => _$systemdNotifierHash();
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return r'systemdProvider'
|
||||
''
|
||||
'($argument)';
|
||||
}
|
||||
|
||||
@$internal
|
||||
@override
|
||||
SystemdNotifier create() => SystemdNotifier();
|
||||
|
||||
/// {@macro riverpod.override_with_value}
|
||||
Override overrideWithValue(SystemdState value) {
|
||||
return $ProviderOverride(
|
||||
origin: this,
|
||||
providerOverride: $SyncValueProvider<SystemdState>(value),
|
||||
);
|
||||
}
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,21 +6,58 @@ part of 'virtual_keyboard.dart';
|
||||
// RiverpodGenerator
|
||||
// **************************************************************************
|
||||
|
||||
String _$virtKeyboardHash() => r'1327d412bfb0dd261f3b555f353a8852b4f753e5';
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// ignore_for_file: type=lint, type=warning
|
||||
|
||||
/// See also [VirtKeyboard].
|
||||
@ProviderFor(VirtKeyboard)
|
||||
final virtKeyboardProvider =
|
||||
AutoDisposeNotifierProvider<VirtKeyboard, VirtKeyState>.internal(
|
||||
VirtKeyboard.new,
|
||||
const virtKeyboardProvider = VirtKeyboardProvider._();
|
||||
|
||||
final class VirtKeyboardProvider
|
||||
extends $NotifierProvider<VirtKeyboard, VirtKeyState> {
|
||||
const VirtKeyboardProvider._()
|
||||
: super(
|
||||
from: null,
|
||||
argument: null,
|
||||
retry: null,
|
||||
name: r'virtKeyboardProvider',
|
||||
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
|
||||
? null
|
||||
: _$virtKeyboardHash,
|
||||
isAutoDispose: true,
|
||||
dependencies: null,
|
||||
allTransitiveDependencies: 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
|
||||
@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';
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
// In release builds (real app exit), close connections.
|
||||
// In debug (hot reload), avoid forcing disconnects.
|
||||
if (kReleaseMode) {
|
||||
Future(() => _notifier.closeServer());
|
||||
}
|
||||
_pageController.dispose();
|
||||
WakelockPlus.disable();
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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(
|
||||
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();
|
||||
),
|
||||
)
|
||||
.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
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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)];
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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,
|
||||
);
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
100
pubspec.lock
100
pubspec.lock
@@ -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:
|
||||
|
||||
14
pubspec.yaml
14
pubspec.yaml
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user