mirror of https://github.com/CympleTech/ESSE.git
6 changed files with 120 additions and 3 deletions
@ -0,0 +1,65 @@
@@ -0,0 +1,65 @@
|
||||
import 'package:flutter/material.dart'; |
||||
|
||||
import 'package:esse/rpc.dart'; |
||||
import 'package:esse/apps/group_chat/models.dart'; |
||||
|
||||
class GroupChatProvider extends ChangeNotifier { |
||||
Map<int, int> groups = {}; |
||||
|
||||
GroupChatProvider() { |
||||
// rpc. |
||||
rpc.addListener('group-chat-list', _list, false); |
||||
// rpc.addListener('group-chat-online', _online, false); |
||||
// rpc.addListener('group-chat-offline', _online, false); |
||||
rpc.addListener('group-chat-check', _check, false); |
||||
rpc.addListener('group-chat-create', _create, false); |
||||
// rpc.addListener('group-chat-update', _update, false); |
||||
// rpc.addListener('group-chat-join', _join, true); |
||||
// rpc.addListener('group-chat-agree', _agree, true); |
||||
// rpc.addListener('group-chat-reject', _reject, false); |
||||
// rpc.addListener('group-chat-member-join', _memberJoin, false); |
||||
// rpc.addListener('group-chat-member-info', _memberInfo, false); |
||||
// rpc.addListener('group-chat-member-leave', _memberLeave, false); |
||||
// rpc.addListener('group-chat-member-online', _memberOnline, false); |
||||
// rpc.addListener('group-chat-member-offline', _memberOffline, false); |
||||
// rpc.addListener('group-chat-message-create', _messageCreate, true); |
||||
// rpc.addListener('group-chat-message-delete', _messageDelete, false); |
||||
// rpc.addListener('group-chat-message-delivery', _messageDelivery, false); |
||||
} |
||||
|
||||
clear() { |
||||
} |
||||
|
||||
updateActived() { |
||||
this.clear(); |
||||
|
||||
// load groups. |
||||
rpc.send('group-chat-list', []); |
||||
} |
||||
|
||||
check(String addr) { |
||||
rpc.send('group-chat-check', [addr]); |
||||
} |
||||
|
||||
create() { |
||||
rpc.send('group-chat-create', []); |
||||
} |
||||
|
||||
_list(List params) { |
||||
this.clear(); |
||||
params.forEach((params) { |
||||
// if (params.length == 6) { |
||||
// this.devices[params[0]] = Device.fromList(params); |
||||
// } |
||||
}); |
||||
notifyListeners(); |
||||
} |
||||
|
||||
_check(List params) { |
||||
// |
||||
} |
||||
|
||||
_create(List params) { |
||||
// |
||||
} |
||||
} |
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
mod models; |
||||
|
||||
pub(crate) mod rpc; |
||||
pub(crate) use rpc::new_rpc_handler; |
@ -0,0 +1,33 @@
@@ -0,0 +1,33 @@
|
||||
use group_chat_types::{Event, GroupConnect, GroupEvent, GroupInfo, GroupResult, GroupType}; |
||||
use std::sync::Arc; |
||||
use tdn::types::{ |
||||
group::GroupId, |
||||
message::SendType, |
||||
primitive::{new_io_error, HandleResult, PeerAddr}, |
||||
rpc::{json, rpc_response, RpcHandler, RpcParam}, |
||||
}; |
||||
|
||||
//use crate::group::GroupEvent;
|
||||
use crate::rpc::RpcState; |
||||
|
||||
pub(crate) fn new_rpc_handler(handler: &mut RpcHandler<RpcState>) { |
||||
handler.add_method("group-chat-echo", |_, params, _| async move { |
||||
Ok(HandleResult::rpc(json!(params))) |
||||
}); |
||||
|
||||
handler.add_method( |
||||
"group-chat-check", |
||||
|gid: GroupId, params: Vec<RpcParam>, _state: Arc<RpcState>| async move { |
||||
let addr = PeerAddr::from_hex(params[0].as_str()?) |
||||
.map_err(|_e| new_io_error("PeerAddr invalid!"))?; |
||||
println!("addr: {}", addr.to_hex()); |
||||
|
||||
let data = postcard::to_allocvec(&GroupConnect::Check).unwrap_or(vec![]); |
||||
Ok(HandleResult::layer( |
||||
gid, |
||||
gid, |
||||
SendType::Connect(0, addr, None, None, data), |
||||
)) |
||||
}, |
||||
); |
||||
} |
Loading…
Reference in new issue