From 582432dbb9169697868c8a21635032e2ed089cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Sat, 30 May 2026 13:57:26 +0200 Subject: [PATCH] implemented support for viewing large group profile pictures --- lib/view/pages/talk/details/chat_info.dart | 14 ++++++------- lib/widget/large_profile_picture_view.dart | 24 ++++++++++++++++++---- 2 files changed, 27 insertions(+), 11 deletions(-) diff --git a/lib/view/pages/talk/details/chat_info.dart b/lib/view/pages/talk/details/chat_info.dart index a4859c2..6eae5c7 100644 --- a/lib/view/pages/talk/details/chat_info.dart +++ b/lib/view/pages/talk/details/chat_info.dart @@ -50,13 +50,13 @@ class _ChatInfoState extends State { isGroup: isGroup, size: 80, ), - onTap: () { - if (isGroup) return; - TalkNavigator.pushSplitView( - context, - LargeProfilePictureView(widget.room.name), - ); - }, + onTap: () => TalkNavigator.pushSplitView( + context, + LargeProfilePictureView( + id: isGroup ? widget.room.token : widget.room.name, + isGroup: isGroup, + ), + ), ), const SizedBox(height: 30), Text( diff --git a/lib/widget/large_profile_picture_view.dart b/lib/widget/large_profile_picture_view.dart index 9614413..5b20824 100644 --- a/lib/widget/large_profile_picture_view.dart +++ b/lib/widget/large_profile_picture_view.dart @@ -1,20 +1,36 @@ import 'package:flutter/material.dart'; import 'package:photo_view/photo_view.dart'; +import '../model/account_data.dart'; import '../model/endpoint_data.dart'; class LargeProfilePictureView extends StatelessWidget { - final String username; - const LargeProfilePictureView(this.username, {super.key}); + final String id; + 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 Widget build(BuildContext context) => Scaffold( - appBar: AppBar(title: const Text('Profilbild')), + appBar: AppBar(title: Text(isGroup ? 'Gruppenbild' : 'Profilbild')), body: PhotoView( minScale: 0.5, maxScale: 3.0, imageProvider: Image.network( - 'https://${EndpointData().nextcloud().full()}/avatar/$username/1024', + _imageUrl(), + headers: {'Authorization': AccountData().getBasicAuthHeader()}, ).image, backgroundDecoration: BoxDecoration( color: Theme.of(context).colorScheme.surface,