desmos_cw/
msg.rs

1use crate::types::DesmosRoute;
2use cosmwasm_std::{CosmosMsg, CustomMsg};
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
7#[serde(rename_all = "snake_case")]
8pub struct DesmosMsgWrapper {
9    pub route: DesmosRoute,
10    pub msg: DesmosMsg,
11}
12
13impl Into<CosmosMsg<DesmosMsgWrapper>> for DesmosMsgWrapper {
14    fn into(self) -> CosmosMsg<DesmosMsgWrapper> {
15        CosmosMsg::Custom(self)
16    }
17}
18
19impl CustomMsg for DesmosMsgWrapper {}
20
21#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
22#[serde(rename_all = "snake_case")]
23#[non_exhaustive]
24pub enum DesmosMsg {
25    SaveProfile {
26        dtag: String,
27        nickname: String,
28        bio: String,
29        profile_picture: String,
30        cover_picture: String,
31        creator: String,
32    },
33    DeleteProfile {
34        creator: String,
35    },
36    RequestDtagTransfer {
37        receiver: String,
38        sender: String,
39    },
40    CancelDtagTransferRequest {
41        receiver: String,
42        sender: String,
43    },
44    AcceptDtagTransferRequest {
45        new_dtag: String,
46        sender: String,
47        receiver: String,
48    },
49    RefuseDtagTransferRequest {
50        sender: String,
51        receiver: String,
52    },
53    CreateRelationship {
54        sender: String,
55        receiver: String,
56        subspace: String,
57    },
58    DeleteRelationships {
59        user: String,
60        counterparty: String,
61        subspace: String,
62    },
63    BlockUser {
64        blocker: String,
65        blocked: String,
66        reason: String,
67        subspace: String,
68    },
69    UnblockUser {
70        blocker: String,
71        blocked: String,
72        subspace: String,
73    },
74}
75
76pub fn save_profile(dtag: String) -> CosmosMsg<DesmosMsgWrapper> {
77    DesmosMsgWrapper {
78        route: DesmosRoute::Profiles,
79        msg: DesmosMsg::SaveProfile {
80            dtag,
81            nickname: "".to_string(),
82            bio: "".to_string(),
83            profile_picture: "".to_string(),
84            cover_picture: "".to_string(),
85            creator: "".to_string()
86        }
87    }.into()
88}
89
90pub fn request_dtag_transfer(sender: String, receiver: String) -> CosmosMsg<DesmosMsgWrapper> {
91    DesmosMsgWrapper{
92        route: DesmosRoute::Profiles,
93        msg: DesmosMsg::RequestDtagTransfer { receiver, sender }
94    }.into()
95}