Add the ability to open attachments in their own view
This commit is contained in:
parent
e5390cda15
commit
dd724b04b1
5 changed files with 63 additions and 5 deletions
|
|
@ -60,7 +60,7 @@ A simple and user-friendly Matrix client made with Flutter and the Matrix Dart S
|
|||
- [x] Attachments
|
||||
- [x] Blurhashing
|
||||
- [ ] Downloading attachments
|
||||
- [ ] Opening attachments in their own view
|
||||
- [x] Opening attachments in their own view
|
||||
- [ ] Polls
|
||||
- [x] Mentions
|
||||
- [x] Users
|
||||
|
|
|
|||
14
lib/controllers/cross_cache_controller.dart
Normal file
14
lib/controllers/cross_cache_controller.dart
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import "package:cross_cache/cross_cache.dart";
|
||||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
|
||||
class CrossCacheController extends Notifier<CrossCache> {
|
||||
static const String spaceKey = "space";
|
||||
static const String roomKey = "room";
|
||||
|
||||
@override
|
||||
CrossCache build() => CrossCache();
|
||||
|
||||
static final provider = NotifierProvider<CrossCacheController, CrossCache>(
|
||||
CrossCacheController.new,
|
||||
);
|
||||
}
|
||||
|
|
@ -1,5 +1,4 @@
|
|||
import "dart:async";
|
||||
|
||||
import "package:cross_cache/cross_cache.dart";
|
||||
import "package:dynamic_polls/dynamic_polls.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_chat_core/flutter_chat_core.dart";
|
||||
|
|
@ -12,6 +11,7 @@ import "package:flyer_chat_system_message/flyer_chat_system_message.dart";
|
|||
import "package:flyer_chat_text_message/flyer_chat_text_message.dart";
|
||||
import "package:hooks_riverpod/hooks_riverpod.dart";
|
||||
import "package:matrix/matrix.dart";
|
||||
import "package:nexus/controllers/cross_cache_controller.dart";
|
||||
import "package:nexus/controllers/selected_room_controller.dart";
|
||||
import "package:nexus/controllers/room_chat_controller.dart";
|
||||
import "package:nexus/helpers/extensions/better_when.dart";
|
||||
|
|
@ -224,6 +224,39 @@ class RoomChat extends HookConsumerWidget {
|
|||
globalPosition: details.globalPosition,
|
||||
children: getMessageOptions(message),
|
||||
),
|
||||
onMessageTap:
|
||||
(
|
||||
context,
|
||||
message, {
|
||||
required details,
|
||||
required index,
|
||||
}) {
|
||||
if (message is ImageMessage) {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (_) => Dialog(
|
||||
backgroundColor:
|
||||
Colors.transparent,
|
||||
insetPadding: EdgeInsets.all(64),
|
||||
child: InteractiveViewer(
|
||||
child: Image(
|
||||
image: CachedNetworkImage(
|
||||
message.source,
|
||||
ref.watch(
|
||||
CrossCacheController
|
||||
.provider,
|
||||
),
|
||||
headers: room
|
||||
.roomData
|
||||
.client
|
||||
.headers,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
},
|
||||
builders: Builders(
|
||||
loadMoreBuilder: (_) => Loading(),
|
||||
chatAnimatedListBuilder: (_, itemBuilder) =>
|
||||
|
|
@ -432,6 +465,17 @@ class RoomChat extends HookConsumerWidget {
|
|||
groupStatus: groupStatus,
|
||||
alwaysShow: true,
|
||||
),
|
||||
customImageProvider:
|
||||
CachedNetworkImage(
|
||||
message.source,
|
||||
ref.watch(
|
||||
CrossCacheController.provider,
|
||||
),
|
||||
headers: room
|
||||
.roomData
|
||||
.client
|
||||
.headers,
|
||||
),
|
||||
errorBuilder:
|
||||
(context, error, stackTrace) =>
|
||||
Center(
|
||||
|
|
@ -446,7 +490,6 @@ class RoomChat extends HookConsumerWidget {
|
|||
),
|
||||
message: message,
|
||||
index: index,
|
||||
headers: room.roomData.client.headers,
|
||||
),
|
||||
fileMessageBuilder:
|
||||
(
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ packages:
|
|||
source: hosted
|
||||
version: "1.15.0"
|
||||
cross_cache:
|
||||
dependency: transitive
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: cross_cache
|
||||
sha256: "4983a16603cc99b0a14de6a772fa8ee4533411f46f3c423f1386fea7566049c5"
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ dependencies:
|
|||
flutter_secure_storage: ^10.0.0
|
||||
dynamic_polls: ^0.0.6
|
||||
flutter_hooks: ^0.21.3+1
|
||||
cross_cache: ^1.1.0
|
||||
|
||||
dev_dependencies:
|
||||
build_runner: ^2.4.11
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue