Browse Source

update dao common type

pull/24/head
Sun 4 years ago
parent
commit
11213a7bdd
  1. 149
      types/dao/src/lib.rs

149
types/dao/src/lib.rs

@ -8,37 +8,32 @@ pub const DAO_ID: GroupId = 2;
/// Dao ID type. /// Dao ID type.
pub type DaoId = u64; pub type DaoId = u64;
/// Group chat types. include: Encrypted, Private, Open. /// DAO types. include: Encrypted, Private, Open.
#[derive(Serialize, Deserialize, Clone, Copy, Debug, Eq, PartialEq)] #[derive(Serialize, Deserialize, Clone, Copy, Debug, Eq, PartialEq)]
pub enum GroupType { pub enum DaoType {
/// encrypted group type, data is encrypted, and it can need manager /// encrypted dao, data is encrypted, and it can need manager
/// or take manager's zero-knowledge-proof. /// or take manager's zero-knowledge-proof.
Encrypted, Encrypted,
/// private group type, data not encrypted, and need group manager agree. /// private dao, data not encrypted, and need manager agree.
Private, Private,
/// opened group type, data not encrypted, anyone can join this group. /// opened dao, data not encrypted, anyone can join this dao.
Open, Open,
/// tmp group. can use descrip local tmp group chat.
Tmp,
} }
impl GroupType { impl DaoType {
pub fn to_i64(&self) -> i64 { pub fn to_i64(&self) -> i64 {
match self { match self {
GroupType::Tmp => 0, DaoType::Open => 0,
GroupType::Open => 1, DaoType::Private => 1,
GroupType::Private => 2, DaoType::Encrypted => 2,
GroupType::Encrypted => 3,
} }
} }
pub fn from_i64(u: i64) -> Self { pub fn from_i64(u: i64) -> Self {
match u { match u {
0 => GroupType::Tmp, 1 => DaoType::Private,
1 => GroupType::Open, 2 => DaoType::Encrypted,
2 => GroupType::Private, _ => DaoType::Open,
3 => GroupType::Encrypted,
_ => GroupType::Tmp,
} }
} }
} }
@ -46,21 +41,21 @@ impl GroupType {
/// DaoInfo transfer in the network. /// DaoInfo transfer in the network.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub enum DaoInfo { pub enum DaoInfo {
/// params: owner, owner_name, owner_avatar, Group ID, group_type, is_must_agree_by_manager, /// params: owner, owner_name, owner_avatar, dao ID, dao_type, is_must_agree_by_manager,
/// group_name, group_bio, group_avatar. /// dao_name, dao_bio, dao_avatar.
Common( Common(
PeerId, PeerId,
String, String,
Vec<u8>, Vec<u8>,
DaoId, DaoId,
GroupType, DaoType,
bool, bool,
String, String,
String, String,
Vec<u8>, Vec<u8>,
), ),
/// params: owner, owner_name, owner_avatar, Group ID, is_must_agree_by_manager, key_hash, /// params: owner, owner_name, owner_avatar, dao ID, is_must_agree_by_manager, key_hash,
/// group_name(bytes), group_bio(bytes), group_avatar(bytes). /// dao_name(bytes), dao_bio(bytes), dao_avatar(bytes).
Encrypted( Encrypted(
PeerId, PeerId,
String, String,
@ -74,20 +69,20 @@ pub enum DaoInfo {
), ),
} }
/// Dao chat connect data structure. /// Dao connect data structure.
/// params: Group ID, join_proof. /// params: DAO ID, join_proof.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct LayerConnect(pub DaoId, pub ConnectProof); pub struct LayerConnect(pub DaoId, pub ConnectProof);
/// Dao chat connect success result data structure. /// Dao connect success result data structure.
/// params: Group ID, group current height. /// params: DAO ID, dao current height.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub struct LayerResult(pub DaoId, pub i64); pub struct LayerResult(pub DaoId, pub i64);
/// Dao chat connect proof. /// Dao connect proof.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub enum ConnectProof { pub enum ConnectProof {
/// when is joined in group chat, can only use had to join (connect). /// when is joined in dao, can only use had to join (connect).
/// params: proof. /// params: proof.
Common, Common,
/// zero-knowledge-proof. not has account id. /// zero-knowledge-proof. not has account id.
@ -95,13 +90,13 @@ pub enum ConnectProof {
Zkp, // TODO MOCK-PROOF Zkp, // TODO MOCK-PROOF
} }
/// Dao chat join proof. /// Dao join proof.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub enum JoinProof { pub enum JoinProof {
/// when join the open group chat. /// when join the open dao.
/// params: member name, member avatar. /// params: member name, member avatar.
Open(String, Vec<u8>), Open(String, Vec<u8>),
/// when is invate, it will take group_manager's proof for invate. /// when is invate, it will take dao manager's proof for invate.
/// params: invite_by_account, member name, member avatar. /// params: invite_by_account, member name, member avatar.
Invite(PeerId, String, Vec<u8>), Invite(PeerId, String, Vec<u8>),
/// zero-knowledge-proof. not has account id. /// zero-knowledge-proof. not has account id.
@ -112,7 +107,7 @@ pub enum JoinProof {
/// check result type. /// check result type.
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]
pub enum CheckType { pub enum CheckType {
/// allow to create new group. /// allow to create new dao.
Allow, Allow,
/// cannot created, remain = 0. /// cannot created, remain = 0.
None, None,
@ -133,7 +128,7 @@ impl CheckType {
} }
} }
/// ESSE Dao chat app's layer Event. /// ESSE DAO service's layer Event.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub enum LayerEvent { pub enum LayerEvent {
/// offline. as BaseLayerEvent. /// offline. as BaseLayerEvent.
@ -142,66 +137,66 @@ pub enum LayerEvent {
Suspend(DaoId), Suspend(DaoId),
/// actived. as BaseLayerEvent. /// actived. as BaseLayerEvent.
Actived(DaoId), Actived(DaoId),
/// check if account has permission to create group, and supported group types. /// check if account has permission to create dao service, and supported types.
Check, Check,
/// result check. /// result check.
/// params: check type, provider name, remain, supported_group_types. /// params: check type, provider name, remain, supported_dao_types.
CheckResult(CheckType, String, i64, Vec<GroupType>), CheckResult(CheckType, String, i64, Vec<DaoType>),
/// create a Group Chat. /// create a DAO.
/// params: group_info. /// params: dao_info.
Create(DaoInfo), Create(DaoInfo),
/// result create group success. /// result create DAO success.
/// params: Group ID, is_ok. /// params: DAO ID, is_ok.
CreateResult(DaoId, bool), CreateResult(DaoId, bool),
/// join group request. Group ID, Join Proof and info, request db id. /// join DAO request. DAO ID, Join Proof and info, request db id.
Request(DaoId, JoinProof), Request(DaoId, JoinProof),
/// request need manager to handle. /// request need manager to handle.
RequestHandle(DaoId, PeerId, JoinProof, i64, i64), RequestHandle(DaoId, PeerId, JoinProof, i64, i64),
/// manager handle request result. Group ID, request db id, is ok. /// manager handle request result. DAO ID, request db id, is ok.
RequestResult(DaoId, i64, bool), RequestResult(DaoId, i64, bool),
/// agree join request. /// agree join request.
Agree(DaoId, DaoInfo), Agree(DaoId, DaoInfo),
/// reject join request. Group ID, if lost efficacy. /// reject join request. DAO ID, if lost efficacy.
Reject(DaoId, bool), Reject(DaoId, bool),
/// online group member. Group ID, member id. /// online DAO member. DAO ID, member id.
MemberOnline(DaoId, PeerId), MemberOnline(DaoId, PeerId),
/// offline group member. Group ID, member id. /// offline DAO member. DAO ID, member id.
MemberOffline(DaoId, PeerId), MemberOffline(DaoId, PeerId),
/// sync online members. /// sync online members.
MemberOnlineSync(DaoId), MemberOnlineSync(DaoId),
/// sync online members result. /// sync online members result.
MemberOnlineSyncResult(DaoId, Vec<PeerId>), MemberOnlineSyncResult(DaoId, Vec<PeerId>),
/// sync group event. Group ID, height, event. /// sync event. DAO ID, height, event.
Sync(DaoId, i64, Event), Sync(DaoId, i64, Event),
/// packed sync event request. Group ID, from. /// packed sync event request. DAO ID, from.
SyncReq(DaoId, i64), SyncReq(DaoId, i64),
/// packed sync event. Group ID, current height, from height, to height, packed events. /// packed sync event. DAO ID, current height, from height, to height, packed events.
Packed(DaoId, i64, i64, i64, Vec<PackedEvent>), Packed(DaoId, i64, i64, i64, Vec<PackedEvent>),
} }
impl LayerEvent { impl LayerEvent {
/// get event's group id. /// get event's DAO id.
pub fn gcd(&self) -> Option<&DaoId> { pub fn dao_id(&self) -> Option<&DaoId> {
match self { match self {
Self::Offline(gcd) => Some(gcd), Self::Offline(did) => Some(did),
Self::Suspend(gcd) => Some(gcd), Self::Suspend(did) => Some(did),
Self::Actived(gcd) => Some(gcd), Self::Actived(did) => Some(did),
Self::Check => None, Self::Check => None,
Self::CheckResult(..) => None, Self::CheckResult(..) => None,
Self::Create(..) => None, Self::Create(..) => None,
Self::CreateResult(gcd, _) => Some(gcd), Self::CreateResult(did, _) => Some(did),
Self::Request(gcd, _) => Some(gcd), Self::Request(did, _) => Some(did),
Self::RequestHandle(gcd, ..) => Some(gcd), Self::RequestHandle(did, ..) => Some(did),
Self::RequestResult(gcd, ..) => Some(gcd), Self::RequestResult(did, ..) => Some(did),
Self::Agree(gcd, ..) => Some(gcd), Self::Agree(did, ..) => Some(did),
Self::Reject(gcd, ..) => Some(gcd), Self::Reject(did, ..) => Some(did),
Self::MemberOnline(gcd, ..) => Some(gcd), Self::MemberOnline(did, ..) => Some(did),
Self::MemberOffline(gcd, ..) => Some(gcd), Self::MemberOffline(did, ..) => Some(did),
Self::MemberOnlineSync(gcd) => Some(gcd), Self::MemberOnlineSync(did) => Some(did),
Self::MemberOnlineSyncResult(gcd, ..) => Some(gcd), Self::MemberOnlineSyncResult(did, ..) => Some(did),
Self::Sync(gcd, ..) => Some(gcd), Self::Sync(did, ..) => Some(did),
Self::SyncReq(gcd, ..) => Some(gcd), Self::SyncReq(did, ..) => Some(did),
Self::Packed(gcd, ..) => Some(gcd), Self::Packed(did, ..) => Some(did),
} }
} }
@ -225,14 +220,14 @@ impl LayerEvent {
} }
} }
/// Dao chat packed event. /// DAO packed event.
#[derive(Serialize, Deserialize)] #[derive(Serialize, Deserialize)]
pub enum PackedEvent { pub enum PackedEvent {
GroupInfo, Info,
GroupTransfer, Transfer,
GroupManagerAdd, ManagerAdd,
GroupManagerDel, ManagerDel,
GroupClose, Close,
/// params: member id, member name, member avatar. /// params: member id, member name, member avatar.
MemberInfo(PeerId, String, Vec<u8>), MemberInfo(PeerId, String, Vec<u8>),
/// params: member id, member name, member avatar, member join time. /// params: member id, member name, member avatar, member join time.
@ -248,11 +243,11 @@ pub enum PackedEvent {
/// Dao chat event. /// Dao chat event.
#[derive(Serialize, Deserialize, Clone)] #[derive(Serialize, Deserialize, Clone)]
pub enum Event { pub enum Event {
GroupInfo, Info,
GroupTransfer, Transfer,
GroupManagerAdd, ManagerAdd,
GroupManagerDel, ManagerDel,
GroupClose, Close,
/// params: member id, member name, member avatar. /// params: member id, member name, member avatar.
MemberInfo(PeerId, String, Vec<u8>), MemberInfo(PeerId, String, Vec<u8>),
/// params: member id, member name, member avatar, member join time. /// params: member id, member name, member avatar, member join time.

Loading…
Cancel
Save