Cache messages, use cache if exists, load in background
This commit is contained in:
@@ -1,17 +1,32 @@
|
||||
import 'package:hive_flutter/hive_flutter.dart';
|
||||
import 'package:simplecloudnotifier/models/subscription.dart';
|
||||
import 'package:simplecloudnotifier/state/interfaces.dart';
|
||||
|
||||
class Channel {
|
||||
part 'channel.g.dart';
|
||||
|
||||
@HiveType(typeId: 104)
|
||||
class Channel extends HiveObject implements FieldDebuggable {
|
||||
@HiveField(0)
|
||||
final String channelID;
|
||||
|
||||
@HiveField(10)
|
||||
final String ownerUserID;
|
||||
@HiveField(11)
|
||||
final String internalName;
|
||||
@HiveField(12)
|
||||
final String displayName;
|
||||
@HiveField(13)
|
||||
final String? descriptionName;
|
||||
@HiveField(14)
|
||||
final String? subscribeKey;
|
||||
@HiveField(15)
|
||||
final String timestampCreated;
|
||||
@HiveField(16)
|
||||
final String? timestampLastSent;
|
||||
@HiveField(17)
|
||||
final int messagesSent;
|
||||
|
||||
const Channel({
|
||||
Channel({
|
||||
required this.channelID,
|
||||
required this.ownerUserID,
|
||||
required this.internalName,
|
||||
@@ -36,6 +51,25 @@ class Channel {
|
||||
messagesSent: json['messages_sent'] as int,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'Channel[${this.channelID}]';
|
||||
}
|
||||
|
||||
List<(String, String)> debugFieldList() {
|
||||
return [
|
||||
('channelID', this.channelID),
|
||||
('ownerUserID', this.ownerUserID),
|
||||
('internalName', this.internalName),
|
||||
('displayName', this.displayName),
|
||||
('descriptionName', this.descriptionName ?? ''),
|
||||
('subscribeKey', this.subscribeKey ?? ''),
|
||||
('timestampCreated', this.timestampCreated),
|
||||
('timestampLastSent', this.timestampLastSent ?? ''),
|
||||
('messagesSent', '${this.messagesSent}'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
class ChannelWithSubscription {
|
||||
|
65
flutter/lib/models/channel.g.dart
Normal file
65
flutter/lib/models/channel.g.dart
Normal file
@@ -0,0 +1,65 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'channel.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// TypeAdapterGenerator
|
||||
// **************************************************************************
|
||||
|
||||
class ChannelAdapter extends TypeAdapter<Channel> {
|
||||
@override
|
||||
final int typeId = 104;
|
||||
|
||||
@override
|
||||
Channel read(BinaryReader reader) {
|
||||
final numOfFields = reader.readByte();
|
||||
final fields = <int, dynamic>{
|
||||
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
|
||||
};
|
||||
return Channel(
|
||||
channelID: fields[0] as String,
|
||||
ownerUserID: fields[10] as String,
|
||||
internalName: fields[11] as String,
|
||||
displayName: fields[12] as String,
|
||||
descriptionName: fields[13] as String?,
|
||||
subscribeKey: fields[14] as String?,
|
||||
timestampCreated: fields[15] as String,
|
||||
timestampLastSent: fields[16] as String?,
|
||||
messagesSent: fields[17] as int,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void write(BinaryWriter writer, Channel obj) {
|
||||
writer
|
||||
..writeByte(9)
|
||||
..writeByte(0)
|
||||
..write(obj.channelID)
|
||||
..writeByte(10)
|
||||
..write(obj.ownerUserID)
|
||||
..writeByte(11)
|
||||
..write(obj.internalName)
|
||||
..writeByte(12)
|
||||
..write(obj.displayName)
|
||||
..writeByte(13)
|
||||
..write(obj.descriptionName)
|
||||
..writeByte(14)
|
||||
..write(obj.subscribeKey)
|
||||
..writeByte(15)
|
||||
..write(obj.timestampCreated)
|
||||
..writeByte(16)
|
||||
..write(obj.timestampLastSent)
|
||||
..writeByte(17)
|
||||
..write(obj.messagesSent);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => typeId.hashCode;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
other is ChannelAdapter &&
|
||||
runtimeType == other.runtimeType &&
|
||||
typeId == other.typeId;
|
||||
}
|
@@ -1,19 +1,39 @@
|
||||
class Message {
|
||||
import 'package:hive_flutter/hive_flutter.dart';
|
||||
import 'package:simplecloudnotifier/state/interfaces.dart';
|
||||
|
||||
part 'message.g.dart';
|
||||
|
||||
@HiveType(typeId: 105)
|
||||
class Message extends HiveObject implements FieldDebuggable {
|
||||
@HiveField(0)
|
||||
final String messageID;
|
||||
|
||||
@HiveField(10)
|
||||
final String senderUserID;
|
||||
@HiveField(11)
|
||||
final String channelInternalName;
|
||||
@HiveField(12)
|
||||
final String channelID;
|
||||
@HiveField(13)
|
||||
final String? senderName;
|
||||
@HiveField(14)
|
||||
final String senderIP;
|
||||
@HiveField(15)
|
||||
final String timestamp;
|
||||
@HiveField(16)
|
||||
final String title;
|
||||
@HiveField(17)
|
||||
final String? content;
|
||||
@HiveField(18)
|
||||
final int priority;
|
||||
@HiveField(19)
|
||||
final String? userMessageID;
|
||||
@HiveField(20)
|
||||
final String usedKeyID;
|
||||
@HiveField(21)
|
||||
final bool trimmed;
|
||||
|
||||
const Message({
|
||||
Message({
|
||||
required this.messageID,
|
||||
required this.senderUserID,
|
||||
required this.channelInternalName,
|
||||
@@ -54,4 +74,27 @@ class Message {
|
||||
|
||||
return (npt, messages);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'Message[${this.messageID}]';
|
||||
}
|
||||
|
||||
List<(String, String)> debugFieldList() {
|
||||
return [
|
||||
('messageID', this.messageID),
|
||||
('senderUserID', this.senderUserID),
|
||||
('channelInternalName', this.channelInternalName),
|
||||
('channelID', this.channelID),
|
||||
('senderName', this.senderName ?? ''),
|
||||
('senderIP', this.senderIP),
|
||||
('timestamp', this.timestamp),
|
||||
('title', this.title),
|
||||
('content', this.content ?? ''),
|
||||
('priority', '${this.priority}'),
|
||||
('userMessageID', this.userMessageID ?? ''),
|
||||
('usedKeyID', this.usedKeyID),
|
||||
('trimmed', '${this.trimmed}'),
|
||||
];
|
||||
}
|
||||
}
|
||||
|
77
flutter/lib/models/message.g.dart
Normal file
77
flutter/lib/models/message.g.dart
Normal file
@@ -0,0 +1,77 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'message.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// TypeAdapterGenerator
|
||||
// **************************************************************************
|
||||
|
||||
class MessageAdapter extends TypeAdapter<Message> {
|
||||
@override
|
||||
final int typeId = 105;
|
||||
|
||||
@override
|
||||
Message read(BinaryReader reader) {
|
||||
final numOfFields = reader.readByte();
|
||||
final fields = <int, dynamic>{
|
||||
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
|
||||
};
|
||||
return Message(
|
||||
messageID: fields[0] as String,
|
||||
senderUserID: fields[10] as String,
|
||||
channelInternalName: fields[11] as String,
|
||||
channelID: fields[12] as String,
|
||||
senderName: fields[13] as String?,
|
||||
senderIP: fields[14] as String,
|
||||
timestamp: fields[15] as String,
|
||||
title: fields[16] as String,
|
||||
content: fields[17] as String?,
|
||||
priority: fields[18] as int,
|
||||
userMessageID: fields[19] as String?,
|
||||
usedKeyID: fields[20] as String,
|
||||
trimmed: fields[21] as bool,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void write(BinaryWriter writer, Message obj) {
|
||||
writer
|
||||
..writeByte(13)
|
||||
..writeByte(0)
|
||||
..write(obj.messageID)
|
||||
..writeByte(10)
|
||||
..write(obj.senderUserID)
|
||||
..writeByte(11)
|
||||
..write(obj.channelInternalName)
|
||||
..writeByte(12)
|
||||
..write(obj.channelID)
|
||||
..writeByte(13)
|
||||
..write(obj.senderName)
|
||||
..writeByte(14)
|
||||
..write(obj.senderIP)
|
||||
..writeByte(15)
|
||||
..write(obj.timestamp)
|
||||
..writeByte(16)
|
||||
..write(obj.title)
|
||||
..writeByte(17)
|
||||
..write(obj.content)
|
||||
..writeByte(18)
|
||||
..write(obj.priority)
|
||||
..writeByte(19)
|
||||
..write(obj.userMessageID)
|
||||
..writeByte(20)
|
||||
..write(obj.usedKeyID)
|
||||
..writeByte(21)
|
||||
..write(obj.trimmed);
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => typeId.hashCode;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
other is MessageAdapter &&
|
||||
runtimeType == other.runtimeType &&
|
||||
typeId == other.typeId;
|
||||
}
|
Reference in New Issue
Block a user