mirror of
				https://gitlab.com/comunic/comunicmobile
				synced 2025-11-04 04:04:18 +00:00 
			
		
		
		
	Can create conversations
This commit is contained in:
		@@ -17,6 +17,7 @@ import 'package:comunic/models/new_conversation_message.dart';
 | 
				
			|||||||
import 'package:comunic/models/new_conversation_settings.dart';
 | 
					import 'package:comunic/models/new_conversation_settings.dart';
 | 
				
			||||||
import 'package:comunic/models/unread_conversation.dart';
 | 
					import 'package:comunic/models/unread_conversation.dart';
 | 
				
			||||||
import 'package:comunic/utils/account_utils.dart';
 | 
					import 'package:comunic/utils/account_utils.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/utils/color_utils.dart';
 | 
				
			||||||
import 'package:comunic/utils/dart_color.dart';
 | 
					import 'package:comunic/utils/dart_color.dart';
 | 
				
			||||||
import 'package:dio/dio.dart';
 | 
					import 'package:dio/dio.dart';
 | 
				
			||||||
import 'package:meta/meta.dart';
 | 
					import 'package:meta/meta.dart';
 | 
				
			||||||
@@ -32,17 +33,18 @@ class ConversationsHelper {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /// Create a new conversation
 | 
					  /// Create a new conversation
 | 
				
			||||||
  ///
 | 
					  ///
 | 
				
			||||||
  /// Return the ID of the newly created conversation or -1 in case of failure
 | 
					  /// Return the ID of the newly created conversation
 | 
				
			||||||
  Future<int> createConversation(NewConversation settings) async {
 | 
					  ///
 | 
				
			||||||
    final response =
 | 
					  /// Throws in case of failure
 | 
				
			||||||
        await APIRequest(uri: "conversations/create", needLogin: true, args: {
 | 
					  static Future<int> createConversation(NewConversation settings) async {
 | 
				
			||||||
 | 
					    final response = await APIRequest.withLogin("conversations/create", args: {
 | 
				
			||||||
      "name": settings.name ?? "",
 | 
					      "name": settings.name ?? "",
 | 
				
			||||||
      "follow": settings.follow ? "true" : "false",
 | 
					      "follow": settings.follow ? "true" : "false",
 | 
				
			||||||
      "users": settings.members.join(","),
 | 
					      "users": settings.members.join(","),
 | 
				
			||||||
      "color": settings.color ?? ","
 | 
					      "color": colorToHex(settings.color) ?? ","
 | 
				
			||||||
    }).addBool("canEveryoneAddMembers", settings.canEveryoneAddMembers).exec();
 | 
					    })
 | 
				
			||||||
 | 
					        .addBool("canEveryoneAddMembers", settings.canEveryoneAddMembers)
 | 
				
			||||||
    if (response.code != 200) return -1;
 | 
					        .execWithThrow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return response.getObject()["conversationID"];
 | 
					    return response.getObject()["conversationID"];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -56,6 +56,10 @@ class Conversation extends SerializableElement<Conversation> {
 | 
				
			|||||||
  /// Get the list of members in the conversation
 | 
					  /// Get the list of members in the conversation
 | 
				
			||||||
  Set<int> get membersID => members.map((e) => e.userID).toSet();
 | 
					  Set<int> get membersID => members.map((e) => e.userID).toSet();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Get the list of admins in the conversation
 | 
				
			||||||
 | 
					  Set<int> get adminsID =>
 | 
				
			||||||
 | 
					      members.where((e) => e.isAdmin).map((e) => e.userID).toSet();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Get the list of the OTHER members of the conversation (all except current user)
 | 
					  /// Get the list of the OTHER members of the conversation (all except current user)
 | 
				
			||||||
  Set<int> get otherMembersID => membersID..remove(userID());
 | 
					  Set<int> get otherMembersID => membersID..remove(userID());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ class NewConversation {
 | 
				
			|||||||
  final List<int> members;
 | 
					  final List<int> members;
 | 
				
			||||||
  final bool follow;
 | 
					  final bool follow;
 | 
				
			||||||
  final bool canEveryoneAddMembers;
 | 
					  final bool canEveryoneAddMembers;
 | 
				
			||||||
  final String color;
 | 
					  final Color color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const NewConversation({
 | 
					  const NewConversation({
 | 
				
			||||||
    @required this.name,
 | 
					    @required this.name,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,4 @@
 | 
				
			|||||||
import 'package:comunic/helpers/conversations_helper.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/helpers/users_helper.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/lists/users_list.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/models/conversation.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/ui/screens/update_conversation_screen.dart';
 | 
					import 'package:comunic/ui/screens/update_conversation_screen.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/utils/intl_utils.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/utils/ui_utils.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Update a conversation route
 | 
					/// Update a conversation route
 | 
				
			||||||
@@ -24,69 +17,7 @@ class UpdateConversationRoute extends StatefulWidget {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _UpdateConversationRoute extends State<UpdateConversationRoute> {
 | 
					class _UpdateConversationRoute extends State<UpdateConversationRoute> {
 | 
				
			||||||
  Conversation _conversation;
 | 
					 | 
				
			||||||
  UsersList _membersInfo;
 | 
					 | 
				
			||||||
  bool _error = false;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  void didChangeDependencies() {
 | 
					  Widget build(BuildContext context) =>
 | 
				
			||||||
    super.didChangeDependencies();
 | 
					      UpdateConversationScreen(convID: widget.conversationID);
 | 
				
			||||||
    _loadConversation();
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  void setError(bool e) => setState(() {
 | 
					 | 
				
			||||||
        _error = e;
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Load information about the being updated conversation
 | 
					 | 
				
			||||||
  Future<void> _loadConversation() async {
 | 
					 | 
				
			||||||
    setError(false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      final conversation = await ConversationsHelper()
 | 
					 | 
				
			||||||
          .getSingle(widget.conversationID, force: true);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      //Load information about the members of the conversation
 | 
					 | 
				
			||||||
      _membersInfo = await UsersHelper().getList(conversation.membersID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      setState(() => _conversation = conversation);
 | 
					 | 
				
			||||||
    } catch (e, s) {
 | 
					 | 
				
			||||||
      print("Failed to load conversation information! $e=>$s");
 | 
					 | 
				
			||||||
      setError(true);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Build the body of this widget
 | 
					 | 
				
			||||||
  Widget _buildBody() {
 | 
					 | 
				
			||||||
    if (_error)
 | 
					 | 
				
			||||||
      return buildErrorCard(
 | 
					 | 
				
			||||||
          tr("Could not load information about the conversation"),
 | 
					 | 
				
			||||||
          actions: [
 | 
					 | 
				
			||||||
            FlatButton(
 | 
					 | 
				
			||||||
              onPressed: _loadConversation,
 | 
					 | 
				
			||||||
              child: Text(
 | 
					 | 
				
			||||||
                tr("Retry").toUpperCase(),
 | 
					 | 
				
			||||||
                style: TextStyle(color: Colors.white),
 | 
					 | 
				
			||||||
              ),
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
          ]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (_conversation == null) return buildLoadingPage();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return UpdateConversationScreen(
 | 
					 | 
				
			||||||
      initialUsers: _membersInfo,
 | 
					 | 
				
			||||||
      initialSettings: _conversation,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					 | 
				
			||||||
    return Scaffold(
 | 
					 | 
				
			||||||
      appBar: AppBar(
 | 
					 | 
				
			||||||
        leading: ComunicBackButton(),
 | 
					 | 
				
			||||||
        title: Text(tr("Update a conversation")),
 | 
					 | 
				
			||||||
      ),
 | 
					 | 
				
			||||||
      body: _buildBody(),
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,4 @@
 | 
				
			|||||||
import 'package:comunic/ui/screens/update_conversation_screen.dart';
 | 
					import 'package:comunic/ui/screens/update_conversation_screen.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
 | 
					 | 
				
			||||||
import 'package:comunic/utils/intl_utils.dart';
 | 
					 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a new conversation route
 | 
					/// Create a new conversation route
 | 
				
			||||||
@@ -9,13 +7,5 @@ import 'package:flutter/material.dart';
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
class CreateConversationScreen extends StatelessWidget {
 | 
					class CreateConversationScreen extends StatelessWidget {
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) => UpdateConversationScreen();
 | 
				
			||||||
    return Scaffold(
 | 
					 | 
				
			||||||
      appBar: AppBar(
 | 
					 | 
				
			||||||
        leading: ComunicBackButton(),
 | 
					 | 
				
			||||||
        title: Text(tr("Create a conversation")),
 | 
					 | 
				
			||||||
      ),
 | 
					 | 
				
			||||||
      body: UpdateConversationScreen(),
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,20 @@
 | 
				
			|||||||
 | 
					import 'package:comunic/helpers/conversations_helper.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/helpers/users_helper.dart';
 | 
				
			||||||
import 'package:comunic/lists/users_list.dart';
 | 
					import 'package:comunic/lists/users_list.dart';
 | 
				
			||||||
import 'package:comunic/models/conversation.dart';
 | 
					import 'package:comunic/models/conversation.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/models/new_conversation.dart';
 | 
				
			||||||
import 'package:comunic/models/user.dart';
 | 
					import 'package:comunic/models/user.dart';
 | 
				
			||||||
import 'package:comunic/ui/dialogs/color_picker_dialog.dart';
 | 
					import 'package:comunic/ui/dialogs/color_picker_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/tiles/simple_user_tile.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/widgets/async_screen_widget.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/ui/widgets/comunic_back_button_widget.dart';
 | 
				
			||||||
import 'package:comunic/ui/widgets/pick_user_widget.dart';
 | 
					import 'package:comunic/ui/widgets/pick_user_widget.dart';
 | 
				
			||||||
import 'package:comunic/utils/color_utils.dart';
 | 
					import 'package:comunic/utils/color_utils.dart';
 | 
				
			||||||
import 'package:comunic/utils/dart_color.dart';
 | 
					import 'package:comunic/utils/dart_color.dart';
 | 
				
			||||||
import 'package:comunic/utils/intl_utils.dart';
 | 
					import 'package:comunic/utils/intl_utils.dart';
 | 
				
			||||||
import 'package:comunic/utils/log_utils.dart';
 | 
					import 'package:comunic/utils/log_utils.dart';
 | 
				
			||||||
 | 
					import 'package:comunic/utils/ui_utils.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create / Update conversation screen
 | 
					/// Create / Update conversation screen
 | 
				
			||||||
@@ -17,13 +24,11 @@ import 'package:flutter/material.dart';
 | 
				
			|||||||
enum _MembersMenuChoices { REMOVE }
 | 
					enum _MembersMenuChoices { REMOVE }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class UpdateConversationScreen extends StatefulWidget {
 | 
					class UpdateConversationScreen extends StatefulWidget {
 | 
				
			||||||
  final Conversation initialSettings;
 | 
					  final convID;
 | 
				
			||||||
  final UsersList initialUsers;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const UpdateConversationScreen({
 | 
					  const UpdateConversationScreen({
 | 
				
			||||||
    Key key,
 | 
					    Key key,
 | 
				
			||||||
    this.initialSettings,
 | 
					    this.convID,
 | 
				
			||||||
    this.initialUsers,
 | 
					 | 
				
			||||||
  }) : super(key: key);
 | 
					  }) : super(key: key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
@@ -31,9 +36,12 @@ class UpdateConversationScreen extends StatefulWidget {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
					class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
				
			||||||
 | 
					  Conversation _conversation;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  TextEditingController _nameController = TextEditingController();
 | 
					  TextEditingController _nameController = TextEditingController();
 | 
				
			||||||
  TextEditingController _colorController = TextEditingController();
 | 
					  TextEditingController _colorController = TextEditingController();
 | 
				
			||||||
  UsersList _members = UsersList();
 | 
					  UsersList _members = UsersList();
 | 
				
			||||||
 | 
					  Set<int> _admins = Set();
 | 
				
			||||||
  bool _followConversation = true;
 | 
					  bool _followConversation = true;
 | 
				
			||||||
  bool _canEveryoneAddMembers = true;
 | 
					  bool _canEveryoneAddMembers = true;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -50,29 +58,49 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get isUpdating => widget.initialSettings != null;
 | 
					  get isUpdating => widget.convID != null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  get isAdmin => !isUpdating || widget.initialSettings.isAdmin;
 | 
					  get isAdmin => !isUpdating || _conversation.isAdmin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Conversation get _initialSettings => widget.initialSettings;
 | 
					  bool get _canAddMembers => isAdmin || _conversation.canEveryoneAddMembers;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool get _canAddMembers => isAdmin || _initialSettings.canEveryoneAddMembers;
 | 
					  get _isValid => _members.length > 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  Future<void> _init() async {
 | 
				
			||||||
  void initState() {
 | 
					    if (!isUpdating) return;
 | 
				
			||||||
    super.initState();
 | 
					    _conversation =
 | 
				
			||||||
 | 
					        await ConversationsHelper().getSingle(widget.convID, force: true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Check if we are updating an existing conversation
 | 
					    _nameController.text = _conversation.name ?? "";
 | 
				
			||||||
    if (widget.initialSettings != null) {
 | 
					    _colorController.text =
 | 
				
			||||||
      _nameController.text = widget.initialSettings.name;
 | 
					        _conversationColor == null ? "" : "#${_conversation.color}";
 | 
				
			||||||
      _members = widget.initialUsers;
 | 
					    _members = await UsersHelper().getList(_conversation.membersID);
 | 
				
			||||||
      _followConversation = widget.initialSettings.following;
 | 
					    _admins = _conversation.adminsID;
 | 
				
			||||||
      _canEveryoneAddMembers = widget.initialSettings.canEveryoneAddMembers;
 | 
					    _followConversation = _conversation.following;
 | 
				
			||||||
    }
 | 
					    _canEveryoneAddMembers = _conversation.canEveryoneAddMembers;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) => Scaffold(
 | 
				
			||||||
 | 
					        appBar: AppBar(
 | 
				
			||||||
 | 
					          leading: ComunicBackButton(),
 | 
				
			||||||
 | 
					          title: Text(isUpdating
 | 
				
			||||||
 | 
					              ? tr("Update conversation")
 | 
				
			||||||
 | 
					              : tr("Create a conversation")),
 | 
				
			||||||
 | 
					          actions: [
 | 
				
			||||||
 | 
					            IconButton(
 | 
				
			||||||
 | 
					                icon: Icon(Icons.check),
 | 
				
			||||||
 | 
					                onPressed: _isValid ? _submitForm : null)
 | 
				
			||||||
 | 
					          ],
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        body: AsyncScreenWidget(
 | 
				
			||||||
 | 
					          onReload: _init,
 | 
				
			||||||
 | 
					          onBuild: _buildBody,
 | 
				
			||||||
 | 
					          errorMessage: tr("Failed to load conversation settings!"),
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Widget _buildBody() {
 | 
				
			||||||
    return SingleChildScrollView(
 | 
					    return SingleChildScrollView(
 | 
				
			||||||
      child: Container(
 | 
					      child: Container(
 | 
				
			||||||
        padding: EdgeInsets.all(8.0),
 | 
					        padding: EdgeInsets.all(8.0),
 | 
				
			||||||
@@ -159,7 +187,7 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
				
			|||||||
                                    value: _MembersMenuChoices.REMOVE,
 | 
					                                    value: _MembersMenuChoices.REMOVE,
 | 
				
			||||||
                                    enabled: isAdmin ||
 | 
					                                    enabled: isAdmin ||
 | 
				
			||||||
                                        (_canEveryoneAddMembers &&
 | 
					                                        (_canEveryoneAddMembers &&
 | 
				
			||||||
                                            !_initialSettings.members
 | 
					                                            !_conversation.membersID
 | 
				
			||||||
                                                .contains(f.id)),
 | 
					                                                .contains(f.id)),
 | 
				
			||||||
                                  )
 | 
					                                  )
 | 
				
			||||||
                                ],
 | 
					                                ],
 | 
				
			||||||
@@ -168,14 +196,6 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
				
			|||||||
                      ))
 | 
					                      ))
 | 
				
			||||||
                  .toList(),
 | 
					                  .toList(),
 | 
				
			||||||
            ),
 | 
					            ),
 | 
				
			||||||
 | 
					 | 
				
			||||||
            // Submit button
 | 
					 | 
				
			||||||
            RaisedButton(
 | 
					 | 
				
			||||||
              onPressed: _members.length < 1 ? null : _submitForm,
 | 
					 | 
				
			||||||
              child: Text(isUpdating
 | 
					 | 
				
			||||||
                  ? tr("Update the conversation")
 | 
					 | 
				
			||||||
                  : tr("Create the conversation")),
 | 
					 | 
				
			||||||
            )
 | 
					 | 
				
			||||||
          ],
 | 
					          ],
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
@@ -200,8 +220,23 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  /// Submit the conversation
 | 
					  /// Submit the conversation
 | 
				
			||||||
  Future<void> _submitForm() async {
 | 
					  Future<void> _submitForm() async {
 | 
				
			||||||
    // TODO : reimplement
 | 
					    try {
 | 
				
			||||||
    /* final settings = Conversation(
 | 
					      // Create the conversation
 | 
				
			||||||
 | 
					      if (!isUpdating) {
 | 
				
			||||||
 | 
					        final conversationID = await ConversationsHelper.createConversation(
 | 
				
			||||||
 | 
					            NewConversation(
 | 
				
			||||||
 | 
					                name: _nameController.text,
 | 
				
			||||||
 | 
					                members: _members.map((element) => element.id).toList(),
 | 
				
			||||||
 | 
					                follow: _followConversation,
 | 
				
			||||||
 | 
					                canEveryoneAddMembers: _canEveryoneAddMembers,
 | 
				
			||||||
 | 
					                color: _color));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        MainController.of(context).popPage();
 | 
				
			||||||
 | 
					        MainController.of(context).openConversation(conversationID);
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      // TODO : reimplement
 | 
				
			||||||
 | 
					      /* final settings = Conversation(
 | 
				
			||||||
        id: isUpdating ? widget.initialSettings.id : 0,
 | 
					        id: isUpdating ? widget.initialSettings.id : 0,
 | 
				
			||||||
        ownerID: isUpdating ? widget.initialSettings.ownerID : 0,
 | 
					        ownerID: isUpdating ? widget.initialSettings.ownerID : 0,
 | 
				
			||||||
        name: _nameController.text,
 | 
					        name: _nameController.text,
 | 
				
			||||||
@@ -237,5 +272,9 @@ class _UpdateConversationScreen extends State<UpdateConversationScreen> {
 | 
				
			|||||||
    MainController.of(context).popPage();
 | 
					    MainController.of(context).popPage();
 | 
				
			||||||
    if (!isUpdating)
 | 
					    if (!isUpdating)
 | 
				
			||||||
      MainController.of(context).openConversation(conversationID);*/
 | 
					      MainController.of(context).openConversation(conversationID);*/
 | 
				
			||||||
 | 
					    } catch (e, s) {
 | 
				
			||||||
 | 
					      logError(e, s);
 | 
				
			||||||
 | 
					      snack(context, tr("Failed to update conversation settings!"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,8 @@ import 'dart:ui';
 | 
				
			|||||||
String colorToHex(Color color) {
 | 
					String colorToHex(Color color) {
 | 
				
			||||||
  if (color == null) return "";
 | 
					  if (color == null) return "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return color.red.toRadixString(16).padLeft(2, '0') +
 | 
					  return (color.red.toRadixString(16).padLeft(2, '0') +
 | 
				
			||||||
      color.green.toRadixString(16).padLeft(2, '0') +
 | 
					          color.green.toRadixString(16).padLeft(2, '0') +
 | 
				
			||||||
      color.blue.toRadixString(16).padLeft(2, '0');
 | 
					          color.blue.toRadixString(16).padLeft(2, '0'))
 | 
				
			||||||
 | 
					      .toUpperCase();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user