implemented support for viewing large group profile pictures

This commit is contained in:
2026-05-30 13:57:26 +02:00
parent ece0669f7d
commit 582432dbb9
2 changed files with 27 additions and 11 deletions
+6 -6
View File
@@ -50,13 +50,13 @@ class _ChatInfoState extends State<ChatInfo> {
isGroup: isGroup, isGroup: isGroup,
size: 80, size: 80,
), ),
onTap: () { onTap: () => TalkNavigator.pushSplitView(
if (isGroup) return;
TalkNavigator.pushSplitView(
context, context,
LargeProfilePictureView(widget.room.name), LargeProfilePictureView(
); id: isGroup ? widget.room.token : widget.room.name,
}, isGroup: isGroup,
),
),
), ),
const SizedBox(height: 30), const SizedBox(height: 30),
Text( Text(
+20 -4
View File
@@ -1,20 +1,36 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view.dart';
import '../model/account_data.dart';
import '../model/endpoint_data.dart'; import '../model/endpoint_data.dart';
class LargeProfilePictureView extends StatelessWidget { class LargeProfilePictureView extends StatelessWidget {
final String username; final String id;
const LargeProfilePictureView(this.username, {super.key}); final bool isGroup;
const LargeProfilePictureView({
required this.id,
this.isGroup = false,
super.key,
});
String _imageUrl() {
final host = EndpointData().nextcloud().full();
if (isGroup) {
return 'https://$host/ocs/v2.php/apps/spreed/api/v1/room/$id/avatar';
}
return 'https://$host/avatar/$id/1024';
}
@override @override
Widget build(BuildContext context) => Scaffold( Widget build(BuildContext context) => Scaffold(
appBar: AppBar(title: const Text('Profilbild')), appBar: AppBar(title: Text(isGroup ? 'Gruppenbild' : 'Profilbild')),
body: PhotoView( body: PhotoView(
minScale: 0.5, minScale: 0.5,
maxScale: 3.0, maxScale: 3.0,
imageProvider: Image.network( imageProvider: Image.network(
'https://${EndpointData().nextcloud().full()}/avatar/$username/1024', _imageUrl(),
headers: {'Authorization': AccountData().getBasicAuthHeader()},
).image, ).image,
backgroundDecoration: BoxDecoration( backgroundDecoration: BoxDecoration(
color: Theme.of(context).colorScheme.surface, color: Theme.of(context).colorScheme.surface,