|
56 | 56 | //! // Define a trait with default implementations |
57 | 57 | //! #[contracttrait] |
58 | 58 | //! pub trait Pausable { |
| 59 | +//! fn require_admin_auth(env: &Env); |
| 60 | +//! |
59 | 61 | //! fn is_paused(env: &Env) -> bool { |
60 | 62 | //! env.storage().instance().has(&PAUSED) |
61 | 63 | //! } |
62 | 64 | //! |
63 | 65 | //! fn pause(env: &Env) { |
64 | | -//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
65 | | -//! admin.require_auth(); |
| 66 | +//! Self::require_admin_auth(env); |
66 | 67 | //! env.storage().instance().set(&PAUSED, &true); |
67 | 68 | //! } |
68 | 69 | //! |
69 | 70 | //! fn unpause(env: &Env) { |
70 | | -//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
71 | | -//! admin.require_auth(); |
| 71 | +//! Self::require_admin_auth(env); |
72 | 72 | //! env.storage().instance().remove(&PAUSED); |
73 | 73 | //! } |
74 | 74 | //! } |
|
78 | 78 | //! |
79 | 79 | //! // Implement the trait - default functions are automatically exported |
80 | 80 | //! #[contractimpl(contracttrait)] |
81 | | -//! impl Pausable for MyContract {} |
| 81 | +//! impl Pausable for MyContract { |
| 82 | +//! fn require_admin_auth(env: &Env) { |
| 83 | +//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
| 84 | +//! admin.require_auth(); |
| 85 | +//! } |
| 86 | +//! } |
82 | 87 | //! |
83 | 88 | //! #[contractimpl] |
84 | 89 | //! impl MyContract { |
|
109 | 114 | //! // Define a trait with default implementations |
110 | 115 | //! #[contracttrait] |
111 | 116 | //! pub trait Pausable { |
| 117 | +//! fn require_admin_auth(env: &Env); |
| 118 | +//! |
112 | 119 | //! fn is_paused(env: &Env) -> bool { |
113 | 120 | //! env.storage().instance().has(&PAUSED) |
114 | 121 | //! } |
115 | 122 | //! |
116 | 123 | //! fn pause(env: &Env) { |
117 | | -//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
118 | | -//! admin.require_auth(); |
| 124 | +//! Self::require_admin_auth(env); |
119 | 125 | //! env.storage().instance().set(&PAUSED, &true); |
120 | 126 | //! } |
121 | 127 | //! |
122 | 128 | //! fn unpause(env: &Env) { |
123 | | -//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
124 | | -//! admin.require_auth(); |
| 129 | +//! Self::require_admin_auth(env); |
125 | 130 | //! env.storage().instance().remove(&PAUSED); |
126 | 131 | //! } |
127 | 132 | //! } |
|
132 | 137 | //! // Implement the trait - override default implementations as needed |
133 | 138 | //! #[contractimpl(contracttrait)] |
134 | 139 | //! impl Pausable for MyContract { |
| 140 | +//! fn require_admin_auth(env: &Env) { |
| 141 | +//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
| 142 | +//! admin.require_auth(); |
| 143 | +//! } |
| 144 | +//! |
135 | 145 | //! // Override is_paused with custom logic that returns false when not set |
136 | 146 | //! fn is_paused(env: &Env) -> bool { |
137 | 147 | //! env.storage().instance().get(&PAUSED).unwrap_or(false) |
|
168 | 178 | //! // Define a trait with default implementations |
169 | 179 | //! #[contracttrait] |
170 | 180 | //! pub trait Pausable { |
| 181 | +//! fn require_admin_auth(env: &Env); |
| 182 | +//! |
171 | 183 | //! fn is_paused(env: &Env) -> bool { |
172 | 184 | //! env.storage().instance().has(&PAUSED) |
173 | 185 | //! } |
174 | 186 | //! |
175 | 187 | //! fn pause(env: &Env) { |
176 | | -//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
177 | | -//! admin.require_auth(); |
| 188 | +//! Self::require_admin_auth(env); |
178 | 189 | //! env.storage().instance().set(&PAUSED, &true); |
179 | 190 | //! } |
180 | 191 | //! |
181 | 192 | //! fn unpause(env: &Env) { |
182 | | -//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
183 | | -//! admin.require_auth(); |
| 193 | +//! Self::require_admin_auth(env); |
184 | 194 | //! env.storage().instance().remove(&PAUSED); |
185 | 195 | //! } |
186 | 196 | //! } |
|
190 | 200 | //! |
191 | 201 | //! // Implement the trait - default functions are automatically exported |
192 | 202 | //! #[contractimpl(contracttrait)] |
193 | | -//! impl Pausable for MyContract {} |
| 203 | +//! impl Pausable for MyContract { |
| 204 | +//! fn require_admin_auth(env: &Env) { |
| 205 | +//! let admin: Address = env.storage().instance().get(&ADMIN).unwrap(); |
| 206 | +//! admin.require_auth(); |
| 207 | +//! } |
| 208 | +//! } |
194 | 209 | //! |
195 | 210 | //! #[contractimpl] |
196 | 211 | //! impl MyContract { |
|
0 commit comments