|
@@ -747,28 +747,31 @@ decl_module! {
|
|
|
let dyn_bag = DynamicBagIdType::<T::MemberId, T::ChannelId>::Channel(channel_id);
|
|
|
let bag_id = storage::BagIdType::from(dyn_bag.clone());
|
|
|
|
|
|
- // ensure that bag size provided is valid
|
|
|
- ensure!(
|
|
|
- storage::Bags::<T>::get(&bag_id).objects_number == num_objects_to_delete,
|
|
|
- Error::<T>::InvalidBagSizeSpecified
|
|
|
- );
|
|
|
-
|
|
|
- // construct collection of assets to be removed
|
|
|
- let assets_to_remove: BTreeSet<DataObjectId<T>> =
|
|
|
- storage::DataObjectsById::<T>::iter_prefix(&bag_id).map(|x| x.0).collect();
|
|
|
-
|
|
|
- // remove specified assets from storage
|
|
|
- Self::remove_assets_from_storage(
|
|
|
- &assets_to_remove,
|
|
|
- &channel_id,
|
|
|
- &channel.deletion_prize_source_account_id
|
|
|
- )?;
|
|
|
+ // channel has a dynamic bag associated to it -> remove assets from storage
|
|
|
+ if let Ok(bag) = Storage::<T>::ensure_bag_exists(&bag_id) {
|
|
|
+ // ensure that bag size provided is valid
|
|
|
+ ensure!(
|
|
|
+ bag.objects_number == num_objects_to_delete,
|
|
|
+ Error::<T>::InvalidBagSizeSpecified
|
|
|
+ );
|
|
|
+
|
|
|
+ // construct collection of assets to be removed
|
|
|
+ let assets_to_remove: BTreeSet<DataObjectId<T>> =
|
|
|
+ storage::DataObjectsById::<T>::iter_prefix(&bag_id).map(|x| x.0).collect();
|
|
|
+
|
|
|
+ // remove specified assets from storage
|
|
|
+ Self::remove_assets_from_storage(
|
|
|
+ &assets_to_remove,
|
|
|
+ &channel_id,
|
|
|
+ &channel.deletion_prize_source_account_id
|
|
|
+ )?;
|
|
|
|
|
|
- // delete channel dynamic bag
|
|
|
- Storage::<T>::delete_dynamic_bag(
|
|
|
- channel.deletion_prize_source_account_id,
|
|
|
- dyn_bag
|
|
|
- )?;
|
|
|
+ // delete channel dynamic bag
|
|
|
+ Storage::<T>::delete_dynamic_bag(
|
|
|
+ channel.deletion_prize_source_account_id,
|
|
|
+ dyn_bag
|
|
|
+ )?;
|
|
|
+ }
|
|
|
|
|
|
//
|
|
|
// == MUTATION SAFE ==
|