2024-01-12 16:52:14 +01:00
|
|
|
// ignore_for_file: public_member_api_docs, sort_constructors_first
|
|
|
|
// SPDX-FileCopyrightText: 2022 Iconica
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
|
|
|
import 'package:flutter_chat_interface/flutter_chat_interface.dart';
|
|
|
|
|
|
|
|
abstract class ChatModelInterface {
|
2024-03-22 09:31:51 +01:00
|
|
|
ChatModelInterface copyWith();
|
2024-01-12 16:52:14 +01:00
|
|
|
String? get id;
|
|
|
|
List<ChatMessageModel>? get messages;
|
|
|
|
int? get unreadMessages;
|
|
|
|
DateTime? get lastUsed;
|
|
|
|
ChatMessageModel? get lastMessage;
|
|
|
|
bool get canBeDeleted;
|
|
|
|
}
|
|
|
|
|
|
|
|
class ChatModel implements ChatModelInterface {
|
|
|
|
ChatModel({
|
|
|
|
this.id,
|
|
|
|
this.messages = const [],
|
|
|
|
this.unreadMessages,
|
|
|
|
this.lastUsed,
|
|
|
|
this.lastMessage,
|
|
|
|
this.canBeDeleted = true,
|
|
|
|
});
|
|
|
|
|
|
|
|
@override
|
|
|
|
String? id;
|
|
|
|
@override
|
|
|
|
final List<ChatMessageModel>? messages;
|
|
|
|
@override
|
|
|
|
final int? unreadMessages;
|
|
|
|
@override
|
|
|
|
final DateTime? lastUsed;
|
|
|
|
@override
|
|
|
|
final ChatMessageModel? lastMessage;
|
|
|
|
@override
|
|
|
|
final bool canBeDeleted;
|
2024-03-22 09:31:51 +01:00
|
|
|
|
|
|
|
@override
|
|
|
|
ChatModel copyWith({
|
|
|
|
String? id,
|
|
|
|
List<ChatMessageModel>? messages,
|
|
|
|
int? unreadMessages,
|
|
|
|
DateTime? lastUsed,
|
|
|
|
ChatMessageModel? lastMessage,
|
|
|
|
bool? canBeDeleted,
|
|
|
|
}) =>
|
|
|
|
ChatModel(
|
|
|
|
id: id ?? this.id,
|
|
|
|
messages: messages ?? this.messages,
|
|
|
|
unreadMessages: unreadMessages ?? this.unreadMessages,
|
|
|
|
lastUsed: lastUsed ?? this.lastUsed,
|
|
|
|
lastMessage: lastMessage ?? this.lastMessage,
|
|
|
|
canBeDeleted: canBeDeleted ?? this.canBeDeleted,
|
|
|
|
);
|
2024-01-12 16:52:14 +01:00
|
|
|
}
|