Browse Source

fix group chat owner avatar

pull/18/head
Sun 5 years ago
parent
commit
1c4bf735dd
  1. 8
      src/apps/group_chat/models.rs
  2. 11
      src/apps/group_chat/rpc.rs
  3. 3
      src/group.rs

8
src/apps/group_chat/models.rs

@ -168,13 +168,13 @@ impl GroupChat { @@ -168,13 +168,13 @@ impl GroupChat {
mgid: &GroupId,
) -> Result<Self> {
match info {
GroupInfo::Common(owner, _, g_id, g_type, agree, name, g_bio, avatar) => {
GroupInfo::Common(owner, _, _, g_id, g_type, agree, name, g_bio, avatar) => {
write_avatar_sync(base, &mgid, &g_id, avatar)?;
Ok(Self::new_from(
g_id, height, owner, g_type, addr, name, g_bio, agree, key,
))
}
GroupInfo::Encrypted(owner, _, g_id, agree, _hash, _name, _bio, avatar) => {
GroupInfo::Encrypted(owner, _, _, g_id, agree, _hash, _name, _bio, avatar) => {
// TODO decrypted.
let g_type = GroupType::Encrypted;
@ -201,11 +201,12 @@ impl GroupChat { @@ -201,11 +201,12 @@ impl GroupChat {
)
}
pub fn to_group_info(self, name: String, avatar: Vec<u8>) -> GroupInfo {
pub fn to_group_info(self, name: String, avatar: Vec<u8>, owner_avatar: Vec<u8>) -> GroupInfo {
match self.g_type {
GroupType::Private | GroupType::Open => GroupInfo::Common(
self.owner,
name,
owner_avatar,
self.g_id,
self.g_type,
self.is_need_agree,
@ -217,6 +218,7 @@ impl GroupChat { @@ -217,6 +218,7 @@ impl GroupChat {
// TODO encrypted
self.owner,
name,
owner_avatar,
self.g_id,
self.g_type,
self.is_need_agree,

11
src/apps/group_chat/rpc.rs

@ -12,7 +12,7 @@ use group_chat_types::{CheckType, Event, GroupType, JoinProof, LayerEvent}; @@ -12,7 +12,7 @@ use group_chat_types::{CheckType, Event, GroupType, JoinProof, LayerEvent};
use crate::apps::chat::{Friend, MessageType};
use crate::rpc::{session_close, session_delete, RpcState};
use crate::session::{Session, SessionType};
use crate::storage::{chat_db, group_chat_db, session_db, write_avatar};
use crate::storage::{chat_db, group_chat_db, read_avatar, session_db, write_avatar};
use super::add_layer;
use super::models::{to_network_message, GroupChat, GroupChatKey, Member, Message, Request};
@ -194,7 +194,7 @@ pub(crate) fn new_rpc_handler(handler: &mut RpcHandler<RpcState>) { @@ -194,7 +194,7 @@ pub(crate) fn new_rpc_handler(handler: &mut RpcHandler<RpcState>) {
let mut results = HandleResult::new();
// add to rpcs.
results.rpcs.push(json!(gc.to_rpc()));
let info = gc.to_group_info(my_name, avatar_bytes);
let info = gc.to_group_info(my_name, avatar_bytes, me.avatar);
// TODO create proof.
let proof: Proof = Default::default();
@ -216,10 +216,11 @@ pub(crate) fn new_rpc_handler(handler: &mut RpcHandler<RpcState>) { @@ -216,10 +216,11 @@ pub(crate) fn new_rpc_handler(handler: &mut RpcHandler<RpcState>) {
let gc = GroupChat::get_id(&db, &id)??;
drop(db);
// TODO load avatar
let avatar = vec![];
// load avatar
let avatar = read_avatar(state.group.read().await.base(), &gid, &gc.g_id).await?;
let owner_avatar = state.group.read().await.clone_user(&gid)?.avatar;
let addr = gc.g_addr;
let info = gc.to_group_info(mname, avatar);
let info = gc.to_group_info(mname, avatar, owner_avatar);
// TODO create proof.
let proof: Proof = Default::default();

3
src/group.rs

@ -19,7 +19,7 @@ use crate::consensus::Event; @@ -19,7 +19,7 @@ use crate::consensus::Event;
use crate::event::{InnerEvent, StatusEvent, SyncEvent};
use crate::layer::Layer;
use crate::rpc;
use crate::storage::{account_db, account_init, consensus_db};
use crate::storage::{account_db, account_init, consensus_db, write_avatar};
use crate::utils::device_status::device_status as local_device_status;
pub(crate) mod running;
@ -445,6 +445,7 @@ impl Group { @@ -445,6 +445,7 @@ impl Group {
let account_db = account_db(&self.base)?;
account.insert(&account_db)?;
account_db.close()?;
let _ = write_avatar(&self.base, &account_id, &account_id, &account.avatar).await;
self.accounts.insert(account.gid, account);
let mut device = Device::new(device_name.to_owned(), device_info.to_owned(), self.addr);

Loading…
Cancel
Save