Skip to content

Commit 3bc046f

Browse files
authored
Add DAO timeout exception (#1014)
* Add dao timeout, remove unused import * Update dependencies version, override dart style * Downgrade build runner, fix dart style incompitability, generate flagsmith reflectable file * Enable delete-conflicting-outputs while init reflectable * Add new line * Debug build workflow * ignore reflectable files, remove flagsmith reflectable, edit build.sh & build CI * revert build.sh, edit build workflow * Remove debug lines * Remove comment * Revert format ci & build.sh * Revert build runner change
1 parent a9619ac commit 3bc046f

6 files changed

Lines changed: 81 additions & 27 deletions

File tree

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131
run: chmod +x build.sh
3232

3333
- name: Run Build Script
34-
# shell: bash
34+
shell: bash
3535
run: |
3636
./build.sh --init
3737
./build.sh --build --production --debug
@@ -47,4 +47,4 @@ jobs:
4747
uses: actions/upload-artifact@v4
4848
with:
4949
name: app-apk
50-
path: app/build/app/outputs/flutter-apk/app-debug.apk
50+
path: app/build/app/outputs/flutter-apk/app-debug.apk

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ backend/services/__pycache__/socket.cpython-39.pyc
350350
.vscode
351351

352352
# reflected files
353-
app/lib/main.reflectable.dart
353+
*.reflectable.dart
354354

355355
# pubSpec override
356356
app/pubspec_overrides.yaml

app/lib/screens/dao_screen.dart

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import 'dart:async';
2+
13
import 'package:flutter/material.dart';
24
import 'package:tfchain_client/models/dao.dart';
35
import 'package:threebotlogin/helpers/logger.dart';
@@ -24,8 +26,17 @@ class _DaoPageState extends State<DaoPage> with SingleTickerProviderStateMixin {
2426
loading = true;
2527
failed = false;
2628
});
29+
2730
try {
28-
final proposals = await getProposals();
31+
final proposals = await getProposals().timeout(
32+
const Duration(minutes: 1),
33+
onTimeout: () {
34+
throw TimeoutException('Loading DAO proposals timed out');
35+
},
36+
);
37+
38+
logger.i('Proposals loaded successfully');
39+
2940
if (activeList.isNotEmpty) activeList.clear();
3041
if (inactiveList.isNotEmpty) inactiveList.clear();
3142
activeList.addAll(proposals['activeProposals']!);
@@ -34,6 +45,26 @@ class _DaoPageState extends State<DaoPage> with SingleTickerProviderStateMixin {
3445
loading = false;
3546
failed = false;
3647
});
48+
} on TimeoutException catch (e) {
49+
logger.e('Loading proposals timed out: $e');
50+
if (context.mounted) {
51+
final timeoutFailure = SnackBar(
52+
content: Text(
53+
'Loading proposals timed out. Please try again.',
54+
style: Theme.of(context)
55+
.textTheme
56+
.bodyMedium!
57+
.copyWith(color: Theme.of(context).colorScheme.errorContainer),
58+
),
59+
duration: const Duration(seconds: 3),
60+
);
61+
ScaffoldMessenger.of(context).clearSnackBars();
62+
ScaffoldMessenger.of(context).showSnackBar(timeoutFailure);
63+
}
64+
setState(() {
65+
loading = false;
66+
failed = true;
67+
});
3768
} catch (e) {
3869
logger.e('Failed to load proposals due to $e');
3970
if (context.mounted) {
@@ -54,7 +85,6 @@ class _DaoPageState extends State<DaoPage> with SingleTickerProviderStateMixin {
5485
loading = false;
5586
failed = true;
5687
});
57-
throw Exception('Failed to load proposals due to $e');
5888
}
5989
}
6090

app/lib/screens/signing/sign_with_text.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import 'package:flutter/material.dart';
2-
import 'package:flutter/services.dart';
32
import 'package:flutter_riverpod/flutter_riverpod.dart';
43
import 'package:threebotlogin/screens/signing/signing_mixin.dart';
54

app/pubspec.lock

