Browse Source

fix when group chat and members offline

pull/18/head
Sun 4 years ago
parent
commit
565f333bdb
  1. 12
      lib/apps/group_chat/detail.dart
  2. 4
      lib/apps/group_chat/models.dart
  3. 4
      lib/apps/group_chat/provider.dart
  4. 1
      lib/pages/home.dart

12
lib/apps/group_chat/detail.dart

@ -343,7 +343,7 @@ class _GroupChatDetailState extends State<GroupChatDetail> { @@ -343,7 +343,7 @@ class _GroupChatDetailState extends State<GroupChatDetail> {
message: message,
) : ChatMessage(
fgid: member.mid,
avatar: member.showAvatar(),
avatar: member.showAvatar(isOnline: isOnline),
name: member.name,
message: message,
);
@ -583,11 +583,11 @@ class _MemberDrawerWidget extends StatelessWidget { @@ -583,11 +583,11 @@ class _MemberDrawerWidget extends StatelessWidget {
);
}
Widget _item(context, Member member, bool isOwner, bool meOwner, bool meManager, Color color, lang) {
Widget _item(context, bool isOnline, Member member, bool isOwner, bool meOwner, bool meManager, Color color, lang) {
return Container(
height: 55.0,
child: ListTile(
leading: member.showAvatar(colorSurface: false),
leading: member.showAvatar(colorSurface: false, isOnline: isOnline),
title: Text(member.name, textAlign: TextAlign.left, style: TextStyle(fontSize: 16.0)),
trailing: Text(member.isBlock
? lang.blocked : (isOwner
@ -623,7 +623,9 @@ class _MemberDrawerWidget extends StatelessWidget { @@ -623,7 +623,9 @@ class _MemberDrawerWidget extends StatelessWidget {
final lang = AppLocalizations.of(context);
final isLight = color.brightness == Brightness.light;
final isDesktop = isDisplayDesktop(context);
final myId = context.read<AccountProvider>().activedAccountId;
final accountProvider = context.read<AccountProvider>();
final myId = accountProvider.activedAccountId;
final isOnline = accountProvider.activedSession.isActive();
final provider = context.watch<GroupChatProvider>();
final members = provider.activedMembers;
@ -676,7 +678,7 @@ class _MemberDrawerWidget extends StatelessWidget { @@ -676,7 +678,7 @@ class _MemberDrawerWidget extends StatelessWidget {
child: ListView.builder(
itemCount: allKeys.length,
itemBuilder: (BuildContext ctx, int index) => _item(
context, members[allKeys[index]],
context, isOnline, members[allKeys[index]],
index == 0 && !meOwner, meOwner, meManager, color.primary, lang
),
)

4
lib/apps/group_chat/models.dart

@ -182,13 +182,13 @@ class Member { @@ -182,13 +182,13 @@ class Member {
this.isBlock = params[6];
}
Avatar showAvatar({double width = 45.0, colorSurface = true}) {
Avatar showAvatar({double width = 45.0, bool colorSurface = true, bool isOnline = true}) {
final avatar = Global.avatarPath + this.mid + '.png';
return Avatar(
width: width,
name: this.name,
avatarPath: avatar,
online: this.online,
online: isOnline && this.online,
onlineColor: Color(0xFF0EE50A),
colorSurface: colorSurface,
);

4
lib/apps/group_chat/provider.dart

@ -22,7 +22,7 @@ class GroupChatProvider extends ChangeNotifier { @@ -22,7 +22,7 @@ class GroupChatProvider extends ChangeNotifier {
SplayTreeMap<int, Member> activedMembers = SplayTreeMap();
GroupChat get activedGroup => this.groups[this.actived];
bool get isActivedGroupOwner => this.activedGroup.owner == Global.gid;
bool get isActivedGroupOwner => this.activedGroup != null ? this.activedGroup.owner == Global.gid : false;
bool get isActivedGroupManager {
this.activedMembers.values.forEach((m) {
if (m.mid == Global.gid) {
@ -164,7 +164,9 @@ class GroupChatProvider extends ChangeNotifier { @@ -164,7 +164,9 @@ class GroupChatProvider extends ChangeNotifier {
}
memberUpdate(int id, bool isBlock) {
this.activedMembers[id].isBlock = isBlock;
rpc.send('group-chat-member-update', [id, isBlock]);
notifyListeners();
}
_list(List params) {

1
lib/pages/home.dart

@ -237,6 +237,7 @@ class DrawerWidget extends StatelessWidget { @@ -237,6 +237,7 @@ class DrawerWidget extends StatelessWidget {
Provider.of<AccountProvider>(context, listen: false).updateActivedAccount(account.gid);
Provider.of<DeviceProvider>(context, listen: false).updateActived();
Provider.of<ChatProvider>(context, listen: false).updateActived();
Provider.of<GroupChatProvider>(context, listen: false).updateActived();
}
: null,
child: Padding(

Loading…
Cancel
Save