48 lines
1.2 KiB
Dart
48 lines
1.2 KiB
Dart
import 'dart:io';
|
|
|
|
import 'package:equatable/equatable.dart';
|
|
|
|
import '../../data/models/chat_message.dart';
|
|
import '../../data/models/session.dart';
|
|
|
|
enum AiStatus { initial, loading, success, failure }
|
|
|
|
class AiState extends Equatable {
|
|
const AiState({
|
|
this.status = AiStatus.initial,
|
|
this.messages = const <ChatMessage>[],
|
|
this.sessions = const <Session>[],
|
|
this.selectedImageFile,
|
|
this.sessionId,
|
|
this.error = '',
|
|
});
|
|
|
|
final AiStatus status;
|
|
final List<ChatMessage> messages;
|
|
final List<Session> sessions;
|
|
final File? selectedImageFile;
|
|
final String? sessionId;
|
|
final String error;
|
|
|
|
AiState copyWith({
|
|
AiStatus? status,
|
|
List<ChatMessage>? messages,
|
|
List<Session>? sessions,
|
|
File? selectedImageFile,
|
|
String? sessionId,
|
|
String? error,
|
|
}) {
|
|
return AiState(
|
|
status: status ?? this.status,
|
|
messages: messages ?? this.messages,
|
|
sessions: sessions ?? this.sessions,
|
|
selectedImageFile: selectedImageFile ?? this.selectedImageFile,
|
|
sessionId: sessionId ?? this.sessionId,
|
|
error: error ?? this.error,
|
|
);
|
|
}
|
|
|
|
@override
|
|
List<Object?> get props => [status, messages, sessions, selectedImageFile, sessionId, error];
|
|
}
|