diff --git a/creator-keys/src/lib.rs b/creator-keys/src/lib.rs index 2bf09c0..0dca76c 100644 --- a/creator-keys/src/lib.rs +++ b/creator-keys/src/lib.rs @@ -72,6 +72,16 @@ pub struct CreatorProfile { #[contract] pub struct CreatorKeysContract; +impl CreatorKeysContract { + fn require_creator(env: &Env, creator: &Address) -> CreatorProfile { + let key = DataKey::Creator(creator.clone()); + env.storage() + .persistent() + .get(&key) + .unwrap_or_else(|| panic!("creator not registered")) + } +} + #[contractimpl] impl CreatorKeysContract { pub fn register_creator(env: Env, creator: Address, handle: String) { @@ -101,11 +111,7 @@ impl CreatorKeysContract { } let key = DataKey::Creator(creator.clone()); - let mut profile: CreatorProfile = env - .storage() - .persistent() - .get(&key) - .unwrap_or_else(|| panic!("creator not registered")); + let mut profile = Self::require_creator(&env, &creator); profile.supply += 1; env.storage().persistent().set(&key, &profile);