together_mobile/lib/models/contact_model.dart

117 lines
2.9 KiB
Dart

import 'package:flutter/material.dart';
class FriendSetting {
String friendRemark = '';
String friendGroup = '';
FriendSetting.fromJson(Map<String, dynamic> json) {
friendRemark = json['friendRemark'] ?? '';
friendGroup = json['friendGroup'] ?? '我的好友';
}
}
class GroupChatSetting {
String groupChatRemark = '';
String myRemark = '';
GroupChatSetting.fromJson(Map<String, dynamic> json) {
groupChatRemark = json['groupChatRemark'] ?? '';
myRemark = json['myRemark'] ?? '';
}
}
class Contact extends ChangeNotifier {
Map<String, FriendSetting> friends = {};
List<String> friendGroups = [];
String defaultGroup = '';
Map<String, GroupChatSetting> groupChats = {};
void init(Map json) {
defaultGroup = json['defaultGroup'];
json['friends'].forEach((key, value) {
friends[key] = FriendSetting.fromJson(value);
});
// json['groupChats'].forEach((key, value) {
// groupChats[key] = GroupChatSetting.fromJson(value);
// });
for (String i in json['friendGroups']) {
friendGroups.add(i);
}
}
Map<String, FriendSetting> filterGroupFriends(String groupName) {
Map<String, FriendSetting> groupFriends = {};
friends.forEach((key, value) {
if (value.friendGroup == groupName) {
groupFriends[key] = value;
}
});
return groupFriends;
}
void changeFriendRemark(String friendId, String remark) {
friends[friendId]!.friendRemark = remark;
}
void changeFriendGroup(String friendId, String group) {
friends[friendId]!.friendGroup = group;
}
void manageGroup(
List<String> newGroups,
List<List<String>> groupNameChangePair,
String newDefaultGroup,
) {
defaultGroup = newDefaultGroup;
friendGroups = newGroups;
for (var pair in groupNameChangePair) {
if (pair[1].isEmpty) {
continue;
}
friends.forEach((key, value) {
if (value.friendGroup == pair[0]) {
friends[key]!.friendGroup = pair[1];
}
});
}
}
}
class FriendAccountProfile {
String id = '';
String username = '';
String email = '';
String nickname = '';
String gender = '';
String birthday = '';
String location = '';
String status = '';
String sign = '';
String avatar = '';
String baseAvatarPath = '';
FriendAccountProfile.fromJson(Map<String, dynamic> json) {
id = json['id'];
username = json['username'];
email = json['email'];
nickname = json['nickname'] ?? '';
birthday = json['birthday'] ?? '';
location = json['location'] ?? '';
status = json['status'] ?? '';
sign = json['sign'] ?? '';
avatar = json['avatar'] ?? '';
}
}
class ContactAccountProfile extends ChangeNotifier {
Map<String, FriendAccountProfile> friends = {};
void init(Map json) {
json['friends'].forEach((key, value) {
friends[key] = FriendAccountProfile.fromJson(value);
});
}
}