feat: menu de contexto em bottom sheet, painel de anexos, perfil e feed do mural
Some checks failed
Main Deploy Workflow / deploy_web (push) Has been cancelled
Main Deploy Workflow / deploy_playstore_internal (push) Has been cancelled
Close stale issues and PRs / stale (push) Has been cancelled

- Salas (chat, canais, murais e salas de espacos) abrem bottom sheet com grid de acoes
- Botao + da barra de digitacao abre painel de anexos em grid de 3 colunas que empurra a caixa de texto
- Modal do perfil permite editar nome/status e ler QR code (mobile)
- Alterar status atualiza localmente via extensao do SDK matrix
- Mural pre-carrega historico para exibir todas as midias em dispositivos sem cache
This commit is contained in:
2026-09-21 14:30:47 -03:00
parent 762178d9f9
commit 5a72c71cfc
14 changed files with 861 additions and 584 deletions

View File

@@ -27,6 +27,7 @@ import 'package:matrix/matrix.dart';
import '../../utils/matrix_sdk_extensions/room_extension.dart';
import '../../utils/stream_extension.dart';
import 'chat_attachment_picker.dart';
import 'chat_emoji_picker.dart';
import 'chat_input_row.dart';
@@ -57,6 +58,7 @@ class ChatView extends StatelessWidget {
canPop:
controller.selectedEvents.isEmpty &&
!controller.showEmojiPicker &&
!controller.showAttachmentPicker &&
controller.activeThreadId == null,
onPopInvokedWithResult: (pop, _) async {
if (pop) return;
@@ -64,6 +66,8 @@ class ChatView extends StatelessWidget {
controller.clearSelectedEvents();
} else if (controller.showEmojiPicker) {
controller.emojiPickerAction();
} else if (controller.showAttachmentPicker) {
controller.attachmentPickerAction();
} else if (controller.activeThreadId != null) {
controller.closeThread();
}
@@ -473,6 +477,9 @@ class ChatView extends StatelessWidget {
children: [
ReplyDisplay(controller),
ChatInputRow(controller),
ChatAttachmentPicker(
controller,
),
ChatEmojiPicker(controller),
],
),