1#![allow(unused_variables, missing_docs)]
2
3mod storage;
4
5use odra::prelude::*;
6
7use crate::cep96::storage::{
8 Cep96DescriptionStorage, Cep96IconUriStorage, Cep96NameStorage, Cep96ProjectUriStorage
9};
10pub trait Cep96ContractMetadata {
11 fn contract_name(&self) -> Option<String>;
13
14 fn contract_description(&self) -> Option<String>;
16
17 fn contract_icon_uri(&self) -> Option<String>;
19
20 fn contract_project_uri(&self) -> Option<String>;
22}
23
24#[odra::module]
25pub struct Cep96 {
26 pub contract_name: SubModule<Cep96NameStorage>,
27 pub contract_description: SubModule<Cep96DescriptionStorage>,
28 pub contract_icon_uri: SubModule<Cep96IconUriStorage>,
29 pub contract_project_uri: SubModule<Cep96ProjectUriStorage>
30}
31
32#[odra::module]
33impl Cep96ContractMetadata for Cep96 {
34 fn contract_name(&self) -> Option<String> {
35 self.contract_name.get()
36 }
37
38 fn contract_description(&self) -> Option<String> {
39 self.contract_description.get()
40 }
41
42 fn contract_icon_uri(&self) -> Option<String> {
43 self.contract_icon_uri.get()
44 }
45
46 fn contract_project_uri(&self) -> Option<String> {
47 self.contract_project_uri.get()
48 }
49}
50
51impl Cep96 {
52 pub fn init(
53 &self,
54 name: Option<String>,
55 description: Option<String>,
56 icon_uri: Option<String>,
57 project_uri: Option<String>
58 ) {
59 if let Some(name) = name {
60 self.contract_name.set(name);
61 }
62 if let Some(description) = description {
63 self.contract_description.set(description);
64 }
65 if let Some(icon_uri) = icon_uri {
66 self.contract_icon_uri.set(icon_uri);
67 }
68 if let Some(project_uri) = project_uri {
69 self.contract_project_uri.set(project_uri);
70 }
71 }
72}