From 5902a478449c7cbfb5dcfc075b3bfb0932bbc767 Mon Sep 17 00:00:00 2001 From: Sun Date: Thu, 3 Jun 2021 18:43:37 +0800 Subject: [PATCH] fix create group chat UI --- lib/apps/group_chat/add.dart | 21 +++++---------------- lib/apps/group_chat/models.dart | 3 ++- lib/apps/group_chat/provider.dart | 23 +++++++++++++++++------ src/storage.rs | 1 - 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/lib/apps/group_chat/add.dart b/lib/apps/group_chat/add.dart index dde3011..c3cc8c5 100644 --- a/lib/apps/group_chat/add.dart +++ b/lib/apps/group_chat/add.dart @@ -51,8 +51,6 @@ class _GroupAddPageState extends State { int _groupAddr = 0; int _groupType = 1; bool _groupNeedAgree = false; - bool _groupHasKey = true; - bool _groupHasNeedAgree = true; bool _addrOnline = false; bool _addrChecked = false; String _myName = ''; @@ -87,17 +85,6 @@ class _GroupAddPageState extends State { groupValue: _groupType, onChanged: disabled ? null : (n) => setState(() { _groupType = n; - if (n == 0) { - _groupHasKey = true; - } else { - _groupHasKey = false; - } - - if (n == 2) { - _groupHasNeedAgree = false; - } else { - _groupHasNeedAgree = true; - } }), ), _groupType == value @@ -117,7 +104,7 @@ class _GroupAddPageState extends State { if (addr.substring(0, 2) == '0x') { addr = addr.substring(2); } - rpc.send('group-chat-check', [addr]); + context.read().check(addr); } _scanCallback(bool isOk, String app, List params) { @@ -203,6 +190,8 @@ class _GroupAddPageState extends State { rpc.send('group-chat-request-list', [false]); new Future.delayed(Duration.zero, () { _myName = context.read().activedAccount.name; + context.read().clearCheck(); + setState(() {}); }); } @@ -488,7 +477,7 @@ class _GroupAddPageState extends State { controller: _createBioController, focus: _createBioFocus), ), - if (_groupHasKey) + if (_groupType == 0) Container( padding: EdgeInsets.symmetric(vertical: 10.0), child: InputText( @@ -497,7 +486,7 @@ class _GroupAddPageState extends State { controller: _createKeyController, focus: _createKeyFocus), ), - if (_groupHasNeedAgree) + if (_groupType != 2) Container( height: 50.0, width: 600.0, diff --git a/lib/apps/group_chat/models.dart b/lib/apps/group_chat/models.dart index 713bcc1..4ef003b 100644 --- a/lib/apps/group_chat/models.dart +++ b/lib/apps/group_chat/models.dart @@ -19,6 +19,7 @@ enum CheckType { Suspend, Deny, Wait, + Nothing, } extension GroupTypeExtension on GroupType { @@ -87,7 +88,7 @@ extension CheckTypeExtension on CheckType { case 3: return CheckType.Deny; default: - return CheckType.Deny; + return CheckType.Nothing; } } } diff --git a/lib/apps/group_chat/provider.dart b/lib/apps/group_chat/provider.dart index e7bcc46..c0668b8 100644 --- a/lib/apps/group_chat/provider.dart +++ b/lib/apps/group_chat/provider.dart @@ -10,7 +10,7 @@ import 'package:esse/apps/group_chat/models.dart'; class GroupChatProvider extends ChangeNotifier { List createSupported = [GroupType.Encrypted, GroupType.Private, GroupType.Open]; - CheckType createCheckType = CheckType.Wait; + CheckType createCheckType = CheckType.Nothing; Map groups = {}; List createKeys = []; @@ -122,6 +122,15 @@ class GroupChatProvider extends ChangeNotifier { this.requests.clear(); } + check(String addr) { + this.createCheckType = CheckType.Wait; + rpc.send('group-chat-check', [addr]); + } + + clearCheck() { + this.createCheckType = CheckType.Nothing; + } + join(GroupType gtype, String gid, String gaddr, String name, String remark, [String proof = '', String key = '']) { rpc.send('group-chat-join', [gtype.toInt(), gid, gaddr, name, remark, proof, key]); } @@ -185,11 +194,13 @@ class GroupChatProvider extends ChangeNotifier { _check(List params) { this.createSupported.clear(); - this.createCheckType = CheckTypeExtension.fromInt(params[0]); - params[1].forEach((param) { - this.createSupported.add(GroupTypeExtension.fromInt(param)); - }); - notifyListeners(); + if (this.createCheckType == CheckType.Wait) { + this.createCheckType = CheckTypeExtension.fromInt(params[0]); + params[1].forEach((param) { + this.createSupported.add(GroupTypeExtension.fromInt(param)); + }); + notifyListeners(); + } } _create(List params) { diff --git a/src/storage.rs b/src/storage.rs index 96b9665..43d5d67 100644 --- a/src/storage.rs +++ b/src/storage.rs @@ -2,7 +2,6 @@ use async_fs as fs; use image::{load_from_memory, DynamicImage, GenericImageView}; use rand::{distributions::Alphanumeric, thread_rng, Rng}; use std::path::PathBuf; -use std::sync::Arc; use std::time::{SystemTime, UNIX_EPOCH}; use tdn::types::{