diff --git a/CHANGELOG.md b/CHANGELOG.md index b1d3c0d..5e1e833 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,8 +21,7 @@ Description of the upcoming release here. ### Fixed -- Some fix here 1 -- Some fix here 2 +- [#153](https://github.com/FuelLabs/sway-standards/pull/153) Actually write to storage in `set_src20_data()` in the SRC-20 multi asset example. #### Breaking diff --git a/examples/src20-native-asset/multi_asset/src/multi_asset.sw b/examples/src20-native-asset/multi_asset/src/multi_asset.sw index d8540b7..0fec714 100644 --- a/examples/src20-native-asset/multi_asset/src/multi_asset.sw +++ b/examples/src20-native-asset/multi_asset/src/multi_asset.sw @@ -173,7 +173,7 @@ impl SRC20 for Contract { } abi SetSRC20Data { - #[storage(read)] + #[storage(read, write)] fn set_src20_data( asset: AssetId, total_supply: u64, @@ -184,7 +184,7 @@ abi SetSRC20Data { } impl SetSRC20Data for Contract { - #[storage(read)] + #[storage(read, write)] fn set_src20_data( asset: AssetId, supply: u64, @@ -199,9 +199,32 @@ impl SetSRC20Data for Contract { } let sender = msg_sender().unwrap(); - SetNameEvent::new(asset, name, sender).log(); - SetSymbolEvent::new(asset, symbol, sender).log(); + match name { + Some(unwrapped_name) => { + storage.name.get(asset).write_slice(unwrapped_name); + SetNameEvent::new(asset, name, sender).log(); + }, + None => { + let _ = storage.name.get(asset).clear(); + SetNameEvent::new(asset, name, sender).log(); + } + } + + match symbol { + Some(unwrapped_symbol) => { + storage.symbol.get(asset).write_slice(unwrapped_symbol); + SetSymbolEvent::new(asset, symbol, sender).log(); + }, + None => { + let _ = storage.symbol.get(asset).clear(); + SetSymbolEvent::new(asset, symbol, sender).log(); + } + } + + storage.decimals.get(asset).write(decimals); SetDecimalsEvent::new(asset, decimals, sender).log(); + + storage.total_supply.get(asset).write(supply); TotalSupplyEvent::new(asset, supply, sender).log(); } }