use crate::erc721::extensions::erc721_metadata::errors::Error;
use odra::prelude::*;
use odra::UnwrapOrRevert;
use odra::Var;
pub trait Erc721Metadata {
fn name(&self) -> String;
fn symbol(&self) -> String;
fn base_uri(&self) -> String;
}
#[odra::module(errors = Error)]
pub struct Erc721MetadataExtension {
name: Var<String>,
symbol: Var<String>,
base_uri: Var<String>
}
impl Erc721Metadata for Erc721MetadataExtension {
fn name(&self) -> String {
self.name
.get()
.unwrap_or_revert_with(&self.env(), Error::NameNotSet)
}
fn symbol(&self) -> String {
self.symbol
.get()
.unwrap_or_revert_with(&self.env(), Error::SymbolNotSet)
}
fn base_uri(&self) -> String {
self.base_uri
.get()
.unwrap_or_revert_with(&self.env(), Error::BaseUriNotSet)
}
}
impl Erc721MetadataExtension {
pub fn init(&mut self, name: String, symbol: String, base_uri: String) {
self.name.set(name);
self.symbol.set(symbol);
self.base_uri.set(base_uri);
}
}
pub mod errors {
#[odra::odra_error]
pub enum Error {
NameNotSet = 31_000,
SymbolNotSet = 31_001,
BaseUriNotSet = 31_002
}
}