--- a/pallets/nonfungible/src/erc.rs
+++ b/pallets/nonfungible/src/erc.rs
@@ -516,9 +516,14 @@
}
/// @dev Not implemented
- fn get_approved(&self, _token_id: U256) -> Result
{
- // TODO: Not implemetable
- Err("not implemented".into())
+ fn get_approved(&self, token_id: U256) -> Result {
+ let token = token_id.try_into()?;
+ let operator = >::get_allowance(self, token).map_err(dispatch_to_evm::)?;
+ Ok(if let Some(operator) = operator {
+ *operator.as_eth()
+ } else {
+ Address::zero()
+ })
}
/// @notice Tells whether the given `owner` approves the `operator`.
--- a/pallets/nonfungible/src/lib.rs
+++ b/pallets/nonfungible/src/lib.rs
@@ -1083,6 +1083,18 @@
}
}
+ pub fn get_allowance(
+ collection: &NonfungibleHandle,
+ token: TokenId,
+ ) -> Result