Lines changed: 45 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,14 @@ packages:
278278
url: "https://pub.dev"
279279
source: hosted
280280
version: "2.2.5"
281+
cross_file:
282+
dependency: transitive
283+
description:
284+
name: cross_file
285+
sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670"
286+
url: "https://pub.dev"
287+
source: hosted
288+
version: "0.3.4+2"
281289
crypto:
282290
dependency: "direct main"
283291
description:
@@ -311,7 +319,7 @@ packages:
311319
source: hosted
312320
version: "1.0.8"
313321
dart_style:
314-
dependency: transitive
322+
dependency: "direct overridden"
315323
description:
316324
name: dart_style
317325
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
@@ -1331,34 +1339,34 @@ packages:
13311339
dependency: transitive
13321340
description:
13331341
name: polkadart
1334-
sha256: "46604b1c6fb4f35b564194e51c53a9a77a15291671db6cfbed9fb188831b8560"
1342+
sha256: b2369eeb33ee155dcdf2a7af18de8961037b9cc28640e200f1475cea497bc3ab
13351343
url: "https://pub.dev"
13361344
source: hosted
1337-
version: "0.5.0"
1345+
version: "0.7.1"
13381346
polkadart_cli:
13391347
dependency: transitive
13401348
description:
13411349
name: polkadart_cli
1342-
sha256: ea16dc9eef662fed6c330f357b38402bc1fd2b862b4e47bf1f9d84c48fa3135b
1350+
sha256: e02782bfd77446c6705ef61d378d49e25df8a2826c575825d7abf2047ea6c07b
13431351
url: "https://pub.dev"
13441352
source: hosted
1345-
version: "0.5.0"
1353+
version: "0.7.0"
13461354
polkadart_keyring:
13471355
dependency: transitive
13481356
description:
13491357
name: polkadart_keyring
1350-
sha256: bed5af744e801e88bf7d067ea477fc7eb0a5955801491a8b3e57b578d9de8bea
1358+
sha256: e99a93c845466dfb53e23bf650bd6ccd772d7cefe7c7ff2c93c6e86d387e5215
13511359
url: "https://pub.dev"
13521360
source: hosted
1353-
version: "0.5.0"
1361+
version: "0.7.0"
13541362
polkadart_scale_codec:
13551363
dependency: transitive
13561364
description:
13571365
name: polkadart_scale_codec
1358-
sha256: a9b295ddbd8ace501066800ab521575095464f324cb4185be386bd78ee9316d0
1366+
sha256: db0d61adc58d8b395e663558ba6b2aed2ab2291d343733c49c693de62a2498d2
13591367
url: "https://pub.dev"
13601368
source: hosted
1361-
version: "1.3.0"
1369+
version: "1.5.0"
13621370
pool:
13631371
dependency: transitive
13641372
description:
@@ -1540,10 +1548,10 @@ packages:
15401548
dependency: transitive
15411549
description:
15421550
name: secp256k1_ecdsa
1543-
sha256: "8d516e3f9ad716e721a4e961b890bb03bf3c68ba51bca256a617a055e3c7ef89"
1551+
sha256: "50bca61d6ad872829f6bd05c17a96441c1bcfe456ed5bf8cba710ceac86db5f1"
15441552
url: "https://pub.dev"
15451553
source: hosted
1546-
version: "0.5.0"
1554+
version: "0.6.1"
15471555
shared_preferences:
15481556
dependency: "direct main"
15491557
description:
@@ -1621,7 +1629,7 @@ packages:
16211629
description:
16221630
path: "packages/signer"
16231631
ref: development
1624-
resolved-ref: "0ce3b575e2f3dcd371be2152042978113b4eadb1"
1632+
resolved-ref: "7f33a44cd88b7b23fa0ccfe2253c6a8ea71a72d9"
16251633
url: "https://github.com/threefoldtech/tfgrid-sdk-dart.git"
16261634
source: git
16271635
version: "0.1.0"
@@ -1738,10 +1746,10 @@ packages:
17381746
dependency: transitive
17391747
description:
17401748
name: sr25519
1741-
sha256: d10247ff98330efb658042357c8c7fc46074c3c160ea16d3dcdfedf8a9a87b60
1749+
sha256: "122c930a933da6af018ec4a2ccdb853a7d0eb1a0891bfb03467e366b56f86f12"
17421750
url: "https://pub.dev"
17431751
source: hosted
1744-
version: "0.5.0"
1752+
version: "0.7.0"
17451753
ss58:
17461754
dependency: transitive
17471755
description:
@@ -1819,18 +1827,18 @@ packages:
18191827
dependency: transitive
18201828
description:
18211829
name: substrate_bip39
1822-
sha256: "6680dc10eb4f165659374eec5c5aa75920e720b3c00b65490e1dfe3d5ea5a52d"
1830+
sha256: ba880015808079804f40a0fde8c5bff0315ec6792fe3a4281a704e408f1c6bdb
18231831
url: "https://pub.dev"
18241832
source: hosted
1825-
version: "0.5.0"
1833+
version: "0.7.0"
18261834
substrate_metadata:
18271835
dependency: transitive
18281836
description:
18291837
name: substrate_metadata
1830-
sha256: "878bf0e818eed4543f0c9af303b8ffe201cb69bf56c32d717f1bdef88e691836"
1838+
sha256: "6f9e9e3e1078c0c143dd63824043370b9df582d34c431a759253ce2f9cbb7f13"
18311839
url: "https://pub.dev"
18321840
source: hosted
1833-
version: "1.3.0"
1841+
version: "1.5.0"
18341842
synchronized:
18351843
dependency: transitive
18361844
description:
@@ -1860,7 +1868,7 @@ packages:
18601868
description:
18611869
path: "packages/tfchain_client"
18621870
ref: development
1863-
resolved-ref: "4ef4d3bc2550017d987f27fd8c2264854c5cf683"
1871+
resolved-ref: "7f33a44cd88b7b23fa0ccfe2253c6a8ea71a72d9"
18641872
url: "https://github.com/threefoldtech/tfgrid-sdk-dart"
18651873
source: git
18661874
version: "0.1.0"
@@ -2152,14 +2160,30 @@ packages:
21522160
url: "https://pub.dev"
21532161
source: hosted
21542162
version: "1.1.1"
2163+
web_socket:
2164+
dependency: transitive
2165+
description:
2166+
name: web_socket
2167+
sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
2168+
url: "https://pub.dev"
2169+
source: hosted
2170+
version: "1.0.1"
21552171
web_socket_channel:
21562172
dependency: transitive
21572173
description:
21582174
name: web_socket_channel
2159-
sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b
2175+
sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
21602176
url: "https://pub.dev"
21612177
source: hosted
2162-
version: "2.4.0"
2178+
version: "3.0.3"
2179+
web_socket_client:
2180+
dependency: transitive
2181+
description:
2182+
name: web_socket_client
2183+
sha256: "22264cb5143e9bb55c943d6b051d207fdd6470ffb77ee45778c9a7a0fda100bc"
2184+
url: "https://pub.dev"
2185+
source: hosted
2186+
version: "0.2.0"
21632187
webview_flutter:
21642188
dependency: "direct main"
21652189
description:

app/pubspec.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ dev_dependencies:
9393
flutter_lints: ^5.0.0
9494

9595
dependency_overrides:
96+
dart_style: ^2.3.0
9697
intl: ^0.19.0
9798
shared_preferences_android: 2.0.12
9899
signer:

0 commit comments

Comments
 (0)