1234567891011121314151617#![cfg_attr(not(feature = "std"), no_std)]1819pub use pallet::*;2021#[cfg(feature = "runtime-benchmarks")]22pub mod benchmarking;2324pub mod weights;2526#[frame_support::pallet]27pub mod pallet {2829 use frame_support::{30 dispatch::*,31 pallet_prelude::*,32 traits::{EnsureOrigin, QueryPreimage, StorePreimage},33 };34 use frame_system::pallet_prelude::*;35 use sp_runtime::traits::Dispatchable;3637 use crate::weights::WeightInfo;3839 #[pallet::config]40 pub trait Config: frame_system::Config {41 42 type RuntimeEvent: From<Event<Self>> + IsType<<Self as frame_system::Config>::RuntimeEvent>;4344 45 type RuntimeCall: Parameter46 + Dispatchable<RuntimeOrigin = Self::RuntimeOrigin, PostInfo = PostDispatchInfo>47 + GetDispatchInfo48 + From<frame_system::Call<Self>>;4950 51 type Preimages: QueryPreimage + StorePreimage;5253 54 type ManagerOrigin: EnsureOrigin<<Self as frame_system::Config>::RuntimeOrigin>;5556 57 type PreimageOrigin: EnsureOrigin<<Self as frame_system::Config>::RuntimeOrigin>;5859 60 type WeightInfo: WeightInfo;61 }6263 #[pallet::event]64 #[pallet::generate_deposit(pub(super) fn deposit_event)]65 pub enum Event<T: Config> {66 MaintenanceEnabled,67 MaintenanceDisabled,68 }6970 #[pallet::pallet]71 pub struct Pallet<T>(_);7273 #[pallet::storage]74 #[pallet::getter(fn is_enabled)]75 pub type Enabled<T> = StorageValue<_, bool, ValueQuery>;7677 #[pallet::error]78 pub enum Error<T> {}7980 #[pallet::call]81 impl<T: Config> Pallet<T> {82 #[pallet::call_index(0)]83 #[pallet::weight(<T as Config>::WeightInfo::enable())]84 pub fn enable(origin: OriginFor<T>) -> DispatchResult {85 T::ManagerOrigin::ensure_origin(origin)?;8687 <Enabled<T>>::set(true);8889 Self::deposit_event(Event::MaintenanceEnabled);9091 Ok(())92 }9394 #[pallet::call_index(1)]95 #[pallet::weight(<T as Config>::WeightInfo::disable())]96 pub fn disable(origin: OriginFor<T>) -> DispatchResult {97 T::ManagerOrigin::ensure_origin(origin)?;9899 <Enabled<T>>::set(false);100101 Self::deposit_event(Event::MaintenanceDisabled);102103 Ok(())104 }105 }106}