Skip to content

Commit 5f58579

Browse files
committed
fix: use lazy_static to construct tracks data on runtimes
1 parent 3b1b8f4 commit 5f58579

File tree

11 files changed

+508
-486
lines changed

11 files changed

+508
-486
lines changed

Cargo.lock

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -846,6 +846,7 @@ kvdb-memorydb = { version = "0.13.0" }
846846
kvdb-rocksdb = { version = "0.19.0" }
847847
kvdb-shared-tests = { version = "0.11.0" }
848848
landlock = { version = "0.3.0" }
849+
lazy_static = { version = "1.5.0", default-features = false, features = ["spin_no_std"] }
849850
libc = { version = "0.2.155" }
850851
libfuzzer-sys = { version = "0.4" }
851852
libp2p = { version = "0.54.1" }

cumulus/parachains/runtimes/collectives/collectives-westend/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ workspace = true
1414
[dependencies]
1515
codec = { features = ["derive", "max-encoded-len"], workspace = true }
1616
hex-literal = { workspace = true, default-features = true }
17+
lazy_static = { workspace = true }
1718
log = { workspace = true }
1819
scale-info = { features = ["derive"], workspace = true }
1920
serde_json = { features = ["alloc"], workspace = true }

cumulus/parachains/runtimes/collectives/collectives-westend/src/ambassador/tracks.rs

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
1818
use super::Origin;
1919
use crate::{Balance, BlockNumber, RuntimeOrigin, DAYS, DOLLARS, HOURS};
20-
use sp_runtime::{str_array as s, Perbill};
20+
use sp_runtime::{BoundedVec, Perbill};
2121
use sp_std::borrow::Cow;
2222

2323
/// Referendum `TrackId` type.
@@ -38,24 +38,12 @@ pub mod constants {
3838
pub const MASTER_AMBASSADOR_TIER_9: TrackId = 9;
3939
}
4040

