mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Can change conversation image
This commit is contained in:
@ -1,4 +1,6 @@
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:comunic/helpers/conversations_helper.dart';
|
||||
import 'package:comunic/helpers/server_config_helper.dart';
|
||||
import 'package:comunic/helpers/users_helper.dart';
|
||||
import 'package:comunic/lists/users_list.dart';
|
||||
import 'package:comunic/models/conversation.dart';
|
||||
@ -6,6 +8,7 @@ import 'package:comunic/models/new_conversation.dart';
|
||||
import 'package:comunic/models/new_conversation_settings.dart';
|
||||
import 'package:comunic/models/user.dart';
|
||||
import 'package:comunic/ui/dialogs/color_picker_dialog.dart';
|
||||
import 'package:comunic/ui/dialogs/pick_file_dialog.dart';
|
||||
import 'package:comunic/ui/routes/main_route/main_route.dart';
|
||||
import 'package:comunic/ui/tiles/simple_user_tile.dart';
|
||||
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
||||
@ -46,6 +49,7 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
|
||||
Set<int> _admins = Set();
|
||||
bool _followConversation = true;
|
||||
bool _canEveryoneAddMembers = true;
|
||||
String _image;
|
||||
|
||||
String get _conversationColor => _colorController.text;
|
||||
|
||||
@ -87,6 +91,7 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
|
||||
_admins = _conversation.adminsID;
|
||||
_followConversation = _conversation.following;
|
||||
_canEveryoneAddMembers = _conversation.canEveryoneAddMembers;
|
||||
_image = _conversation.logoURL;
|
||||
|
||||
setState(() {});
|
||||
}
|
||||
@ -170,6 +175,9 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
|
||||
],
|
||||
),
|
||||
|
||||
// Conversation image
|
||||
isUpdating ? _buildConversationImageWidget() : Container(),
|
||||
|
||||
// Add a member to the conversation
|
||||
PickUserWidget(
|
||||
resetOnChoose: true,
|
||||
@ -314,4 +322,48 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
|
||||
snack(context, tr("Failed to update conversation settings!"));
|
||||
}
|
||||
}
|
||||
|
||||
/// Conversation image management
|
||||
Widget _buildConversationImageWidget() => Column(
|
||||
children: [
|
||||
SizedBox(height: 10),
|
||||
Text(tr("Conversation logo"),
|
||||
style: TextStyle(fontWeight: FontWeight.bold)),
|
||||
SizedBox(height: 5),
|
||||
_image == null
|
||||
? Text("No logo defined yet.")
|
||||
: CachedNetworkImage(imageUrl: _image),
|
||||
SizedBox(height: 5),
|
||||
isAdmin
|
||||
? OutlineButton(
|
||||
onPressed: _uploadNewLogo,
|
||||
child: Text(tr("Change logo")),
|
||||
)
|
||||
: Container(),
|
||||
SizedBox(height: 10),
|
||||
],
|
||||
);
|
||||
|
||||
/// Upload new conversation logo
|
||||
Future<void> _uploadNewLogo() async {
|
||||
try {
|
||||
final newLogo = await showPickFileDialog(
|
||||
context: context,
|
||||
allowedMimeTypes: ["image/png", "image/jpeg", "image/gif"],
|
||||
imageMaxWidth: srvConfig.conversationsPolicy.maxLogoWidth,
|
||||
imageMaxHeight: srvConfig.conversationsPolicy.maxLogoHeight,
|
||||
);
|
||||
|
||||
if (newLogo == null) return;
|
||||
|
||||
await ConversationsHelper.changeImage(_conversation.id, newLogo);
|
||||
|
||||
final newConvSettings =
|
||||
await ConversationsHelper().getSingle(_conversation.id, force: true);
|
||||
setState(() => _image = newConvSettings.logoURL);
|
||||
} catch (e, s) {
|
||||
logError(e, s);
|
||||
snack(context, tr("Failed to change conversation logo !"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user