Получение и отправка текста, статусы сообщения
This commit is contained in:
@@ -194,9 +194,10 @@ class ChatRemoteDataSourceImpl implements ChatRemoteDataSource {
|
||||
senderId: json['userId'] ?? (json['senderId'] ?? ''),
|
||||
content: json['content'] ?? '',
|
||||
messageType: json['type']?.toString().toLowerCase() ?? 'text',
|
||||
sequenceId: int.tryParse(json['sequenceId']?.toString() ?? '0') ?? 0,
|
||||
createdAt: _parseDateTime(json['createdAt']),
|
||||
updatedAt: _parseDateTime(json['updatedAt']),
|
||||
isRead: json['isRead'] ?? false,
|
||||
status: (json['isRead'] ?? false) ? MessageStatus.read : MessageStatus.delivered,
|
||||
media: json['media'] is Map<String, dynamic> ? json['media'] as Map<String, dynamic> : null,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -62,7 +62,11 @@ class LastMessageModel {
|
||||
late String id;
|
||||
late String content;
|
||||
late String messageType;
|
||||
late int sequenceId;
|
||||
DateTime? createdAt;
|
||||
|
||||
@Enumerated(EnumType.name)
|
||||
MessageStatus status = MessageStatus.delivered;
|
||||
|
||||
Message toEntity() {
|
||||
return Message(
|
||||
@@ -71,7 +75,9 @@ class LastMessageModel {
|
||||
senderId: '',
|
||||
content: content,
|
||||
messageType: messageType,
|
||||
sequenceId: sequenceId,
|
||||
createdAt: createdAt,
|
||||
status: status,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -80,7 +86,9 @@ class LastMessageModel {
|
||||
..id = message.id
|
||||
..content = message.content
|
||||
..messageType = message.messageType
|
||||
..createdAt = message.createdAt;
|
||||
..sequenceId = message.sequenceId
|
||||
..createdAt = message.createdAt
|
||||
..status = message.status;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1663,6 +1663,17 @@ const LastMessageModelSchema = Schema(
|
||||
id: 3,
|
||||
name: r'messageType',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'sequenceId': PropertySchema(
|
||||
id: 4,
|
||||
name: r'sequenceId',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'status': PropertySchema(
|
||||
id: 5,
|
||||
name: r'status',
|
||||
type: IsarType.string,
|
||||
enumMap: _LastMessageModelstatusEnumValueMap,
|
||||
)
|
||||
},
|
||||
estimateSize: _lastMessageModelEstimateSize,
|
||||
@@ -1680,6 +1691,7 @@ int _lastMessageModelEstimateSize(
|
||||
bytesCount += 3 + object.content.length * 3;
|
||||
bytesCount += 3 + object.id.length * 3;
|
||||
bytesCount += 3 + object.messageType.length * 3;
|
||||
bytesCount += 3 + object.status.name.length * 3;
|
||||
return bytesCount;
|
||||
}
|
||||
|
||||
@@ -1693,6 +1705,8 @@ void _lastMessageModelSerialize(
|
||||
writer.writeDateTime(offsets[1], object.createdAt);
|
||||
writer.writeString(offsets[2], object.id);
|
||||
writer.writeString(offsets[3], object.messageType);
|
||||
writer.writeLong(offsets[4], object.sequenceId);
|
||||
writer.writeString(offsets[5], object.status.name);
|
||||
}
|
||||
|
||||
LastMessageModel _lastMessageModelDeserialize(
|
||||
@@ -1706,6 +1720,10 @@ LastMessageModel _lastMessageModelDeserialize(
|
||||
object.createdAt = reader.readDateTimeOrNull(offsets[1]);
|
||||
object.id = reader.readString(offsets[2]);
|
||||
object.messageType = reader.readString(offsets[3]);
|
||||
object.sequenceId = reader.readLong(offsets[4]);
|
||||
object.status = _LastMessageModelstatusValueEnumMap[
|
||||
reader.readStringOrNull(offsets[5])] ??
|
||||
MessageStatus.sending;
|
||||
return object;
|
||||
}
|
||||
|
||||
@@ -1724,11 +1742,30 @@ P _lastMessageModelDeserializeProp<P>(
|
||||
return (reader.readString(offset)) as P;
|
||||
case 3:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 4:
|
||||
return (reader.readLong(offset)) as P;
|
||||
case 5:
|
||||
return (_LastMessageModelstatusValueEnumMap[
|
||||
reader.readStringOrNull(offset)] ??
|
||||
MessageStatus.sending) as P;
|
||||
default:
|
||||
throw IsarError('Unknown property with id $propertyId');
|
||||
}
|
||||
}
|
||||
|
||||
const _LastMessageModelstatusEnumValueMap = {
|
||||
r'sending': r'sending',
|
||||
r'delivered': r'delivered',
|
||||
r'read': r'read',
|
||||
r'error': r'error',
|
||||
};
|
||||
const _LastMessageModelstatusValueEnumMap = {
|
||||
r'sending': MessageStatus.sending,
|
||||
r'delivered': MessageStatus.delivered,
|
||||
r'read': MessageStatus.read,
|
||||
r'error': MessageStatus.error,
|
||||
};
|
||||
|
||||
extension LastMessageModelQueryFilter
|
||||
on QueryBuilder<LastMessageModel, LastMessageModel, QFilterCondition> {
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
@@ -2212,6 +2249,198 @@ extension LastMessageModelQueryFilter
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
sequenceIdEqualTo(int value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'sequenceId',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
sequenceIdGreaterThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'sequenceId',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
sequenceIdLessThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'sequenceId',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
sequenceIdBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'sequenceId',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusEqualTo(
|
||||
MessageStatus value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusGreaterThan(
|
||||
MessageStatus value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusLessThan(
|
||||
MessageStatus value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusBetween(
|
||||
MessageStatus lower,
|
||||
MessageStatus upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'status',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.startsWith(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.endsWith(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusContains(String value, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.contains(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusMatches(String pattern, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.matches(
|
||||
property: r'status',
|
||||
wildcard: pattern,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'status',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<LastMessageModel, LastMessageModel, QAfterFilterCondition>
|
||||
statusIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'status',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
extension LastMessageModelQueryObject
|
||||
|
||||
@@ -16,12 +16,15 @@ class MessageModel {
|
||||
late String senderId;
|
||||
late String content;
|
||||
late String messageType;
|
||||
late int sequenceId;
|
||||
|
||||
@Index()
|
||||
DateTime? createdAt;
|
||||
|
||||
DateTime? updatedAt;
|
||||
bool isRead = false;
|
||||
|
||||
@Enumerated(EnumType.name)
|
||||
MessageStatus status = MessageStatus.delivered;
|
||||
|
||||
// For simplicity, store media as a JSON string or ignore for now
|
||||
String? mediaJson;
|
||||
@@ -33,9 +36,10 @@ class MessageModel {
|
||||
senderId: senderId,
|
||||
content: content,
|
||||
messageType: messageType,
|
||||
sequenceId: sequenceId,
|
||||
createdAt: createdAt,
|
||||
updatedAt: updatedAt,
|
||||
isRead: isRead,
|
||||
status: status,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -46,8 +50,9 @@ class MessageModel {
|
||||
..senderId = message.senderId
|
||||
..content = message.content
|
||||
..messageType = message.messageType
|
||||
..sequenceId = message.sequenceId
|
||||
..createdAt = message.createdAt
|
||||
..updatedAt = message.updatedAt
|
||||
..isRead = message.isRead ?? false;
|
||||
..status = message.status;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,28 +37,34 @@ const MessageModelSchema = CollectionSchema(
|
||||
name: r'id',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'isRead': PropertySchema(
|
||||
id: 4,
|
||||
name: r'isRead',
|
||||
type: IsarType.bool,
|
||||
),
|
||||
r'mediaJson': PropertySchema(
|
||||
id: 5,
|
||||
id: 4,
|
||||
name: r'mediaJson',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'messageType': PropertySchema(
|
||||
id: 6,
|
||||
id: 5,
|
||||
name: r'messageType',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'senderId': PropertySchema(
|
||||
id: 7,
|
||||
id: 6,
|
||||
name: r'senderId',
|
||||
type: IsarType.string,
|
||||
),
|
||||
r'updatedAt': PropertySchema(
|
||||
r'sequenceId': PropertySchema(
|
||||
id: 7,
|
||||
name: r'sequenceId',
|
||||
type: IsarType.long,
|
||||
),
|
||||
r'status': PropertySchema(
|
||||
id: 8,
|
||||
name: r'status',
|
||||
type: IsarType.string,
|
||||
enumMap: _MessageModelstatusEnumValueMap,
|
||||
),
|
||||
r'updatedAt': PropertySchema(
|
||||
id: 9,
|
||||
name: r'updatedAt',
|
||||
type: IsarType.dateTime,
|
||||
)
|
||||
@@ -134,6 +140,7 @@ int _messageModelEstimateSize(
|
||||
}
|
||||
bytesCount += 3 + object.messageType.length * 3;
|
||||
bytesCount += 3 + object.senderId.length * 3;
|
||||
bytesCount += 3 + object.status.name.length * 3;
|
||||
return bytesCount;
|
||||
}
|
||||
|
||||
@@ -147,11 +154,12 @@ void _messageModelSerialize(
|
||||
writer.writeString(offsets[1], object.content);
|
||||
writer.writeDateTime(offsets[2], object.createdAt);
|
||||
writer.writeString(offsets[3], object.id);
|
||||
writer.writeBool(offsets[4], object.isRead);
|
||||
writer.writeString(offsets[5], object.mediaJson);
|
||||
writer.writeString(offsets[6], object.messageType);
|
||||
writer.writeString(offsets[7], object.senderId);
|
||||
writer.writeDateTime(offsets[8], object.updatedAt);
|
||||
writer.writeString(offsets[4], object.mediaJson);
|
||||
writer.writeString(offsets[5], object.messageType);
|
||||
writer.writeString(offsets[6], object.senderId);
|
||||
writer.writeLong(offsets[7], object.sequenceId);
|
||||
writer.writeString(offsets[8], object.status.name);
|
||||
writer.writeDateTime(offsets[9], object.updatedAt);
|
||||
}
|
||||
|
||||
MessageModel _messageModelDeserialize(
|
||||
@@ -165,12 +173,15 @@ MessageModel _messageModelDeserialize(
|
||||
object.content = reader.readString(offsets[1]);
|
||||
object.createdAt = reader.readDateTimeOrNull(offsets[2]);
|
||||
object.id = reader.readString(offsets[3]);
|
||||
object.isRead = reader.readBool(offsets[4]);
|
||||
object.isarId = id;
|
||||
object.mediaJson = reader.readStringOrNull(offsets[5]);
|
||||
object.messageType = reader.readString(offsets[6]);
|
||||
object.senderId = reader.readString(offsets[7]);
|
||||
object.updatedAt = reader.readDateTimeOrNull(offsets[8]);
|
||||
object.mediaJson = reader.readStringOrNull(offsets[4]);
|
||||
object.messageType = reader.readString(offsets[5]);
|
||||
object.senderId = reader.readString(offsets[6]);
|
||||
object.sequenceId = reader.readLong(offsets[7]);
|
||||
object.status =
|
||||
_MessageModelstatusValueEnumMap[reader.readStringOrNull(offsets[8])] ??
|
||||
MessageStatus.sending;
|
||||
object.updatedAt = reader.readDateTimeOrNull(offsets[9]);
|
||||
return object;
|
||||
}
|
||||
|
||||
@@ -190,20 +201,37 @@ P _messageModelDeserializeProp<P>(
|
||||
case 3:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 4:
|
||||
return (reader.readBool(offset)) as P;
|
||||
case 5:
|
||||
return (reader.readStringOrNull(offset)) as P;
|
||||
case 5:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 6:
|
||||
return (reader.readString(offset)) as P;
|
||||
case 7:
|
||||
return (reader.readString(offset)) as P;
|
||||
return (reader.readLong(offset)) as P;
|
||||
case 8:
|
||||
return (_MessageModelstatusValueEnumMap[
|
||||
reader.readStringOrNull(offset)] ??
|
||||
MessageStatus.sending) as P;
|
||||
case 9:
|
||||
return (reader.readDateTimeOrNull(offset)) as P;
|
||||
default:
|
||||
throw IsarError('Unknown property with id $propertyId');
|
||||
}
|
||||
}
|
||||
|
||||
const _MessageModelstatusEnumValueMap = {
|
||||
r'sending': r'sending',
|
||||
r'delivered': r'delivered',
|
||||
r'read': r'read',
|
||||
r'error': r'error',
|
||||
};
|
||||
const _MessageModelstatusValueEnumMap = {
|
||||
r'sending': MessageStatus.sending,
|
||||
r'delivered': MessageStatus.delivered,
|
||||
r'read': MessageStatus.read,
|
||||
r'error': MessageStatus.error,
|
||||
};
|
||||
|
||||
Id _messageModelGetId(MessageModel object) {
|
||||
return object.isarId;
|
||||
}
|
||||
@@ -1041,16 +1069,6 @@ extension MessageModelQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition> isReadEqualTo(
|
||||
bool value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'isRead',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition> isarIdEqualTo(
|
||||
Id value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -1532,6 +1550,197 @@ extension MessageModelQueryFilter
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
sequenceIdEqualTo(int value) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'sequenceId',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
sequenceIdGreaterThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'sequenceId',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
sequenceIdLessThan(
|
||||
int value, {
|
||||
bool include = false,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'sequenceId',
|
||||
value: value,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
sequenceIdBetween(
|
||||
int lower,
|
||||
int upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'sequenceId',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition> statusEqualTo(
|
||||
MessageStatus value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusGreaterThan(
|
||||
MessageStatus value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
include: include,
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusLessThan(
|
||||
MessageStatus value, {
|
||||
bool include = false,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.lessThan(
|
||||
include: include,
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition> statusBetween(
|
||||
MessageStatus lower,
|
||||
MessageStatus upper, {
|
||||
bool includeLower = true,
|
||||
bool includeUpper = true,
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.between(
|
||||
property: r'status',
|
||||
lower: lower,
|
||||
includeLower: includeLower,
|
||||
upper: upper,
|
||||
includeUpper: includeUpper,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusStartsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.startsWith(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusEndsWith(
|
||||
String value, {
|
||||
bool caseSensitive = true,
|
||||
}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.endsWith(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusContains(String value, {bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.contains(
|
||||
property: r'status',
|
||||
value: value,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition> statusMatches(
|
||||
String pattern,
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.matches(
|
||||
property: r'status',
|
||||
wildcard: pattern,
|
||||
caseSensitive: caseSensitive,
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusIsEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.equalTo(
|
||||
property: r'status',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
statusIsNotEmpty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addFilterCondition(FilterCondition.greaterThan(
|
||||
property: r'status',
|
||||
value: '',
|
||||
));
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterFilterCondition>
|
||||
updatedAtIsNull() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -1663,18 +1872,6 @@ extension MessageModelQuerySortBy
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortByIsRead() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'isRead', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortByIsReadDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'isRead', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortByMediaJson() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'mediaJson', Sort.asc);
|
||||
@@ -1712,6 +1909,31 @@ extension MessageModelQuerySortBy
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortBySequenceId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'sequenceId', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy>
|
||||
sortBySequenceIdDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'sequenceId', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortByStatus() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'status', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortByStatusDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'status', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> sortByUpdatedAt() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'updatedAt', Sort.asc);
|
||||
@@ -1775,18 +1997,6 @@ extension MessageModelQuerySortThenBy
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenByIsRead() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'isRead', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenByIsReadDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'isRead', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenByIsarId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'isarId', Sort.asc);
|
||||
@@ -1836,6 +2046,31 @@ extension MessageModelQuerySortThenBy
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenBySequenceId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'sequenceId', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy>
|
||||
thenBySequenceIdDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'sequenceId', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenByStatus() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'status', Sort.asc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenByStatusDesc() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'status', Sort.desc);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QAfterSortBy> thenByUpdatedAt() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addSortBy(r'updatedAt', Sort.asc);
|
||||
@@ -1878,12 +2113,6 @@ extension MessageModelQueryWhereDistinct
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QDistinct> distinctByIsRead() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'isRead');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QDistinct> distinctByMediaJson(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
@@ -1905,6 +2134,19 @@ extension MessageModelQueryWhereDistinct
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QDistinct> distinctBySequenceId() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'sequenceId');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QDistinct> distinctByStatus(
|
||||
{bool caseSensitive = true}) {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'status', caseSensitive: caseSensitive);
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageModel, QDistinct> distinctByUpdatedAt() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addDistinctBy(r'updatedAt');
|
||||
@@ -1944,12 +2186,6 @@ extension MessageModelQueryProperty
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, bool, QQueryOperations> isReadProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'isRead');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, String?, QQueryOperations> mediaJsonProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'mediaJson');
|
||||
@@ -1968,6 +2204,18 @@ extension MessageModelQueryProperty
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, int, QQueryOperations> sequenceIdProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'sequenceId');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, MessageStatus, QQueryOperations> statusProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'status');
|
||||
});
|
||||
}
|
||||
|
||||
QueryBuilder<MessageModel, DateTime?, QQueryOperations> updatedAtProperty() {
|
||||
return QueryBuilder.apply(this, (query) {
|
||||
return query.addPropertyName(r'updatedAt');
|
||||
|
||||
@@ -24,9 +24,19 @@ class ChatRepositoryImpl implements ChatRepository {
|
||||
@override
|
||||
Stream<Map<String, dynamic>> get typingStream => signalRService.typingUpdates;
|
||||
|
||||
@override
|
||||
Stream<Map<String, dynamic>> get statusStream => signalRService.statusUpdates;
|
||||
|
||||
@override
|
||||
Stream<Map<String, dynamic>> get readReceiptStream => signalRService.readReceipts;
|
||||
|
||||
@override
|
||||
Future<void> sendTypingStatus(String chatId, bool isTyping) => signalRService.sendTypingStatus(chatId, isTyping);
|
||||
|
||||
@override
|
||||
Future<void> markAsRead(String chatId, String lastReadMessageId, int lastReadSequenceId) =>
|
||||
signalRService.markMessagesAsRead(chatId, lastReadMessageId, lastReadSequenceId);
|
||||
|
||||
@override
|
||||
Future<void> initSignalR() => signalRService.init();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user