odra_modules/cep78/
settings.rs1use odra::{named_keys::single_value_storage, prelude::*};
2
3use super::constants::*;
4use super::error::CEP78Error;
5use super::modalities::{BurnMode, EventsMode, MintingMode, NFTHolderMode, NFTKind, OwnershipMode};
6
7single_value_storage!(Cep78AllowMinting, bool, ALLOW_MINTING);
8single_value_storage!(
9 Cep78MintingMode,
10 MintingMode,
11 MINTING_MODE,
12 CEP78Error::MissingMintingMode
13);
14single_value_storage!(
15 Cep78OwnershipMode,
16 OwnershipMode,
17 OWNERSHIP_MODE,
18 CEP78Error::MissingOwnershipMode
19);
20single_value_storage!(Cep78NFTKind, NFTKind, NFT_KIND, CEP78Error::MissingNftKind);
21single_value_storage!(
22 Cep78HolderMode,
23 NFTHolderMode,
24 HOLDER_MODE,
25 CEP78Error::MissingHolderMode
26);
27single_value_storage!(
28 Cep78BurnMode,
29 BurnMode,
30 BURN_MODE,
31 CEP78Error::MissingBurnMode
32);
33single_value_storage!(
34 Cep78EventsMode,
35 EventsMode,
36 EVENTS_MODE,
37 CEP78Error::MissingEventsMode
38);
39single_value_storage!(
40 Cep78OperatorBurnMode,
41 bool,
42 OPERATOR_BURN_MODE,
43 CEP78Error::MissingOperatorBurnMode
44);
45
46#[odra::module]
47pub struct Settings {
48 allow_minting: SubModule<Cep78AllowMinting>,
49 minting_mode: SubModule<Cep78MintingMode>,
50 ownership_mode: SubModule<Cep78OwnershipMode>,
51 nft_kind: SubModule<Cep78NFTKind>,
52 holder_mode: SubModule<Cep78HolderMode>,
53 burn_mode: SubModule<Cep78BurnMode>,
54 events_mode: SubModule<Cep78EventsMode>,
55 operator_burn_mode: SubModule<Cep78OperatorBurnMode>
56}
57
58impl Settings {
59 #[allow(clippy::too_many_arguments)]
60 pub fn init(
61 &mut self,
62 allow_minting: bool,
63 minting_mode: MintingMode,
64 ownership_mode: OwnershipMode,
65 nft_kind: NFTKind,
66 holder_mode: NFTHolderMode,
67 burn_mode: BurnMode,
68 events_mode: EventsMode,
69 operator_burn_mode: bool
70 ) {
71 self.allow_minting.set(allow_minting);
72 self.minting_mode.set(minting_mode);
73 self.ownership_mode.set(ownership_mode);
74 self.nft_kind.set(nft_kind);
75 self.holder_mode.set(holder_mode);
76 self.burn_mode.set(burn_mode);
77 self.events_mode.set(events_mode);
78 self.operator_burn_mode.set(operator_burn_mode);
79 }
80
81 #[inline]
82 pub fn allow_minting(&self) -> bool {
83 self.allow_minting.get().unwrap_or_default()
84 }
85
86 #[inline]
87 pub fn set_allow_minting(&mut self, value: bool) {
88 self.allow_minting.set(value)
89 }
90
91 #[inline]
92 pub fn events_mode(&self) -> EventsMode {
93 self.events_mode.get()
94 }
95
96 #[inline]
97 pub fn burn_mode(&self) -> BurnMode {
98 self.burn_mode.get()
99 }
100
101 #[inline]
102 pub fn ownership_mode(&self) -> OwnershipMode {
103 self.ownership_mode.get()
104 }
105
106 #[inline]
107 pub fn minting_mode(&self) -> MintingMode {
108 self.minting_mode.get()
109 }
110
111 #[inline]
112 pub fn holder_mode(&self) -> NFTHolderMode {
113 self.holder_mode.get()
114 }
115
116 #[inline]
117 pub fn operator_burn_mode(&self) -> bool {
118 self.operator_burn_mode.get()
119 }
120
121 #[inline]
122 pub fn nft_kind(&self) -> NFTKind {
123 self.nft_kind.get()
124 }
125
126 #[inline]
127 pub fn set_operator_burn_mode(&mut self, value: bool) {
128 self.operator_burn_mode.set(value)
129 }
130}