♻️ Basic things to move to events system

This commit is contained in:
2024-06-28 00:05:43 +08:00
parent e84bca8948
commit bbc9ea69f7
14 changed files with 416 additions and 308 deletions

View File

@ -5,7 +5,7 @@ import 'package:flutter_animate/flutter_animate.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:get/get.dart';
import 'package:solian/models/message.dart';
import 'package:solian/models/event.dart';
import 'package:solian/widgets/account/account_avatar.dart';
import 'package:solian/widgets/account/account_profile_popup.dart';
import 'package:solian/widgets/attachments/attachment_list.dart';
@ -13,7 +13,7 @@ import 'package:timeago/timeago.dart' show format;
import 'package:url_launcher/url_launcher_string.dart';
class ChatMessage extends StatelessWidget {
final Message item;
final Event item;
final bool isContentPreviewing;
final bool isReply;
final bool isMerged;
@ -46,7 +46,7 @@ class ChatMessage extends StatelessWidget {
final hasAttachment = item.attachments?.isNotEmpty ?? false;
return FutureBuilder(
future: decodeContent(item.content),
future: decodeContent(item.body),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return Opacity(

View File

@ -3,7 +3,7 @@ import 'package:flutter_animate/flutter_animate.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:get/get.dart';
import 'package:solian/models/channel.dart';
import 'package:solian/models/message.dart';
import 'package:solian/models/event.dart';
import 'package:solian/models/realm.dart';
import 'package:solian/providers/auth.dart';
import 'package:solian/widgets/chat/chat_message_deletion.dart';
@ -11,7 +11,7 @@ import 'package:solian/widgets/chat/chat_message_deletion.dart';
class ChatMessageAction extends StatefulWidget {
final Channel channel;
final Realm? realm;
final Message item;
final Event item;
final Function? onEdit;
final Function? onReply;

View File

@ -2,14 +2,14 @@ import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:solian/exts.dart';
import 'package:solian/models/channel.dart';
import 'package:solian/models/message.dart';
import 'package:solian/models/event.dart';
import 'package:solian/models/realm.dart';
import 'package:solian/providers/auth.dart';
class ChatMessageDeletionDialog extends StatefulWidget {
final Channel channel;
final Realm? realm;
final Message item;
final Event item;
const ChatMessageDeletionDialog({
super.key,

View File

@ -4,19 +4,19 @@ import 'package:get/get.dart';
import 'package:solian/exts.dart';
import 'package:solian/models/account.dart';
import 'package:solian/models/channel.dart';
import 'package:solian/models/message.dart';
import 'package:solian/models/event.dart';
import 'package:solian/providers/auth.dart';
import 'package:solian/widgets/attachments/attachment_publish.dart';
import 'package:solian/widgets/chat/chat_message.dart';
import 'package:uuid/uuid.dart';
class ChatMessageInput extends StatefulWidget {
final Message? edit;
final Message? reply;
final Event? edit;
final Event? reply;
final String? placeholder;
final Channel channel;
final String realm;
final Function(Message) onSent;
final Function(Event) onSent;
final Function()? onReset;
const ChatMessageInput({
@ -40,8 +40,8 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
List<int> _attachments = List.empty(growable: true);
Message? _editTo;
Message? _replyTo;
Event? _editTo;
Event? _replyTo;
void showAttachments() {
showModalBottomSheet(
@ -89,12 +89,12 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
accountId: prof.body['id'],
notify: 0,
);
final message = Message(
final message = Event(
id: 0,
uuid: payload['uuid'] as String,
createdAt: DateTime.now(),
updatedAt: DateTime.now(),
content: payload['content'] as Map<String, dynamic>,
body: payload['content'] as Map<String, dynamic>,
type: payload['type'] as String,
attachments: _attachments,
sender: sender,
@ -141,7 +141,7 @@ class _ChatMessageInputState extends State<ChatMessageInput> {
void syncWidget() {
if (widget.edit != null) {
_editTo = widget.edit!;
_textController.text = widget.edit!.content['value'];
_textController.text = widget.edit!.body['value'];
}
if (widget.reply != null) {
_replyTo = widget.reply!;