Improvements

This commit is contained in:
Juan Gilsanz Polo
2024-02-23 01:47:38 +01:00
parent b6d80d7473
commit 25d0e230c6
5 changed files with 29 additions and 63 deletions

View File

@@ -1,4 +0,0 @@
class Wrapped<T> {
final T value;
const Wrapped.value(this.value);
}

View File

@@ -1,57 +1,29 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:linkdy/helpers/wrapped_class.dart';
class ConnectModel { class ConnectModel {
final bool isConnecting; bool isConnecting;
final int method; int method;
final TextEditingController ipDomainController; final TextEditingController ipDomainController;
final String? ipDomainError; String? ipDomainError;
final TextEditingController portController; final TextEditingController portController;
final String? portError; String? portError;
final TextEditingController pathController; final TextEditingController pathController;
final String? pathError; String? pathError;
final TextEditingController tokenController; final TextEditingController tokenController;
final String? tokenError; String? tokenError;
final bool validValues; bool validValues;
ConnectModel({ ConnectModel({
required this.isConnecting, this.isConnecting = false,
required this.method, this.method = 0,
required this.ipDomainController, required this.ipDomainController,
required this.ipDomainError, this.ipDomainError,
required this.portController, required this.portController,
required this.portError, this.portError,
required this.pathController, required this.pathController,
required this.pathError, this.pathError,
required this.tokenController, required this.tokenController,
required this.tokenError, this.tokenError,
required this.validValues, this.validValues = true,
}); });
ConnectModel copyWidth({
bool? isConnecting,
int? method,
TextEditingController? ipDomainController,
Wrapped<String?>? ipDomainError,
TextEditingController? portController,
Wrapped<String?>? portError,
TextEditingController? pathController,
Wrapped<String?>? pathError,
TextEditingController? tokenController,
Wrapped<String?>? tokenError,
bool? validValues,
}) =>
ConnectModel(
isConnecting: isConnecting ?? this.isConnecting,
method: method ?? this.method,
ipDomainController: ipDomainController ?? this.ipDomainController,
ipDomainError: ipDomainError != null ? ipDomainError.value : this.ipDomainError,
portController: portController ?? this.portController,
portError: portError != null ? portError.value : this.portError,
pathController: pathController ?? this.pathController,
pathError: pathError != null ? pathError.value : this.pathError,
tokenController: tokenController ?? this.tokenController,
tokenError: tokenError != null ? tokenError.value : this.tokenError,
validValues: validValues ?? this.validValues,
);
} }

View File

@@ -8,9 +8,4 @@ class OnboardingModel {
required this.pageController, required this.pageController,
this.confirmServerRunning = false, this.confirmServerRunning = false,
}); });
OnboardingModel toggleConfirmServerRunning(bool newValue) => OnboardingModel(
pageController: pageController,
confirmServerRunning: newValue,
);
} }

View File

@@ -15,7 +15,6 @@ import 'package:linkdy/models/server_instance.dart';
import 'package:linkdy/providers/api_client_provider.dart'; import 'package:linkdy/providers/api_client_provider.dart';
import 'package:linkdy/services/api_client.dart'; import 'package:linkdy/services/api_client.dart';
import 'package:linkdy/constants/regexp.dart'; import 'package:linkdy/constants/regexp.dart';
import 'package:linkdy/helpers/wrapped_class.dart';
part 'connect.provider.g.dart'; part 'connect.provider.g.dart';
@@ -39,36 +38,40 @@ class Connect extends _$Connect {
} }
void setConnectionMethod(int method) { void setConnectionMethod(int method) {
state = state.copyWidth(method: method); state.method = method;
ref.notifyListeners();
} }
void validateIpDomain(String value) { void validateIpDomain(String value) {
if (Regexps.ipAddress.hasMatch(value) || Regexps.domain.hasMatch(value)) { if (Regexps.ipAddress.hasMatch(value) || Regexps.domain.hasMatch(value)) {
state = state.copyWidth(ipDomainError: const Wrapped.value(null)); state.ipDomainError = null;
} else { } else {
state = state.copyWidth(ipDomainError: const Wrapped.value("Error")); state.ipDomainError = "Error";
} }
state = state.copyWidth(validValues: validValues()); state.validValues = validValues();
ref.notifyListeners();
} }
void validatePort(value) { void validatePort(value) {
if (value != null && value != '') { if (value != null && value != '') {
if (int.tryParse(value) != null && int.parse(value) <= 65535) { if (int.tryParse(value) != null && int.parse(value) <= 65535) {
state = state.copyWidth(portError: const Wrapped.value(null)); state.portError = null;
} else { } else {
state = state.copyWidth(portError: const Wrapped.value("Invalid port")); state.portError = "Invalid port";
} }
} }
state = state.copyWidth(validValues: validValues()); state.validValues = validValues();
ref.notifyListeners();
} }
void validateToken(String value) { void validateToken(String value) {
if (value != "") { if (value != "") {
state = state.copyWidth(tokenError: const Wrapped.value(null)); state.tokenError = null;
} else { } else {
state = state.copyWidth(tokenError: const Wrapped.value("Error")); state.tokenError = "Error";
} }
state = state.copyWidth(validValues: validValues()); state.validValues = validValues();
ref.notifyListeners();
} }
bool validValues() { bool validValues() {

View File

@@ -21,7 +21,7 @@ final connectToServerProvider = AutoDisposeFutureProvider<bool>.internal(
); );
typedef ConnectToServerRef = AutoDisposeFutureProviderRef<bool>; typedef ConnectToServerRef = AutoDisposeFutureProviderRef<bool>;
String _$connectHash() => r'2c2e4fff717252259381056b4767b9a4511b5009'; String _$connectHash() => r'348a51c7ab10af474e09ec3ffdcedffa46156695';
/// See also [Connect]. /// See also [Connect].
@ProviderFor(Connect) @ProviderFor(Connect)