Skip to content

Commit 42b6a06

Browse files
authored
[proposePage] only bootstrappers or reputables can submit a proposal (#1759)
1 parent 9ecd9a8 commit 42b6a06

File tree

6 files changed

+20
-6
lines changed

6 files changed

+20
-6
lines changed

app/lib/l10n/arb/app_de.arb

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
"proposalFieldErrorPositiveNumberRange": "Muss eine positive Zahl sein",
241241
"proposalFieldErrorEnterInactivityTimeout": "Inaktivitätszeitlimit eingeben",
242242
"proposalFieldErrorPositiveIntegerRange": "Muss eine positive ganze Zahl sein",
243+
"proposalOnlyBootstrappersOrReputablesCanSubmit": "Nur Bootstrappers oder Reputables können einen Vorschlag einreichen.",
243244
"proposalSubmit": "Vorschlag einreichen",
244245
"proposalSuperseded": "Verdrängt",
245246
"proposalRejected": "Abgelehnt",

app/lib/l10n/arb/app_en.arb

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
"proposalFieldErrorPositiveNumberRange": "Must be a positive number",
241241
"proposalFieldErrorEnterInactivityTimeout": "Enter inactivity timeout",
242242
"proposalFieldErrorPositiveIntegerRange": "Must be a positive integer",
243+
"proposalOnlyBootstrappersOrReputablesCanSubmit": "Only bootstrappers or reputables can submit a proposal.",
243244
"proposalSubmit": "Submit Proposal",
244245
"proposalSuperseded": "Superseded",
245246
"proposalRejected": "Rejected",

app/lib/l10n/arb/app_fr.arb

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
"proposalFieldErrorPositiveNumberRange": "Doit être un nombre positif",
241241
"proposalFieldErrorEnterInactivityTimeout": "Entrez le délai d'inactivité",
242242
"proposalFieldErrorPositiveIntegerRange": "Doit être un entier positif",
243+
"proposalOnlyBootstrappersOrReputablesCanSubmit": "Seuls les bootstrappers ou les Reputables peuvent soumettre une proposition.",
243244
"proposalSubmit": "Soumettre une proposition",
244245
"proposalSuperseded": "Epargné",
245246
"proposalRejected": "Refusé",

app/lib/l10n/arb/app_ru.arb

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
"proposalFieldErrorPositiveNumberRange": "Должно быть положительное число",
241241
"proposalFieldErrorEnterInactivityTimeout": "Введите тайм-аут неактивности",
242242
"proposalFieldErrorPositiveIntegerRange": "Должно быть положительное целое число",
243+
"proposalOnlyBootstrappersOrReputablesCanSubmit": "Только бутстраперы или уважаемые участники могут подать предложение.",
243244
"proposalSubmit": "Подать предложение",
244245
"proposalRejected": "Отменено",
245246
"proposalSuperseded": "заменен",

app/lib/l10n/arb/app_sw.arb

+1
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,7 @@
240240
"proposalFieldErrorPositiveNumberRange": "Lazima iwe namba chanya",
241241
"proposalFieldErrorEnterInactivityTimeout": "Weka muda wa kutokufanya kazi",
242242
"proposalFieldErrorPositiveIntegerRange": "Lazima iwe namba kamili chanya",
243+
"proposalOnlyBootstrappersOrReputablesCanSubmit": "Ni bootstrappers au waheshimika pekee wanaoweza kuwasilisha pendekezo.",
243244
"proposalSubmit": "Wasilisha Pendekezo",
244245
"proposalSuperseded": "Iliyopita",
245246
"proposalRejected": "Imekaataliwa",

app/lib/page-encointer/democracy/proposal_page/propose_page.dart

+15-6
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class _ProposePageState extends State<ProposePage> {
9292

9393
@override
9494
Widget build(BuildContext context) {
95-
// final store = context.read<AppStore>();
95+
final store = context.read<AppStore>();
9696
final l10n = context.l10n;
9797

9898
return Scaffold(
@@ -158,12 +158,16 @@ class _ProposePageState extends State<ProposePage> {
158158

159159
// Submit Button
160160
const Spacer(),
161+
if (!isBootstrapperOrReputable(store, store.account.currentAddress))
162+
Text(l10n.proposalOnlyBootstrappersOrReputablesCanSubmit, textAlign: TextAlign.center),
161163
SubmitButton(
162-
onPressed: (context) async {
163-
_formKey.currentState!.validate();
164-
await _submitProposal();
165-
Navigator.of(context).pop();
166-
},
164+
onPressed: isBootstrapperOrReputable(store, store.account.currentAddress)
165+
? (context) async {
166+
_formKey.currentState!.validate();
167+
await _submitProposal();
168+
Navigator.of(context).pop();
169+
}
170+
: null, // disable button for non-bootstrappers/reputables
167171
child: Text(l10n.proposalSubmit),
168172
),
169173
],
@@ -506,6 +510,11 @@ class _ProposePageState extends State<ProposePage> {
506510
}
507511
}
508512

513+
bool isBootstrapperOrReputable(AppStore store, String address) {
514+
return store.encointer.community!.bootstrappers!.contains(address) ||
515+
store.encointer.accountStores![address]!.verifiedReputations.isNotEmpty;
516+
}
517+
509518
/// Validates Inactivity Timeout (Only positive integers)
510519
String? validateInactivityTimeout(String? value) {
511520
final l10n = context.l10n;

0 commit comments

Comments
 (0)