opt.: more friendly err tip

This commit is contained in:
lollipopkit
2024-05-09 21:50:30 +08:00
parent 131ece725a
commit 7767cc4b51
17 changed files with 128 additions and 31 deletions

View File

@@ -1,3 +1,5 @@
import 'package:toolbox/core/extension/context/locale.dart';
enum ErrFrom {
unknown,
apt,
@@ -15,18 +17,35 @@ abstract class Err<T> {
final T type;
final String? message;
String? get solution;
Err({required this.from, required this.type, this.message});
}
enum SSHErrType {
unknown,
connect,
noPrivateKey;
auth,
noPrivateKey,
chdir,
segements,
writeScript,
getStatus,
;
}
class SSHErr extends Err<SSHErrType> {
SSHErr({required super.type, super.message}) : super(from: ErrFrom.ssh);
@override
String? get solution => switch (type) {
SSHErrType.chdir => l10n.needHomeDir,
SSHErrType.auth => l10n.authFailTip,
SSHErrType.writeScript => l10n.writeScriptFailTip,
SSHErrType.noPrivateKey => l10n.noPrivateKeyTip,
_ => null,
};
@override
String toString() {
return 'SSHErr<$type>: $message';
@@ -49,6 +68,9 @@ class ContainerErr extends Err<ContainerErrType> {
ContainerErr({required super.type, super.message})
: super(from: ErrFrom.docker);
@override
String? get solution => null;
@override
String toString() {
return 'ContainerErr<$type>: $message';
@@ -64,6 +86,9 @@ enum ICloudErrType {
class ICloudErr extends Err<ICloudErrType> {
ICloudErr({required super.type, super.message}) : super(from: ErrFrom.icloud);
@override
String? get solution => null;
@override
String toString() {
return 'ICloudErr<$type>: $message';
@@ -79,6 +104,9 @@ enum WebdavErrType {
class WebdavErr extends Err<WebdavErrType> {
WebdavErr({required super.type, super.message}) : super(from: ErrFrom.webdav);
@override
String? get solution => null;
@override
String toString() {
return 'WebdavErr<$type>: $message';
@@ -95,6 +123,9 @@ enum PveErrType {
class PveErr extends Err<PveErrType> {
PveErr({required super.type, super.message}) : super(from: ErrFrom.status);
@override
String? get solution => null;
@override
String toString() {
return 'PveErr<$type>: $message';