41-
/// The type implementing the [`pallet_referenda::TracksInfo`] trait for referenda pallet.
42-
pub struct TracksInfo;
43-
44-
/// Information on the voting tracks.
45-
impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
46-
type Id = TrackId;
47-
48-
type RuntimeOrigin = <RuntimeOrigin as frame_support::traits::OriginTrait>::PalletsOrigin;
49-
50-
/// Return the list of available tracks and their information.
51-
fn tracks(
52-
) -> impl Iterator<Item = Cow<'static, pallet_referenda::Track<Self::Id, Balance, BlockNumber>>>
53-
{
54-
static DATA: [pallet_referenda::Track<TrackId, Balance, BlockNumber>; 9] = [
41+
lazy_static::lazy_static! {
42+
pub static ref DATA: [pallet_referenda::Track<TrackId, Balance, BlockNumber>; 9] = [
5543
pallet_referenda::Track {
5644
id: constants::AMBASSADOR_TIER_1,
5745
info: pallet_referenda::TrackInfo {
58-
name: s("ambassador tier 1"),
46+
name: BoundedVec::truncate_from(b"ambassador tier 1".to_vec()),
5947
max_deciding: 10,
6048
decision_deposit: 5 * DOLLARS,
6149
prepare_period: 24 * HOURS,
@@ -77,7 +65,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
7765
pallet_referenda::Track {
7866
id: constants::AMBASSADOR_TIER_2,
7967
info: pallet_referenda::TrackInfo {
80-
name: s("ambassador tier 2"),
68+
name: BoundedVec::truncate_from(b"ambassador tier 2".to_vec()),
8169
max_deciding: 10,
8270
decision_deposit: 5 * DOLLARS,
8371
prepare_period: 24 * HOURS,
@@ -99,7 +87,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
9987
pallet_referenda::Track {
10088
id: constants::SENIOR_AMBASSADOR_TIER_3,
10189
info: pallet_referenda::TrackInfo {
102-
name: s("senior ambassador tier 3"),
90+
name: BoundedVec::truncate_from(b"ambassador tier 3".to_vec()),
10391
max_deciding: 10,
10492
decision_deposit: 5 * DOLLARS,
10593
prepare_period: 24 * HOURS,
@@ -121,7 +109,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
121109
pallet_referenda::Track {
122110
id: constants::SENIOR_AMBASSADOR_TIER_4,
123111
info: pallet_referenda::TrackInfo {
124-
name: s("senior ambassador tier 4"),
112+
name: BoundedVec::truncate_from(b"ambassador tier 4".to_vec()),
125113
max_deciding: 10,
126114
decision_deposit: 5 * DOLLARS,
127115
prepare_period: 24 * HOURS,
@@ -143,7 +131,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
143131
pallet_referenda::Track {
144132
id: constants::HEAD_AMBASSADOR_TIER_5,
145133
info: pallet_referenda::TrackInfo {
146-
name: s("head ambassador tier 5"),
134+
name: BoundedVec::truncate_from(b"ambassador tier 5".to_vec()),
147135
max_deciding: 10,
148136
decision_deposit: 5 * DOLLARS,
149137
prepare_period: 24 * HOURS,
@@ -165,7 +153,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
165153
pallet_referenda::Track {
166154
id: constants::HEAD_AMBASSADOR_TIER_6,
167155
info: pallet_referenda::TrackInfo {
168-
name: s("head ambassador tier 6"),
156+
name: BoundedVec::truncate_from(b"ambassador tier 6".to_vec()),
169157
max_deciding: 10,
170158
decision_deposit: 5 * DOLLARS,
171159
prepare_period: 24 * HOURS,
@@ -187,7 +175,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
187175
pallet_referenda::Track {
188176
id: constants::HEAD_AMBASSADOR_TIER_7,
189177
info: pallet_referenda::TrackInfo {
190-
name: s("head ambassador tier 7"),
178+
name: BoundedVec::truncate_from(b"ambassador tier 7".to_vec()),
191179
max_deciding: 10,
192180
decision_deposit: 5 * DOLLARS,
193181
prepare_period: 24 * HOURS,
@@ -209,7 +197,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
209197
pallet_referenda::Track {
210198
id: constants::MASTER_AMBASSADOR_TIER_8,
211199
info: pallet_referenda::TrackInfo {
212-
name: s("master ambassador tier 8"),
200+
name: BoundedVec::truncate_from(b"ambassador tier 8".to_vec()),
213201
max_deciding: 10,
214202
decision_deposit: 5 * DOLLARS,
215203
prepare_period: 24 * HOURS,
@@ -231,7 +219,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
231219
pallet_referenda::Track {
232220
id: constants::MASTER_AMBASSADOR_TIER_9,
233221
info: pallet_referenda::TrackInfo {
234-
name: s("master ambassador tier 9"),
222+
name: BoundedVec::truncate_from(b"ambassador tier 9".to_vec()),
235223
max_deciding: 10,
236224
decision_deposit: 5 * DOLLARS,
237225
prepare_period: 24 * HOURS,
@@ -251,6 +239,21 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
251239
},
252240
},
253241
];
242+
}
243+
244+
/// The type implementing the [`pallet_referenda::TracksInfo`] trait for referenda pallet.
245+
pub struct TracksInfo;
246+
247+
/// Information on the voting tracks.
248+
impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
249+
type Id = TrackId;
250+
251+
type RuntimeOrigin = <RuntimeOrigin as frame_support::traits::OriginTrait>::PalletsOrigin;
252+
253+
/// Return the list of available tracks and their information.
254+
fn tracks(
255+
) -> impl Iterator<Item = Cow<'static, pallet_referenda::Track<Self::Id, Balance, BlockNumber>>>
256+
{
254257
DATA.iter().map(Cow::Borrowed)
255258
}
256259

0 commit comments

Comments
 (0)