Merge pull request #2939 from pangeachat/2933-use-activity-image-url-rather-than-re-uploading-to-matrix
2933 use activity image url rather than re uploading to matrix
This commit is contained in:
commit
b342fe42ce
4 changed files with 60 additions and 35 deletions
|
|
@ -1,5 +1,6 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter_linkify/flutter_linkify.dart';
|
||||
import 'package:matrix/matrix.dart';
|
||||
|
||||
|
|
@ -112,17 +113,39 @@ class ImageBubble extends StatelessWidget {
|
|||
borderRadius: borderRadius,
|
||||
child: Hero(
|
||||
tag: event.eventId,
|
||||
child: MxcImage(
|
||||
event: event,
|
||||
width: width,
|
||||
height: height,
|
||||
fit: fit,
|
||||
animated: animated,
|
||||
isThumbnail: thumbnailOnly,
|
||||
placeholder: event.messageType == MessageTypes.Sticker
|
||||
? null
|
||||
: _buildPlaceholder,
|
||||
),
|
||||
// #Pangea
|
||||
child: event.content['url'] is String &&
|
||||
!(event.content['url'] as String).startsWith('mxc')
|
||||
? CachedNetworkImage(
|
||||
imageUrl: event.content['url'] as String,
|
||||
width: width,
|
||||
height: height,
|
||||
fit: fit,
|
||||
placeholder: (context, url) => _buildPlaceholder(context),
|
||||
)
|
||||
: MxcImage(
|
||||
event: event,
|
||||
width: width,
|
||||
height: height,
|
||||
fit: fit,
|
||||
animated: animated,
|
||||
isThumbnail: thumbnailOnly,
|
||||
placeholder: event.messageType == MessageTypes.Sticker
|
||||
? null
|
||||
: _buildPlaceholder,
|
||||
),
|
||||
// child: MxcImage(
|
||||
// event: event,
|
||||
// width: width,
|
||||
// height: height,
|
||||
// fit: fit,
|
||||
// animated: animated,
|
||||
// isThumbnail: thumbnailOnly,
|
||||
// placeholder: event.messageType == MessageTypes.Sticker
|
||||
// ? null
|
||||
// : _buildPlaceholder,
|
||||
// ),
|
||||
// Pangea#
|
||||
),
|
||||
),
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
import 'dart:typed_data';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
|
@ -25,8 +23,6 @@ class ActivityPlannerBuilder extends StatefulWidget {
|
|||
final Future<void> Function(
|
||||
String,
|
||||
ActivityPlanModel,
|
||||
Uint8List?,
|
||||
String?,
|
||||
)? onEdit;
|
||||
|
||||
const ActivityPlannerBuilder({
|
||||
|
|
@ -204,8 +200,6 @@ class ActivityPlannerBuilderState extends State<ActivityPlannerBuilder> {
|
|||
await widget.onEdit!(
|
||||
widget.initialActivity.bookmarkId,
|
||||
updatedActivity,
|
||||
avatar,
|
||||
filename,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -225,7 +219,6 @@ class ActivityPlannerBuilderState extends State<ActivityPlannerBuilder> {
|
|||
updatedActivity,
|
||||
avatar: avatar,
|
||||
filename: filename,
|
||||
avatarURL: imageURL,
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -128,7 +128,6 @@ class ActivityRoomSelectionState extends State<ActivityRoomSelection> {
|
|||
widget.controller.updatedActivity,
|
||||
avatar: widget.controller.avatar,
|
||||
filename: widget.controller.filename,
|
||||
avatarURL: widget.controller.imageURL,
|
||||
);
|
||||
_launchStatus[room.id] = 1;
|
||||
} catch (e, s) {
|
||||
|
|
@ -205,7 +204,6 @@ class ActivityRoomSelectionState extends State<ActivityRoomSelection> {
|
|||
widget.controller.updatedActivity,
|
||||
avatar: widget.controller.avatar,
|
||||
filename: widget.controller.filename,
|
||||
avatarURL: widget.controller.imageURL,
|
||||
);
|
||||
}
|
||||
_launchStatus["placeholder"] = 1;
|
||||
|
|
|
|||
|
|
@ -273,15 +273,21 @@ extension EventsRoomExtension on Room {
|
|||
Future<void> sendActivityPlan(
|
||||
ActivityPlanModel activity, {
|
||||
Uint8List? avatar,
|
||||
String? avatarURL,
|
||||
String? filename,
|
||||
}) async {
|
||||
BookmarkedActivitiesRepo.save(activity);
|
||||
|
||||
String? imageURL = activity.imageURL;
|
||||
final eventId = await pangeaSendTextEvent(
|
||||
activity.markdown,
|
||||
messageTag: ModelKey.messageTagActivityPlan,
|
||||
);
|
||||
|
||||
Uint8List? bytes = avatar;
|
||||
if (avatarURL != null && bytes == null) {
|
||||
if (imageURL != null && bytes == null) {
|
||||
try {
|
||||
final resp = await http
|
||||
.get(Uri.parse(avatarURL))
|
||||
.get(Uri.parse(imageURL))
|
||||
.timeout(const Duration(seconds: 5));
|
||||
bytes = resp.bodyBytes;
|
||||
} catch (e, s) {
|
||||
|
|
@ -289,12 +295,20 @@ extension EventsRoomExtension on Room {
|
|||
e: e,
|
||||
s: s,
|
||||
data: {
|
||||
"avatarURL": avatarURL,
|
||||
"avatarURL": imageURL,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (bytes != null && imageURL == null) {
|
||||
final url = await client.uploadContent(
|
||||
bytes,
|
||||
filename: filename,
|
||||
);
|
||||
imageURL = url.toString();
|
||||
}
|
||||
|
||||
MatrixFile? file;
|
||||
if (filename != null && bytes != null) {
|
||||
file = MatrixFile(
|
||||
|
|
@ -302,19 +316,16 @@ extension EventsRoomExtension on Room {
|
|||
name: filename,
|
||||
);
|
||||
}
|
||||
final eventId = await pangeaSendTextEvent(
|
||||
activity.markdown,
|
||||
messageTag: ModelKey.messageTagActivityPlan,
|
||||
);
|
||||
|
||||
if (file != null) {
|
||||
await sendFileEvent(
|
||||
file,
|
||||
shrinkImageMaxDimension: 1600,
|
||||
extraContent: {
|
||||
ModelKey.messageTags: ModelKey.messageTagActivityPlan,
|
||||
},
|
||||
);
|
||||
final content = <String, dynamic>{
|
||||
'msgtype': file.msgType,
|
||||
'body': file.name,
|
||||
'filename': file.name,
|
||||
'url': imageURL,
|
||||
ModelKey.messageTags: ModelKey.messageTagActivityPlan,
|
||||
};
|
||||
await sendEvent(content);
|
||||
}
|
||||
|
||||
if (canSendDefaultStates) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue