use cosmwasm_std::Env;
pub trait Identify {
fn is_available_on(&self, chain_name: &str) -> bool;
fn name(&self) -> &'static str;
}
pub fn decompose_platform_name(platform_name: &str) -> (Option<String>, String) {
let decomposed: Vec<_> = platform_name.splitn(2, '>').collect();
if decomposed.len() == 1 {
(None, decomposed[0].to_string())
} else {
(Some(decomposed[0].to_string()), decomposed[1].to_string())
}
}
fn get_chain_name(env: Env) -> String {
env.block.chain_id.rsplitn(2, '-').collect::<Vec<_>>()[1].to_string()
}
pub fn is_current_chain(env: Env, chain_name: &str) -> bool {
get_chain_name(env) == chain_name
}
pub fn is_available_on(platform: Box<dyn Identify>, env: Env, chain_name: Option<&str>) -> bool {
if let Some(chain_name) = chain_name {
platform.is_available_on(chain_name)
} else {
let chain_name = get_chain_name(env);
platform.is_available_on(&chain_name)
}
}