17
17
18
18
use super :: Origin ;
19
19
use crate :: { Balance , BlockNumber , RuntimeOrigin , DAYS , DOLLARS , HOURS } ;
20
- use sp_runtime:: Perbill ;
20
+ use pallet_referenda:: { StaticTracksIter , Track } ;
21
+ use sp_runtime:: { str_array as s, Perbill } ;
22
+ use sp_std:: borrow:: Cow :: Borrowed ;
21
23
22
24
/// Referendum `TrackId` type.
23
25
pub type TrackId = u16 ;
@@ -46,13 +48,15 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
46
48
47
49
type RuntimeOrigin = <RuntimeOrigin as frame_support:: traits:: OriginTrait >:: PalletsOrigin ;
48
50
51
+ type TracksIter = StaticTracksIter < Self :: Id , Balance , BlockNumber > ;
52
+
49
53
/// Return the array of available tracks and their information.
50
- fn tracks ( ) -> & ' static [ ( Self :: Id , pallet_referenda :: TrackInfo < Balance , BlockNumber > ) ] {
51
- static DATA : [ ( TrackId , pallet_referenda :: TrackInfo < Balance , BlockNumber > ) ; 9 ] = [
52
- (
53
- constants:: AMBASSADOR_TIER_1 ,
54
- pallet_referenda:: TrackInfo {
55
- name : "ambassador tier 1" ,
54
+ fn tracks ( ) -> Self :: TracksIter {
55
+ static DATA : [ Track < TrackId , Balance , BlockNumber > ; 9 ] = [
56
+ Track {
57
+ id : constants:: AMBASSADOR_TIER_1 ,
58
+ info : pallet_referenda:: TrackInfo {
59
+ name : s ( "ambassador tier 1" ) ,
56
60
max_deciding : 10 ,
57
61
decision_deposit : 5 * DOLLARS ,
58
62
prepare_period : 24 * HOURS ,
@@ -70,11 +74,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
70
74
ceil : Perbill :: from_percent ( 50 ) ,
71
75
} ,
72
76
} ,
73
- ) ,
74
- (
75
- constants:: AMBASSADOR_TIER_2 ,
76
- pallet_referenda:: TrackInfo {
77
- name : "ambassador tier 2" ,
77
+ } ,
78
+ Track {
79
+ id : constants:: AMBASSADOR_TIER_2 ,
80
+ info : pallet_referenda:: TrackInfo {
81
+ name : s ( "ambassador tier 2" ) ,
78
82
max_deciding : 10 ,
79
83
decision_deposit : 5 * DOLLARS ,
80
84
prepare_period : 24 * HOURS ,
@@ -92,11 +96,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
92
96
ceil : Perbill :: from_percent ( 50 ) ,
93
97
} ,
94
98
} ,
95
- ) ,
96
- (
97
- constants:: SENIOR_AMBASSADOR_TIER_3 ,
98
- pallet_referenda:: TrackInfo {
99
- name : "senior ambassador tier 3" ,
99
+ } ,
100
+ Track {
101
+ id : constants:: SENIOR_AMBASSADOR_TIER_3 ,
102
+ info : pallet_referenda:: TrackInfo {
103
+ name : s ( "senior ambassador tier 3" ) ,
100
104
max_deciding : 10 ,
101
105
decision_deposit : 5 * DOLLARS ,
102
106
prepare_period : 24 * HOURS ,
@@ -114,11 +118,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
114
118
ceil : Perbill :: from_percent ( 50 ) ,
115
119
} ,
116
120
} ,
117
- ) ,
118
- (
119
- constants:: SENIOR_AMBASSADOR_TIER_4 ,
120
- pallet_referenda:: TrackInfo {
121
- name : "senior ambassador tier 4" ,
121
+ } ,
122
+ Track {
123
+ id : constants:: SENIOR_AMBASSADOR_TIER_4 ,
124
+ info : pallet_referenda:: TrackInfo {
125
+ name : s ( "senior ambassador tier 4" ) ,
122
126
max_deciding : 10 ,
123
127
decision_deposit : 5 * DOLLARS ,
124
128
prepare_period : 24 * HOURS ,
@@ -136,11 +140,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
136
140
ceil : Perbill :: from_percent ( 50 ) ,
137
141
} ,
138
142
} ,
139
- ) ,
140
- (
141
- constants:: HEAD_AMBASSADOR_TIER_5 ,
142
- pallet_referenda:: TrackInfo {
143
- name : "head ambassador tier 5" ,
143
+ } ,
144
+ Track {
145
+ id : constants:: HEAD_AMBASSADOR_TIER_5 ,
146
+ info : pallet_referenda:: TrackInfo {
147
+ name : s ( "head ambassador tier 5" ) ,
144
148
max_deciding : 10 ,
145
149
decision_deposit : 5 * DOLLARS ,
146
150
prepare_period : 24 * HOURS ,
@@ -158,11 +162,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
158
162
ceil : Perbill :: from_percent ( 50 ) ,
159
163
} ,
160
164
} ,
161
- ) ,
162
- (
163
- constants:: HEAD_AMBASSADOR_TIER_6 ,
164
- pallet_referenda:: TrackInfo {
165
- name : "head ambassador tier 6" ,
165
+ } ,
166
+ Track {
167
+ id : constants:: HEAD_AMBASSADOR_TIER_6 ,
168
+ info : pallet_referenda:: TrackInfo {
169
+ name : s ( "head ambassador tier 6" ) ,
166
170
max_deciding : 10 ,
167
171
decision_deposit : 5 * DOLLARS ,
168
172
prepare_period : 24 * HOURS ,
@@ -180,11 +184,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
180
184
ceil : Perbill :: from_percent ( 50 ) ,
181
185
} ,
182
186
} ,
183
- ) ,
184
- (
185
- constants:: HEAD_AMBASSADOR_TIER_7 ,
186
- pallet_referenda:: TrackInfo {
187
- name : "head ambassador tier 7" ,
187
+ } ,
188
+ Track {
189
+ id : constants:: HEAD_AMBASSADOR_TIER_7 ,
190
+ info : pallet_referenda:: TrackInfo {
191
+ name : s ( "head ambassador tier 7" ) ,
188
192
max_deciding : 10 ,
189
193
decision_deposit : 5 * DOLLARS ,
190
194
prepare_period : 24 * HOURS ,
@@ -202,11 +206,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
202
206
ceil : Perbill :: from_percent ( 50 ) ,
203
207
} ,
204
208
} ,
205
- ) ,
206
- (
207
- constants:: MASTER_AMBASSADOR_TIER_8 ,
208
- pallet_referenda:: TrackInfo {
209
- name : "master ambassador tier 8" ,
209
+ } ,
210
+ Track {
211
+ id : constants:: MASTER_AMBASSADOR_TIER_8 ,
212
+ info : pallet_referenda:: TrackInfo {
213
+ name : s ( "master ambassador tier 8" ) ,
210
214
max_deciding : 10 ,
211
215
decision_deposit : 5 * DOLLARS ,
212
216
prepare_period : 24 * HOURS ,
@@ -224,11 +228,11 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
224
228
ceil : Perbill :: from_percent ( 50 ) ,
225
229
} ,
226
230
} ,
227
- ) ,
228
- (
229
- constants:: MASTER_AMBASSADOR_TIER_9 ,
230
- pallet_referenda:: TrackInfo {
231
- name : "master ambassador tier 9" ,
231
+ } ,
232
+ Track {
233
+ id : constants:: MASTER_AMBASSADOR_TIER_9 ,
234
+ info : pallet_referenda:: TrackInfo {
235
+ name : s ( "master ambassador tier 9" ) ,
232
236
max_deciding : 10 ,
233
237
decision_deposit : 5 * DOLLARS ,
234
238
prepare_period : 24 * HOURS ,
@@ -246,9 +250,9 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
246
250
ceil : Perbill :: from_percent ( 50 ) ,
247
251
} ,
248
252
} ,
249
- ) ,
253
+ } ,
250
254
] ;
251
- & DATA [ .. ]
255
+ DATA . iter ( ) . map ( Borrowed )
252
256
}
253
257
254
258
/// Determine the voting track for the given `origin`.
@@ -259,7 +263,7 @@ impl pallet_referenda::TracksInfo<Balance, BlockNumber> for TracksInfo {
259
263
// It is important that this is not available in production!
260
264
let root: Self :: RuntimeOrigin = frame_system:: RawOrigin :: Root . into ( ) ;
261
265
if & root == id {
262
- return Ok ( constants:: MASTER_AMBASSADOR_TIER_9 )
266
+ return Ok ( constants:: MASTER_AMBASSADOR_TIER_9 ) ;
263
267
}
264
268
}
265
269
0 commit comments