difftreelog
feat force version upgrade
in: master
1 file changed
pallets/nonfungible/src/lib.rsdiffbeforeafterboth183 #[pallet::hooks]183 #[pallet::hooks]184 impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {184 impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {185 fn on_runtime_upgrade() -> Weight {185 fn on_runtime_upgrade() -> Weight {186 if StorageVersion::get::<Pallet<T>>() < StorageVersion::new(1) {186 StorageVersion::new(1).put::<Pallet<T>>();187 let mut had_consts = BTreeSet::new();188 <TokenData<T>>::translate::<ItemDataVersion1<T::CrossAccountId>, _>(189 |(collection, token), v| {190 let mut props = vec![];191 if !v.const_data.is_empty() {192 props.push(Property {193 key: b"_old_constData".to_vec().try_into().unwrap(),194 value: v195 .const_data196 .clone()197 .into_inner()198 .try_into()199 .expect("const too long"),200 });201 had_consts.insert(collection);202 }203 if !v.variable_data.is_empty() {204 props.push(Property {205 key: b"_old_variableData".to_vec().try_into().unwrap(),206 value: v207 .variable_data208 .clone()209 .into_inner()210 .try_into()211 .expect("variable too long"),212 })213 }214 if !props.is_empty() {215 Self::set_scoped_token_properties(216 collection,217 token,218 PropertyScope::None,219 props.into_iter(),220 )221 .expect("existing token data exceeds property storage");222 }223 Some(<ItemDataVersion2<T::CrossAccountId>>::from(v))224 },225 );226 for collection in had_consts {227 <PalletCommon<T>>::set_property_permission_unchecked(228 collection,229 PropertyKeyPermission {230 key: b"_old_constData".to_vec().try_into().unwrap(),231 permission: PropertyPermission {232 mutable: false,233 collection_admin: true,234 token_owner: false,235 },236 },237 )238 .expect("failed to configure permission");239 }240 }241187242 0188 0243 }189 }