import 'package:equatable/equatable.dart'; enum ConnectionStatus { disconnected, connecting, connected, error, } class GeViServerState extends Equatable { final ConnectionStatus connectionStatus; final String? serverAddress; final String? username; final DateTime? connectedAt; final bool isLoading; final String? lastActionResult; final bool lastActionSuccess; final String? errorMessage; final List messageLog; const GeViServerState({ this.connectionStatus = ConnectionStatus.disconnected, this.serverAddress, this.username, this.connectedAt, this.isLoading = false, this.lastActionResult, this.lastActionSuccess = false, this.errorMessage, this.messageLog = const [], }); bool get isConnected => connectionStatus == ConnectionStatus.connected; GeViServerState copyWith({ ConnectionStatus? connectionStatus, String? serverAddress, String? username, DateTime? connectedAt, bool? isLoading, String? lastActionResult, bool? lastActionSuccess, String? errorMessage, List? messageLog, bool clearServerAddress = false, bool clearUsername = false, bool clearConnectedAt = false, bool clearErrorMessage = false, bool clearLastActionResult = false, }) { return GeViServerState( connectionStatus: connectionStatus ?? this.connectionStatus, serverAddress: clearServerAddress ? null : (serverAddress ?? this.serverAddress), username: clearUsername ? null : (username ?? this.username), connectedAt: clearConnectedAt ? null : (connectedAt ?? this.connectedAt), isLoading: isLoading ?? this.isLoading, lastActionResult: clearLastActionResult ? null : (lastActionResult ?? this.lastActionResult), lastActionSuccess: lastActionSuccess ?? this.lastActionSuccess, errorMessage: clearErrorMessage ? null : (errorMessage ?? this.errorMessage), messageLog: messageLog ?? this.messageLog, ); } @override List get props => [ connectionStatus, serverAddress, username, connectedAt, isLoading, lastActionResult, lastActionSuccess, errorMessage, messageLog, ]; }