From 44ab97cd72217a6928ec503f42452c9bf4856c30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 13 Feb 2025 15:34:22 +0100 Subject: [PATCH 01/11] chore: bump dart and flutter --- .../AdminUi/apps/admin_ui/pubspec.lock | 76 +++++++++---------- .../AdminUi/apps/admin_ui/pubspec.yaml | 4 +- .../packages/admin_api_sdk/pubspec.yaml | 2 +- .../packages/admin_api_types/pubspec.yaml | 2 +- Applications/AdminUi/pubspec.lock | 2 +- Applications/AdminUi/pubspec.yaml | 2 +- 6 files changed, 44 insertions(+), 44 deletions(-) diff --git a/Applications/AdminUi/apps/admin_ui/pubspec.lock b/Applications/AdminUi/apps/admin_ui/pubspec.lock index 63baf4c6a8..aff45367f1 100644 --- a/Applications/AdminUi/apps/admin_ui/pubspec.lock +++ b/Applications/AdminUi/apps/admin_ui/pubspec.lock @@ -35,26 +35,26 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" checked_yaml: dependency: transitive description: @@ -75,18 +75,18 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" collection: dependency: "direct main" description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" crypto: dependency: transitive description: @@ -131,10 +131,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" ffi: dependency: transitive description: @@ -271,18 +271,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -311,10 +311,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -327,18 +327,18 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" path: dependency: transitive description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_parsing: dependency: transitive description: @@ -460,50 +460,50 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" stack_trace: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" translations_cleaner: dependency: "direct dev" description: @@ -564,10 +564,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.3.1" watch_it: dependency: "direct main" description: @@ -618,5 +618,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.5.0 <4.0.0" - flutter: ">=3.24.0" + dart: ">=3.7.0 <4.0.0" + flutter: ">=3.29.0" diff --git a/Applications/AdminUi/apps/admin_ui/pubspec.yaml b/Applications/AdminUi/apps/admin_ui/pubspec.yaml index 1e04aa8a2b..a45ef9a0d9 100644 --- a/Applications/AdminUi/apps/admin_ui/pubspec.yaml +++ b/Applications/AdminUi/apps/admin_ui/pubspec.yaml @@ -4,8 +4,8 @@ publish_to: "none" version: 0.1.0 environment: - sdk: ">=3.5.0 <4.0.0" - flutter: ">=3.24.0" + sdk: "^3.7.0" + flutter: ">=3.29.0" dependencies: admin_api_sdk: ^1.0.0 diff --git a/Applications/AdminUi/packages/admin_api_sdk/pubspec.yaml b/Applications/AdminUi/packages/admin_api_sdk/pubspec.yaml index 0ee08a9d11..3f0f33a753 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/pubspec.yaml +++ b/Applications/AdminUi/packages/admin_api_sdk/pubspec.yaml @@ -2,7 +2,7 @@ name: admin_api_sdk version: 1.0.0 environment: - sdk: ">=3.5.0 <4.0.0" + sdk: "^3.7.0" dependencies: admin_api_types: ^1.0.0 diff --git a/Applications/AdminUi/packages/admin_api_types/pubspec.yaml b/Applications/AdminUi/packages/admin_api_types/pubspec.yaml index c364f12994..a5fd78c45d 100644 --- a/Applications/AdminUi/packages/admin_api_types/pubspec.yaml +++ b/Applications/AdminUi/packages/admin_api_types/pubspec.yaml @@ -3,7 +3,7 @@ description: The types used by the Admin API. version: 1.0.0 environment: - sdk: ">=3.5.0 <4.0.0" + sdk: "^3.7.0" dependencies: json_annotation: ^4.9.0 diff --git a/Applications/AdminUi/pubspec.lock b/Applications/AdminUi/pubspec.lock index 5c02f535b3..d86b24e1ac 100644 --- a/Applications/AdminUi/pubspec.lock +++ b/Applications/AdminUi/pubspec.lock @@ -346,4 +346,4 @@ packages: source: hosted version: "2.2.1" sdks: - dart: ">=3.5.0 <4.0.0" + dart: ">=3.7.0 <4.0.0" diff --git a/Applications/AdminUi/pubspec.yaml b/Applications/AdminUi/pubspec.yaml index e72c651181..da50a6c867 100644 --- a/Applications/AdminUi/pubspec.yaml +++ b/Applications/AdminUi/pubspec.yaml @@ -5,7 +5,7 @@ repository: https://github.com/nmshd/backbone homepage: https://enmeshed.eu environment: - sdk: ">=3.5.0 <4.0.0" + sdk: "^3.7.0" dev_dependencies: melos: ^6.1.0 From 4a161e81fcb9aaf2f375023e39a2f86d9b1ba6db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 13 Feb 2025 15:34:40 +0100 Subject: [PATCH 02/11] chore: set page_width in analysis_options --- Applications/AdminUi/analysis_options.yaml | 3 +++ Applications/AdminUi/melos.yaml | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Applications/AdminUi/analysis_options.yaml b/Applications/AdminUi/analysis_options.yaml index 8218bea432..2aa42e0d2c 100644 --- a/Applications/AdminUi/analysis_options.yaml +++ b/Applications/AdminUi/analysis_options.yaml @@ -7,3 +7,6 @@ linter: public_member_api_docs: false always_use_package_imports: false avoid_setters_without_getters: false + +formatter: + page_width: 150 diff --git a/Applications/AdminUi/melos.yaml b/Applications/AdminUi/melos.yaml index 41a2735eff..b64b6ee6ab 100644 --- a/Applications/AdminUi/melos.yaml +++ b/Applications/AdminUi/melos.yaml @@ -11,7 +11,6 @@ ide: command: format: - lineLength: 150 setExitIfChanged: true scripts: From cb74bf05054c6a642911b303f4434dd12de3096f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 13 Feb 2025 15:35:05 +0100 Subject: [PATCH 03/11] chore: format everything --- .../apps/admin_ui/lib/core/constants.dart | 3 +- .../apps/admin_ui/lib/core/extensions.dart | 12 +- .../lib/core/modals/assign_quota_dialog.dart | 75 +++------ .../core/modals/change_max_identities.dart | 30 ++-- .../admin_ui/lib/core/modals/change_tier.dart | 50 +++--- .../lib/core/modals/confirmation_dialog.dart | 25 +-- .../lib/core/models/theme_mode_model.dart | 5 +- .../lib/core/theme/color_schemes.dart | 6 +- .../lib/core/theme/custom_colors.dart | 14 +- .../widgets/copy_to_clipboard_button.dart | 13 +- .../deletion_process_audit_logs_table.dart | 40 ++--- .../lib/core/widgets/entity_details.dart | 33 +--- .../core/widgets/filters/input_filter.dart | 8 +- .../core/widgets/filters/multi_select.dart | 103 ++++++------ .../core/widgets/filters/number_filter.dart | 6 +- ...to_filter_operator_dropdown_menu_item.dart | 8 +- .../identities_data_table.dart | 28 ++-- .../identities_data_table_source.dart | 89 +++++----- .../identities_filter.dart | 7 +- .../lib/core/widgets/identities_table.dart | 4 +- .../lib/core/widgets/quotas_button_group.dart | 43 ++--- .../home/client_details/client_details.dart | 28 +--- .../home/clients_overview/clients_filter.dart | 17 +- .../clients_overview/clients_overview.dart | 106 ++++++------ .../modals/change_client_secret_dialog.dart | 20 +-- .../modals/create_client_dialog.dart | 40 ++--- .../deletion_process_audit_log_details.dart | 15 +- .../identities_overview.dart | 6 +- .../query_deletion_process_audit_logs.dart | 20 ++- .../deletion_process_details.dart | 45 ++---- .../deletion_process_table.dart | 152 +++++++++--------- .../identity_details/identity_details.dart | 7 +- .../identity_devices/identity_devices.dart | 47 +++--- .../identity_messages/identity_messages.dart | 6 +- .../identity_messages_data_table_source.dart | 92 +++++------ .../identity_messages_table.dart | 21 +-- .../modals/all_recipients_dialog.dart | 42 +++-- .../identity_quotas/identity_quotas.dart | 137 +++++++--------- ...entity_relationship_data_table_source.dart | 91 ++++++----- .../identity_relationship_table.dart | 26 ++- .../identity_relationships.dart | 14 +- .../lib/home/tier_detail/tier_detail.dart | 47 ++---- .../modals/show_create_tier_dialog.dart | 99 +++++------- .../home/tiers_overview/tiers_overview.dart | 28 ++-- .../AdminUi/apps/admin_ui/lib/main.dart | 38 ++--- .../admin_ui/lib/screens/error_screen.dart | 5 +- .../admin_ui/lib/screens/home_screen.dart | 14 +- .../admin_ui/lib/screens/login_screen.dart | 6 +- .../admin_ui/lib/setup/setup_desktop.dart | 4 +- .../example/admin_api_sdk_example.dart | 10 +- .../lib/src/admin_api_sdk_base.dart | 18 +-- .../lib/src/endpoints/clients_endpoint.dart | 84 ++++------ .../lib/src/endpoints/endpoint.dart | 19 +-- .../src/endpoints/identities_endpoint.dart | 78 ++------- .../lib/src/endpoints/messages_endpoint.dart | 16 +- .../lib/src/endpoints/metrics_endpoint.dart | 5 +- .../lib/src/endpoints/quotas_endpoint.dart | 23 +-- .../src/endpoints/relationships_endpoint.dart | 12 +- .../lib/src/endpoints/tiers_endpoint.dart | 19 +-- .../lib/src/enums/message_type.dart | 5 +- .../lib/src/types/api_error.dart | 8 +- .../lib/src/types/api_response.dart | 7 +- .../change_client_secret_response.g.dart | 28 ++-- .../lib/src/clients/client.g.dart | 28 ++-- .../lib/src/clients/client_overview.g.dart | 28 ++-- .../src/clients/create_client_response.g.dart | 28 ++-- .../src/clients/update_client_response.g.dart | 24 +-- .../lib/src/identities/identity.g.dart | 40 ++--- .../identity_deletion_process.g.dart | 56 +++---- ...ty_deletion_process_audit_log_entry.g.dart | 19 +-- .../identity_deletion_process_detail.dart | 7 +- .../identity_deletion_process_detail.g.dart | 20 +-- .../lib/src/identities/identity_device.g.dart | 36 ++--- .../src/identities/identity_overview.g.dart | 36 ++--- .../lib/src/identities/identity_quota.dart | 9 +- .../lib/src/identities/identity_quota.g.dart | 28 ++-- .../lib/src/identities/individual_quota.dart | 7 +- .../src/identities/individual_quota.g.dart | 20 +-- .../lib/src/messages/message_overview.g.dart | 28 ++-- .../lib/src/messages/message_recipient.dart | 4 +- .../lib/src/messages/message_recipient.g.dart | 8 +- .../lib/src/metrics/metric.dart | 5 +- .../lib/src/metrics/metric.g.dart | 10 +- .../lib/src/relationships/relationship.g.dart | 36 ++--- .../lib/src/tiers/create_tier_response.dart | 5 +- .../lib/src/tiers/create_tier_response.g.dart | 11 +- .../admin_api_types/lib/src/tiers/tier.g.dart | 10 +- .../lib/src/tiers/tier_details.dart | 6 +- .../lib/src/tiers/tier_details.g.dart | 16 +- .../lib/src/tiers/tier_overview.g.dart | 24 +-- .../lib/src/tiers/tier_quota_definition.dart | 7 +- .../src/tiers/tier_quota_definition.g.dart | 20 +-- 92 files changed, 1049 insertions(+), 1634 deletions(-) diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/constants.dart b/Applications/AdminUi/apps/admin_ui/lib/core/constants.dart index 6453d06d68..dced494812 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/constants.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/constants.dart @@ -19,7 +19,8 @@ class Gaps { static const SizedBox w40 = SizedBox(width: 40); } -final kIsDesktop = !kIsWeb && +final kIsDesktop = + !kIsWeb && (defaultTargetPlatform == TargetPlatform.linux || defaultTargetPlatform == TargetPlatform.macOS || defaultTargetPlatform == TargetPlatform.windows); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart b/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart index a40aeeaf97..dac520f3e6 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart @@ -22,18 +22,10 @@ extension GetCustomColors on BuildContext { } extension SetClipboardDataWithSnack on BuildContext { - void setClipboardDataWithSuccessNotification({ - required String clipboardText, - required String successMessage, - }) { + void setClipboardDataWithSuccessNotification({required String clipboardText, required String successMessage}) { Clipboard.setData(ClipboardData(text: clipboardText)); - ScaffoldMessenger.of(this).showSnackBar( - SnackBar( - content: Text(successMessage), - showCloseIcon: true, - ), - ); + ScaffoldMessenger.of(this).showSnackBar(SnackBar(content: Text(successMessage), showCloseIcon: true)); } } diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/modals/assign_quota_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/core/modals/assign_quota_dialog.dart index 39a20ee8bf..d2c50e0e5c 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/modals/assign_quota_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/modals/assign_quota_dialog.dart @@ -7,12 +7,7 @@ import 'package:get_it/get_it.dart'; import '../constants.dart'; import '../extensions.dart'; -Future showAddQuotaDialog({ - required BuildContext context, - required VoidCallback onQuotaAdded, - String? tierId, - String? identityAddress, -}) async { +Future showAddQuotaDialog({required BuildContext context, required VoidCallback onQuotaAdded, String? tierId, String? identityAddress}) async { assert(tierId != null || identityAddress != null, 'Either tierId or address must be provided'); assert(tierId == null || identityAddress == null, 'Only one of tierId or address can be provided'); @@ -22,20 +17,23 @@ Future showAddQuotaDialog({ await showDialog( context: context, - builder: (BuildContext context) => _AssignQuotaDialog( - availableMetrics: metrics.data, - addQuota: ({required String metricKey, required int max, required String period}) { - if (tierId != null) { - return GetIt.I.get().quotas.createTierQuota(tierId: tierId, metricKey: metricKey, max: max, period: period); - } - - return GetIt.I - .get() - .identities - .createIndividualQuota(address: identityAddress!, metricKey: metricKey, max: max, period: period); - }, - onQuotaAdded: onQuotaAdded, - ), + builder: + (BuildContext context) => _AssignQuotaDialog( + availableMetrics: metrics.data, + addQuota: ({required String metricKey, required int max, required String period}) { + if (tierId != null) { + return GetIt.I.get().quotas.createTierQuota(tierId: tierId, metricKey: metricKey, max: max, period: period); + } + + return GetIt.I.get().identities.createIndividualQuota( + address: identityAddress!, + metricKey: metricKey, + max: max, + period: period, + ); + }, + onQuotaAdded: onQuotaAdded, + ), ); } @@ -44,11 +42,7 @@ class _AssignQuotaDialog extends StatefulWidget { final Future> Function({required String metricKey, required int max, required String period}) addQuota; final VoidCallback onQuotaAdded; - const _AssignQuotaDialog({ - required this.availableMetrics, - required this.addQuota, - required this.onQuotaAdded, - }); + const _AssignQuotaDialog({required this.availableMetrics, required this.addQuota, required this.onQuotaAdded}); @override State<_AssignQuotaDialog> createState() => _AssignQuotaDialogState(); @@ -94,19 +88,13 @@ class _AssignQuotaDialogState extends State<_AssignQuotaDialog> { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: const EdgeInsets.all(8), - child: Text('*${context.l10n.required}'), - ), + Padding(padding: const EdgeInsets.all(8), child: Text('*${context.l10n.required}')), Gaps.h32, DropdownButtonFormField( value: _selectedMetric, items: widget.availableMetrics.map((metric) => DropdownMenuItem(value: metric.key, child: Text(metric.displayName))).toList(), onChanged: _saving ? null : (String? selected) => setState(() => _selectedMetric = selected), - decoration: InputDecoration( - border: const OutlineInputBorder(), - labelText: '${context.l10n.metric}*', - ), + decoration: InputDecoration(border: const OutlineInputBorder(), labelText: '${context.l10n.metric}*'), ), Gaps.h24, TextField( @@ -131,10 +119,7 @@ class _AssignQuotaDialogState extends State<_AssignQuotaDialog> { DropdownMenuItem(value: 'Year', child: Text(context.l10n.year)), ], onChanged: _saving ? null : (String? selected) => setState(() => _selectedPeriod = selected), - decoration: InputDecoration( - border: const OutlineInputBorder(), - labelText: '${context.l10n.period}*', - ), + decoration: InputDecoration(border: const OutlineInputBorder(), labelText: '${context.l10n.period}*'), ), if (_errorMessage != null) Padding( @@ -145,14 +130,8 @@ class _AssignQuotaDialogState extends State<_AssignQuotaDialog> { ), ), actions: [ - OutlinedButton( - onPressed: _saving ? null : () => Navigator.of(context, rootNavigator: true).pop(), - child: Text(context.l10n.cancel), - ), - FilledButton( - onPressed: _isValid && !_saving ? _addQuota : null, - child: Text(context.l10n.assign), - ), + OutlinedButton(onPressed: _saving ? null : () => Navigator.of(context, rootNavigator: true).pop(), child: Text(context.l10n.cancel)), + FilledButton(onPressed: _isValid && !_saving ? _addQuota : null, child: Text(context.l10n.assign)), ], ), ); @@ -163,11 +142,7 @@ class _AssignQuotaDialogState extends State<_AssignQuotaDialog> { assert(_selectedMetric != null && _maxAmount != null && _selectedPeriod != null, 'Invalid State'); - final response = await widget.addQuota( - metricKey: _selectedMetric!, - max: _maxAmount!, - period: _selectedPeriod!, - ); + final response = await widget.addQuota(metricKey: _selectedMetric!, max: _maxAmount!, period: _selectedPeriod!); if (response.hasError) { setState(() { diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_max_identities.dart b/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_max_identities.dart index e537bac027..a16043fe0d 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_max_identities.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_max_identities.dart @@ -12,10 +12,7 @@ Future showChangeMaxIdentitiesDialog({ }) async { await showDialog( context: context, - builder: (BuildContext context) => _ShowChangeMaxIdentitiesDialog( - onMaxIdentitiesUpdated: onMaxIdentitiesUpdated, - clientDetails: clientDetails, - ), + builder: (BuildContext context) => _ShowChangeMaxIdentitiesDialog(onMaxIdentitiesUpdated: onMaxIdentitiesUpdated, clientDetails: clientDetails), ); } @@ -23,10 +20,7 @@ class _ShowChangeMaxIdentitiesDialog extends StatefulWidget { final VoidCallback onMaxIdentitiesUpdated; final Client clientDetails; - const _ShowChangeMaxIdentitiesDialog({ - required this.onMaxIdentitiesUpdated, - required this.clientDetails, - }); + const _ShowChangeMaxIdentitiesDialog({required this.onMaxIdentitiesUpdated, required this.clientDetails}); @override State<_ShowChangeMaxIdentitiesDialog> createState() => _ShowChangeMaxIdentitiesDialogState(); @@ -99,26 +93,26 @@ class _ShowChangeMaxIdentitiesDialogState extends State<_ShowChangeMaxIdentities } final response = await GetIt.I.get().clients.updateClient( - widget.clientDetails.clientId, - defaultTier: widget.clientDetails.defaultTier, - maxIdentities: _maxIdentities, - ); + widget.clientDetails.clientId, + defaultTier: widget.clientDetails.defaultTier, + maxIdentities: _maxIdentities, + ); if (!mounted) return; if (response.hasError) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(context.l10n.maxIdentities_error_message), duration: const Duration(seconds: 3)), - ); + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text(context.l10n.maxIdentities_error_message), duration: const Duration(seconds: 3))); setState(() => _saving = false); return; } - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(context.l10n.maxIdentities_success_message), duration: const Duration(seconds: 3)), - ); + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text(context.l10n.maxIdentities_success_message), duration: const Duration(seconds: 3))); widget.onMaxIdentitiesUpdated(); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_tier.dart b/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_tier.dart index 90d93b14ad..c9badd2084 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_tier.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/modals/change_tier.dart @@ -17,22 +17,23 @@ Future showChangeTierDialog({ await showDialog( context: context, - builder: (BuildContext context) => _ShowChangeTierDialog( - onTierUpdated: onTierUpdated, - currentTier: (clientDetails?.defaultTier ?? identityDetails?.tierId)!, - assignTier: ({required String tierId}) { - if (clientDetails != null) { - return GetIt.I.get().clients.updateClient( + builder: + (BuildContext context) => _ShowChangeTierDialog( + onTierUpdated: onTierUpdated, + currentTier: (clientDetails?.defaultTier ?? identityDetails?.tierId)!, + assignTier: ({required String tierId}) { + if (clientDetails != null) { + return GetIt.I.get().clients.updateClient( clientDetails.clientId, defaultTier: tierId, maxIdentities: clientDetails.maxIdentities, ); - } + } - return GetIt.I.get().identities.updateIdentity(identityDetails!.address, tierId: tierId); - }, - availableTiers: availableTiers, - ), + return GetIt.I.get().identities.updateIdentity(identityDetails!.address, tierId: tierId); + }, + availableTiers: availableTiers, + ), ); } @@ -42,12 +43,7 @@ class _ShowChangeTierDialog extends StatefulWidget { final List availableTiers; final String currentTier; - const _ShowChangeTierDialog({ - required this.onTierUpdated, - required this.availableTiers, - required this.assignTier, - required this.currentTier, - }); + const _ShowChangeTierDialog({required this.onTierUpdated, required this.availableTiers, required this.assignTier, required this.currentTier}); @override State<_ShowChangeTierDialog> createState() => _ShowChangeTierDialogState(); @@ -78,17 +74,15 @@ class _ShowChangeTierDialogState extends State<_ShowChangeTierDialog> { value: _selectedTier, decoration: const InputDecoration(border: OutlineInputBorder()), onChanged: _saving ? null : (String? newValue) => setState(() => _selectedTier = newValue!), - items: widget.availableTiers.where((tier) => tier.canBeManuallyAssigned || tier.canBeUsedAsDefaultForClient).map((TierOverview tier) { - return DropdownMenuItem(value: tier.id, child: Text(tier.name)); - }).toList(), + items: + widget.availableTiers.where((tier) => tier.canBeManuallyAssigned || tier.canBeUsedAsDefaultForClient).map((TierOverview tier) { + return DropdownMenuItem(value: tier.id, child: Text(tier.name)); + }).toList(), ), ), actions: [ OutlinedButton(onPressed: _saving ? null : () => Navigator.of(context, rootNavigator: true).pop(), child: Text(context.l10n.cancel)), - FilledButton( - onPressed: _saving || _selectedTier == widget.currentTier ? null : _changeTier, - child: Text(context.l10n.change), - ), + FilledButton(onPressed: _saving || _selectedTier == widget.currentTier ? null : _changeTier, child: Text(context.l10n.change)), ], ), ); @@ -102,18 +96,14 @@ class _ShowChangeTierDialogState extends State<_ShowChangeTierDialog> { if (!mounted) return; if (response.hasError) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(context.l10n.changeTierDialog_error), duration: const Duration(seconds: 3)), - ); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(context.l10n.changeTierDialog_error), duration: const Duration(seconds: 3))); setState(() => _saving = false); return; } - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text(context.l10n.changeTierDialog_success), duration: const Duration(seconds: 3)), - ); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(context.l10n.changeTierDialog_success), duration: const Duration(seconds: 3))); widget.onTierUpdated(); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/modals/confirmation_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/core/modals/confirmation_dialog.dart index a3b463f795..10f9fff99a 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/modals/confirmation_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/modals/confirmation_dialog.dart @@ -11,12 +11,8 @@ Future showConfirmationDialog({ }) async { final result = await showDialog( context: context, - builder: (BuildContext context) => _ConfirmationDialog( - title: title, - message: message, - actionText: actionText, - cancelActionText: cancelActionText, - ), + builder: + (BuildContext context) => _ConfirmationDialog(title: title, message: message, actionText: actionText, cancelActionText: cancelActionText), ); return result ?? false; @@ -28,12 +24,7 @@ class _ConfirmationDialog extends StatelessWidget { final String actionText; final String? cancelActionText; - const _ConfirmationDialog({ - required this.title, - required this.message, - required this.actionText, - this.cancelActionText, - }); + const _ConfirmationDialog({required this.title, required this.message, required this.actionText, this.cancelActionText}); @override Widget build(BuildContext context) { @@ -43,14 +34,8 @@ class _ConfirmationDialog extends StatelessWidget { contentPadding: const EdgeInsets.only(left: 24, right: 24, top: 20, bottom: 32), content: Text(message), actions: [ - OutlinedButton( - onPressed: () => Navigator.of(context).pop(false), - child: Text(cancelActionText ?? context.l10n.cancel), - ), - FilledButton( - onPressed: () => Navigator.of(context).pop(true), - child: Text(actionText), - ), + OutlinedButton(onPressed: () => Navigator.of(context).pop(false), child: Text(cancelActionText ?? context.l10n.cancel)), + FilledButton(onPressed: () => Navigator.of(context).pop(true), child: Text(actionText)), ], ); } diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/models/theme_mode_model.dart b/Applications/AdminUi/apps/admin_ui/lib/core/models/theme_mode_model.dart index 4b7dd3e17a..6af90cde31 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/models/theme_mode_model.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/models/theme_mode_model.dart @@ -9,10 +9,7 @@ class ThemeModeModel { final ValueNotifier themeMode; - ThemeModeModel._( - this._sharedPreferences, { - required ThemeMode initialThemeMode, - }) : themeMode = ValueNotifier(initialThemeMode); + ThemeModeModel._(this._sharedPreferences, {required ThemeMode initialThemeMode}) : themeMode = ValueNotifier(initialThemeMode); static Future create() async { final sharedPreferences = await SharedPreferences.getInstance(); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/theme/color_schemes.dart b/Applications/AdminUi/apps/admin_ui/lib/core/theme/color_schemes.dart index 8af6f73d3c..693f29f3f5 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/theme/color_schemes.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/theme/color_schemes.dart @@ -33,8 +33,4 @@ final darkColorScheme = SeedColorScheme.fromSeeds( tones: FlexTones.material(Brightness.dark), ); -final cardThemeDark = CardTheme( - color: darkColorScheme.surface, - shadowColor: darkColorScheme.shadow, - surfaceTintColor: darkColorScheme.surfaceTint, -); +final cardThemeDark = CardTheme(color: darkColorScheme.surface, shadowColor: darkColorScheme.shadow, surfaceTintColor: darkColorScheme.surfaceTint); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/theme/custom_colors.dart b/Applications/AdminUi/apps/admin_ui/lib/core/theme/custom_colors.dart index c128fbc99f..ea93d9eb30 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/theme/custom_colors.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/theme/custom_colors.dart @@ -30,12 +30,7 @@ class CustomColors extends ThemeExtension { required this.onDecorative2Container, }); - factory CustomColors.light( - Color successSeedColor, - Color warningSeedColor, - Color decorativeSeedColor, - Color decorative2SeedColor, - ) { + factory CustomColors.light(Color successSeedColor, Color warningSeedColor, Color decorativeSeedColor, Color decorative2SeedColor) { final colorScheme = SeedColorScheme.fromSeeds( primaryKey: successSeedColor, primary: successSeedColor, @@ -51,12 +46,7 @@ class CustomColors extends ThemeExtension { return CustomColors._fromColorScheme(colorScheme); } - factory CustomColors.dark( - Color successSeedColor, - Color warningSeedColor, - Color decorativeSeedColor, - Color decorative2SeedColor, - ) { + factory CustomColors.dark(Color successSeedColor, Color warningSeedColor, Color decorativeSeedColor, Color decorative2SeedColor) { final colorScheme = SeedColorScheme.fromSeeds( brightness: Brightness.dark, primaryKey: successSeedColor, diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/copy_to_clipboard_button.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/copy_to_clipboard_button.dart index 21d8085d8b..188f1e3e15 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/copy_to_clipboard_button.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/copy_to_clipboard_button.dart @@ -9,13 +9,7 @@ class CopyToClipboardButton extends StatelessWidget { final ButtonStyle? style; final String? tooltip; - const CopyToClipboardButton({ - required this.clipboardText, - required this.successMessage, - this.style, - this.tooltip, - super.key, - }); + const CopyToClipboardButton({required this.clipboardText, required this.successMessage, this.style, this.tooltip, super.key}); @override Widget build(BuildContext context) { @@ -23,10 +17,7 @@ class CopyToClipboardButton extends StatelessWidget { icon: const Icon(Icons.copy), style: style, tooltip: tooltip, - onPressed: () => context.setClipboardDataWithSuccessNotification( - clipboardText: clipboardText, - successMessage: successMessage, - ), + onPressed: () => context.setClipboardDataWithSuccessNotification(clipboardText: clipboardText, successMessage: successMessage), ); } } diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/deletion_process_audit_logs_table.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/deletion_process_audit_logs_table.dart index fac5a1895a..ec0914b52f 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/deletion_process_audit_logs_table.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/deletion_process_audit_logs_table.dart @@ -8,10 +8,7 @@ import '/core/core.dart'; class DeletionProcessAuditLogsTable extends StatefulWidget { final List auditLogs; - const DeletionProcessAuditLogsTable({ - required this.auditLogs, - super.key, - }); + const DeletionProcessAuditLogsTable({required this.auditLogs, super.key}); @override State createState() => _DeletionProcessAuditLogsTableState(); @@ -32,25 +29,22 @@ class _DeletionProcessAuditLogsTableState extends State context.setClipboardDataWithSuccessNotification( - clipboardText: value, - successMessage: context.l10n.copyToClipboard_success(title), - ), + onIconPressed: + () => context.setClipboardDataWithSuccessNotification(clipboardText: value, successMessage: context.l10n.copyToClipboard_success(title)), ellipsize: ellipsize, ); } @@ -38,15 +31,7 @@ class EntityDetails extends StatelessWidget { final String? tooltipMessage; final int? ellipsize; - const EntityDetails({ - required this.title, - required this.value, - this.onIconPressed, - this.icon, - this.tooltipMessage, - this.ellipsize, - super.key, - }); + const EntityDetails({required this.title, required this.value, this.onIconPressed, this.icon, this.tooltipMessage, this.ellipsize, super.key}); @override Widget build(BuildContext context) { @@ -59,14 +44,8 @@ class EntityDetails extends StatelessWidget { label: Text.rich( TextSpan( children: [ - TextSpan( - text: '$title ', - style: Theme.of(context).textTheme.bodyLarge!.copyWith(fontWeight: FontWeight.bold), - ), - TextSpan( - text: ellipsize != null ? value.ellipsize(ellipsize!) : value, - style: Theme.of(context).textTheme.bodyLarge, - ), + TextSpan(text: '$title ', style: Theme.of(context).textTheme.bodyLarge!.copyWith(fontWeight: FontWeight.bold)), + TextSpan(text: ellipsize != null ? value.ellipsize(ellipsize!) : value, style: Theme.of(context).textTheme.bodyLarge), ], ), ), diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/input_filter.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/input_filter.dart index 581e6fcafb..f73dbe7d8d 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/input_filter.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/input_filter.dart @@ -15,13 +15,7 @@ class InputField extends StatelessWidget { children: [ Text('$label:', style: const TextStyle(fontWeight: FontWeight.bold)), Gaps.h8, - SizedBox( - width: 180, - child: TextField( - onChanged: onEnteredText, - decoration: const InputDecoration(border: OutlineInputBorder()), - ), - ), + SizedBox(width: 180, child: TextField(onChanged: onEnteredText, decoration: const InputDecoration(border: OutlineInputBorder()))), ], ); } diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/multi_select.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/multi_select.dart index 607fcc4610..8840a1c2bb 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/multi_select.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/multi_select.dart @@ -10,12 +10,7 @@ class MultiSelectFilter extends StatefulWidget { final List options; final void Function(List selectedOptions) onOptionSelected; - const MultiSelectFilter({ - required this.label, - required this.options, - required this.onOptionSelected, - super.key, - }); + const MultiSelectFilter({required this.label, required this.options, required this.onOptionSelected, super.key}); @override State createState() => _MultiSelectFilterState(); @@ -35,60 +30,56 @@ class _MultiSelectFilterState extends State { width: 250, child: DropdownButtonFormField2( isExpanded: true, - items: widget.options - .map( - (item) => DropdownMenuItem( - value: item.value, - //disable default onTap to avoid closing menu when selecting an item - enabled: false, - child: StatefulBuilder( - builder: (context, menuSetState) { - final isSelected = selectedItems.contains(item.value); - return InkWell( - onTap: () { - isSelected ? selectedItems.remove(item.value) : selectedItems.add(item.value); - //This rebuilds the StatefulWidget to update the button's text - setState(() {}); - //This rebuilds the dropdownMenu Widget to update the check mark - menuSetState(() {}); + items: + widget.options + .map( + (item) => DropdownMenuItem( + value: item.value, + //disable default onTap to avoid closing menu when selecting an item + enabled: false, + child: StatefulBuilder( + builder: (context, menuSetState) { + final isSelected = selectedItems.contains(item.value); + return InkWell( + onTap: () { + isSelected ? selectedItems.remove(item.value) : selectedItems.add(item.value); + //This rebuilds the StatefulWidget to update the button's text + setState(() {}); + //This rebuilds the dropdownMenu Widget to update the check mark + menuSetState(() {}); - widget.onOptionSelected(selectedItems); - }, - child: Container( - height: double.infinity, - padding: const EdgeInsets.symmetric(horizontal: 16), - child: Row( - children: [ - if (isSelected) const Icon(Icons.check_box_outlined) else const Icon(Icons.check_box_outline_blank), - const SizedBox(width: 16), - Expanded( - child: Text( - item.label, - style: const TextStyle( - fontSize: 14, - ), - ), + widget.onOptionSelected(selectedItems); + }, + child: Container( + height: double.infinity, + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Row( + children: [ + if (isSelected) const Icon(Icons.check_box_outlined) else const Icon(Icons.check_box_outline_blank), + const SizedBox(width: 16), + Expanded(child: Text(item.label, style: const TextStyle(fontSize: 14))), + ], ), - ], - ), - ), - ); - }, - ), - ), - ) - .toList(), + ), + ); + }, + ), + ), + ) + .toList(), value: selectedItems.isEmpty ? null : selectedItems.last, onChanged: (value) {}, - selectedItemBuilder: (context) => widget.options - .map( - (_) => Text( - widget.options.where((item) => selectedItems.contains(item.value)).map((item) => item.label).join(', '), - maxLines: 1, - overflow: TextOverflow.ellipsis, - ), - ) - .toList(), + selectedItemBuilder: + (context) => + widget.options + .map( + (_) => Text( + widget.options.where((item) => selectedItems.contains(item.value)).map((item) => item.label).join(', '), + maxLines: 1, + overflow: TextOverflow.ellipsis, + ), + ) + .toList(), buttonStyleData: const ButtonStyleData(padding: EdgeInsets.zero), menuItemStyleData: const MenuItemStyleData(padding: EdgeInsets.zero), decoration: const InputDecoration(border: OutlineInputBorder()), diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/number_filter.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/number_filter.dart index 82293f9a29..184ffe1ca6 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/number_filter.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/number_filter.dart @@ -9,11 +9,7 @@ class NumberFilter extends StatefulWidget { final void Function(FilterOperator operator, String enteredValue) onNumberSelected; final String label; - const NumberFilter({ - required this.onNumberSelected, - required this.label, - super.key, - }); + const NumberFilter({required this.onNumberSelected, required this.label, super.key}); @override State createState() => _NumberFilterState(); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/to_filter_operator_dropdown_menu_item.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/to_filter_operator_dropdown_menu_item.dart index ee08037f49..4c5b98bc51 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/to_filter_operator_dropdown_menu_item.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/filters/to_filter_operator_dropdown_menu_item.dart @@ -2,10 +2,6 @@ import 'package:admin_api_sdk/admin_api_sdk.dart'; import 'package:flutter/material.dart'; extension ToFilterOperatorDropdownMenuItem on List { - List> toDropdownMenuItems() => map( - (operator) => DropdownMenuItem( - value: operator, - child: Text(operator.userFriendlyOperator), - ), - ).toList(); + List> toDropdownMenuItems() => + map((operator) => DropdownMenuItem(value: operator, child: Text(operator.userFriendlyOperator))).toList(); } diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table.dart index 210dc703c5..b3e3c1899a 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table.dart @@ -13,12 +13,7 @@ class IdentitiesDataTable extends StatefulWidget { final bool hideClientColumn; final bool hideTierColumn; - const IdentitiesDataTable({ - required this.dataSource, - this.hideTierColumn = false, - this.hideClientColumn = false, - super.key, - }); + const IdentitiesDataTable({required this.dataSource, this.hideTierColumn = false, this.hideClientColumn = false, super.key}); @override State createState() => _IdentitiesDataTableState(); @@ -45,16 +40,17 @@ class _IdentitiesDataTableState extends State { availableRowsPerPage: const [5, 10, 25, 50, 100], wrapInCard: false, empty: Text(context.l10n.identitiesDataTable_noIdentitiesFound), - errorBuilder: (error) => Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(context.l10n.identitiesDataTable_failedToLoadData), - Gaps.h16, - FilledButton(onPressed: widget.dataSource.refreshDatasource, child: Text(context.l10n.retry)), - ], - ), - ), + errorBuilder: + (error) => Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(context.l10n.identitiesDataTable_failedToLoadData), + Gaps.h16, + FilledButton(onPressed: widget.dataSource.refreshDatasource, child: Text(context.l10n.retry)), + ], + ), + ), columns: [ DataColumn2(label: Text(context.l10n.address), size: ColumnSize.L, onSort: _sort), if (!widget.hideTierColumn) DataColumn2(label: Text(context.l10n.tier), size: ColumnSize.S), diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table_source.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table_source.dart index 577d3f5adb..7765354a44 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table_source.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_data_table_source.dart @@ -48,45 +48,46 @@ class IdentityDataTableSource extends AsyncDataTableSource { final orderBy = _getODataOrderBy(); try { final response = await GetIt.I.get().identities.getIdentities( - pageNumber: pageNumber, - pageSize: count, - filter: _filter, - orderBy: orderBy, - ); + pageNumber: pageNumber, + pageSize: count, + filter: _filter, + orderBy: orderBy, + ); _pagination = response.pagination; - final rows = response.data.indexed - .map( - (identity) => DataRow2.byIndex( - index: pageNumber * count + identity.$1, - onTap: () => navigateToIdentity(address: identity.$2.address), - cells: [ - DataCell(Text(identity.$2.address)), - if (!hideTierColumn) DataCell(Text(identity.$2.tier.name)), - if (!hideClientColumn) DataCell(Text(identity.$2.createdWithClient)), - DataCell(Text(identity.$2.numberOfDevices.toString())), - DataCell( - Tooltip( - message: '${DateFormat.yMd(locale.languageCode).format(identity.$2.createdAt)} ${DateFormat.Hms().format(identity.$2.createdAt)}', - child: Text(DateFormat.yMd(locale.languageCode).format(identity.$2.createdAt)), - ), - ), - DataCell( - Tooltip( - message: identity.$2.lastLoginAt != null - ? '${DateFormat.yMd(locale.languageCode).format(identity.$2.lastLoginAt!)} ${DateFormat.Hms().format(identity.$2.lastLoginAt!)}' - : '', - child: Text( - identity.$2.lastLoginAt != null ? DateFormat.yMd(locale.languageCode).format(identity.$2.lastLoginAt!) : '', + final rows = + response.data.indexed + .map( + (identity) => DataRow2.byIndex( + index: pageNumber * count + identity.$1, + onTap: () => navigateToIdentity(address: identity.$2.address), + cells: [ + DataCell(Text(identity.$2.address)), + if (!hideTierColumn) DataCell(Text(identity.$2.tier.name)), + if (!hideClientColumn) DataCell(Text(identity.$2.createdWithClient)), + DataCell(Text(identity.$2.numberOfDevices.toString())), + DataCell( + Tooltip( + message: + '${DateFormat.yMd(locale.languageCode).format(identity.$2.createdAt)} ${DateFormat.Hms().format(identity.$2.createdAt)}', + child: Text(DateFormat.yMd(locale.languageCode).format(identity.$2.createdAt)), + ), + ), + DataCell( + Tooltip( + message: + identity.$2.lastLoginAt != null + ? '${DateFormat.yMd(locale.languageCode).format(identity.$2.lastLoginAt!)} ${DateFormat.Hms().format(identity.$2.lastLoginAt!)}' + : '', + child: Text(identity.$2.lastLoginAt != null ? DateFormat.yMd(locale.languageCode).format(identity.$2.lastLoginAt!) : ''), + ), ), - ), + DataCell(Text(identity.$2.datawalletVersion?.toString() ?? '')), + DataCell(Text(identity.$2.identityVersion.toString())), + ], ), - DataCell(Text(identity.$2.datawalletVersion?.toString() ?? '')), - DataCell(Text(identity.$2.identityVersion.toString())), - ], - ), - ) - .toList(); + ) + .toList(); return AsyncRowsResponse(response.pagination.totalRecords, rows); } catch (e) { @@ -102,13 +103,13 @@ class IdentityDataTableSource extends AsyncDataTableSource { } String _getFieldNameByIndex(int index) => switch (index) { - 0 => 'address', - 2 => 'createdWithClient', - 3 => 'numberOfDevices', - 4 => 'createdAt', - 5 => 'lastLoginAt', - 6 => 'datawalletVersion', - 7 => 'identityVersion', - _ => throw Exception('Invalid column index') - }; + 0 => 'address', + 2 => 'createdWithClient', + 3 => 'numberOfDevices', + 4 => 'createdAt', + 5 => 'lastLoginAt', + 6 => 'datawalletVersion', + 7 => 'identityVersion', + _ => throw Exception('Invalid column index'), + }; } diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_filter.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_filter.dart index 08e2fd9663..e12e607a72 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_filter.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_data_table/identities_filter.dart @@ -12,12 +12,7 @@ class IdentitiesFilter extends StatefulWidget { final String? fixedTierId; final String? fixedClientId; - const IdentitiesFilter({ - required this.onFilterChanged, - this.fixedTierId, - this.fixedClientId, - super.key, - }); + const IdentitiesFilter({required this.onFilterChanged, this.fixedTierId, this.fixedClientId, super.key}); @override State createState() => _IdentitiesFilterState(); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_table.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_table.dart index 0102cdefec..ff0f09cb1b 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_table.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/identities_table.dart @@ -10,8 +10,8 @@ class IdentitiesTable extends StatefulWidget { final TierDetails? tierDetails; const IdentitiesTable({this.clientDetails, this.tierDetails, super.key}) - : assert(clientDetails != null || tierDetails != null, 'Either client details or tier details must be provided'), - assert(clientDetails == null || tierDetails == null, 'Only one of client details or tier details can be provided'); + : assert(clientDetails != null || tierDetails != null, 'Either client details or tier details must be provided'), + assert(clientDetails == null || tierDetails == null, 'Only one of client details or tier details can be provided'); @override State createState() => _IdentitiesTableState(); diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/quotas_button_group.dart b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/quotas_button_group.dart index 49ada8e897..35e4195c58 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/widgets/quotas_button_group.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/widgets/quotas_button_group.dart @@ -12,14 +12,9 @@ class QuotasButtonGroup extends StatefulWidget { final String? identityAddress; final String? tierId; - const QuotasButtonGroup({ - required this.selectedQuotas, - required this.onQuotasChanged, - this.identityAddress, - this.tierId, - super.key, - }) : assert(identityAddress != null || tierId != null, 'Either identityAddress or tierId must be provided'), - assert(identityAddress == null || tierId == null, 'Only one of identityAddress or tierId can be provided'); + const QuotasButtonGroup({required this.selectedQuotas, required this.onQuotasChanged, this.identityAddress, this.tierId, super.key}) + : assert(identityAddress != null || tierId != null, 'Either identityAddress or tierId must be provided'), + assert(identityAddress == null || tierId == null, 'Only one of identityAddress or tierId can be provided'); @override State createState() => _QuotasButtonGroupState(); @@ -34,10 +29,7 @@ class _QuotasButtonGroupState extends State { mainAxisAlignment: MainAxisAlignment.end, children: [ IconButton( - icon: Icon( - Icons.delete, - color: widget.selectedQuotas.isNotEmpty ? Theme.of(context).colorScheme.onError : null, - ), + icon: Icon(Icons.delete, color: widget.selectedQuotas.isNotEmpty ? Theme.of(context).colorScheme.onError : null), style: ButtonStyle( backgroundColor: WidgetStateProperty.resolveWith((states) { return widget.selectedQuotas.isNotEmpty ? Theme.of(context).colorScheme.error : null; @@ -48,12 +40,13 @@ class _QuotasButtonGroupState extends State { Gaps.w8, IconButton.filled( icon: const Icon(Icons.add), - onPressed: () => showAddQuotaDialog( - context: context, - identityAddress: widget.identityAddress, - tierId: widget.tierId, - onQuotaAdded: widget.onQuotasChanged, - ), + onPressed: + () => showAddQuotaDialog( + context: context, + identityAddress: widget.identityAddress, + tierId: widget.tierId, + onQuotaAdded: widget.onQuotasChanged, + ), ), ], ), @@ -74,12 +67,7 @@ class _QuotasButtonGroupState extends State { for (final quota in widget.selectedQuotas) { final result = await _deleteQuota(quota); if (result.hasError && mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(context.l10n.quotaButtonGroup_errorDeletingQuota), - showCloseIcon: true, - ), - ); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(context.l10n.quotaButtonGroup_errorDeletingQuota), showCloseIcon: true)); return; } @@ -88,12 +76,7 @@ class _QuotasButtonGroupState extends State { widget.onQuotasChanged(); widget.selectedQuotas.clear(); if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(context.l10n.quotaButtonGroup_selectedQuotaRemoved), - showCloseIcon: true, - ), - ); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(context.l10n.quotaButtonGroup_selectedQuotaRemoved), showCloseIcon: true)); } } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/client_details/client_details.dart b/Applications/AdminUi/apps/admin_ui/lib/home/client_details/client_details.dart index a10c1b02b3..7fa73cbbd4 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/client_details/client_details.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/client_details/client_details.dart @@ -66,12 +66,7 @@ class _ClientDetailsState extends State { ), ], ), - _ClientDetailsCard( - clientDetails: clientDetails, - selectedTier: _selectedTier, - availableTiers: _tiers!, - updateClient: _reloadClient, - ), + _ClientDetailsCard(clientDetails: clientDetails, selectedTier: _selectedTier, availableTiers: _tiers!, updateClient: _reloadClient), Gaps.h16, IdentitiesTable(clientDetails: clientDetails), ], @@ -105,12 +100,7 @@ class _ClientDetailsCard extends StatelessWidget { final List availableTiers; final VoidCallback updateClient; - const _ClientDetailsCard({ - required this.clientDetails, - required this.availableTiers, - required this.updateClient, - this.selectedTier, - }); + const _ClientDetailsCard({required this.clientDetails, required this.availableTiers, required this.updateClient, this.selectedTier}); @override Widget build(BuildContext context) { @@ -134,11 +124,8 @@ class _ClientDetailsCard extends StatelessWidget { EntityDetails( title: context.l10n.maxIdentities, value: '${clientDetails.maxIdentities ?? context.l10n.noLimit}', - onIconPressed: () => showChangeMaxIdentitiesDialog( - context: context, - clientDetails: clientDetails, - onMaxIdentitiesUpdated: updateClient, - ), + onIconPressed: + () => showChangeMaxIdentitiesDialog(context: context, clientDetails: clientDetails, onMaxIdentitiesUpdated: updateClient), icon: Icons.edit, tooltipMessage: context.l10n.clientDetails_maxIdentities_tooltip, ), @@ -150,14 +137,15 @@ class _ClientDetailsCard extends StatelessWidget { EntityDetails( title: context.l10n.clientDetails_card_defaultTier, value: currentTier.name, - onIconPressed: currentTier.canBeManuallyAssigned || currentTier.canBeUsedAsDefaultForClient - ? () => showChangeTierDialog( + onIconPressed: + currentTier.canBeManuallyAssigned || currentTier.canBeUsedAsDefaultForClient + ? () => showChangeTierDialog( context: context, onTierUpdated: updateClient, clientDetails: clientDetails, availableTiers: availableTiers, ) - : null, + : null, icon: Icons.edit, tooltipMessage: context.l10n.changeTier, ), diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_filter.dart b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_filter.dart index de558f8367..4c73bc043d 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_filter.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_filter.dart @@ -12,13 +12,7 @@ class ClientsFilter { final (FilterOperator, DateTime)? createdAt; final (FilterOperator, int)? numberOfIdentities; - const ClientsFilter({ - this.clientId, - this.displayName, - this.tiers, - this.createdAt, - this.numberOfIdentities, - }); + const ClientsFilter({this.clientId, this.displayName, this.tiers, this.createdAt, this.numberOfIdentities}); static const empty = ClientsFilter(); @@ -83,10 +77,7 @@ class ClientsFilter { class ClientsFilterRow extends StatefulWidget { final void Function(ClientsFilter filter) onFilterChanged; - const ClientsFilterRow({ - required this.onFilterChanged, - super.key, - }); + const ClientsFilterRow({required this.onFilterChanged, super.key}); @override State createState() => _ClientsFilterRowState(); @@ -154,9 +145,7 @@ class _ClientsFilterRowState extends State { DateFilter( label: context.l10n.createdAt, onFilterSelected: (FilterOperator operator, DateTime? selectedDate) { - filter = filter.copyWith( - createdAt: selectedDate == null ? const Optional.absent() : Optional((operator, selectedDate)), - ); + filter = filter.copyWith(createdAt: selectedDate == null ? const Optional.absent() : Optional((operator, selectedDate))); widget.onFilterChanged(filter); }, diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_overview.dart b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_overview.dart index ffa1d18454..bab0711489 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_overview.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/clients_overview.dart @@ -57,10 +57,7 @@ class _ClientsOverviewState extends State { tooltip: context.l10n.reload, ), IconButton( - icon: Icon( - Icons.delete, - color: _selectedClients.isNotEmpty ? Theme.of(context).colorScheme.onError : null, - ), + icon: Icon(Icons.delete, color: _selectedClients.isNotEmpty ? Theme.of(context).colorScheme.onError : null), style: ButtonStyle( backgroundColor: WidgetStateProperty.resolveWith((states) { return _selectedClients.isNotEmpty ? Theme.of(context).colorScheme.error : null; @@ -98,49 +95,50 @@ class _ClientsOverviewState extends State { DataColumn2(label: Text(context.l10n.createdAt)), const DataColumn2(label: Text(''), size: ColumnSize.L), ], - rows: _originalClients - .where((e) => _filter.matches(e)) - .map( - (client) => DataRow2( - onTap: () => context.go('/clients/${client.clientId}'), - selected: _selectedClients.contains(client.clientId), - onSelectChanged: (selected) { - if (selected == null) return; - - setState(() { - if (selected) { - _selectedClients.add(client.clientId); - } else { - _selectedClients.remove(client.clientId); - } - }); - }, - cells: [ - DataCell(Text(client.clientId)), - DataCell(Text(client.displayName)), - DataCell(Text(client.defaultTier.name)), - DataCell(Text('${client.numberOfIdentities}')), - DataCell( - Tooltip( - message: - '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(client.createdAt)} ${DateFormat.Hms().format(client.createdAt)}', - child: Text(DateFormat.yMd(Localizations.localeOf(context).languageCode).format(client.createdAt)), - ), - ), - DataCell( - FilledButton( - onPressed: () => showChangeClientSecretDialog(context: context, clientId: client.clientId), - child: Text( - context.l10n.changeClientSecret, - style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), - textAlign: TextAlign.center, + rows: + _originalClients + .where((e) => _filter.matches(e)) + .map( + (client) => DataRow2( + onTap: () => context.go('/clients/${client.clientId}'), + selected: _selectedClients.contains(client.clientId), + onSelectChanged: (selected) { + if (selected == null) return; + + setState(() { + if (selected) { + _selectedClients.add(client.clientId); + } else { + _selectedClients.remove(client.clientId); + } + }); + }, + cells: [ + DataCell(Text(client.clientId)), + DataCell(Text(client.displayName)), + DataCell(Text(client.defaultTier.name)), + DataCell(Text('${client.numberOfIdentities}')), + DataCell( + Tooltip( + message: + '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(client.createdAt)} ${DateFormat.Hms().format(client.createdAt)}', + child: Text(DateFormat.yMd(Localizations.localeOf(context).languageCode).format(client.createdAt)), + ), + ), + DataCell( + FilledButton( + onPressed: () => showChangeClientSecretDialog(context: context, clientId: client.clientId), + child: Text( + context.l10n.changeClientSecret, + style: TextStyle(color: Theme.of(context).colorScheme.onPrimary), + textAlign: TextAlign.center, + ), + ), ), - ), + ], ), - ], - ), - ) - .toList(), + ) + .toList(), ), ), ], @@ -173,12 +171,9 @@ class _ClientsOverviewState extends State { for (final clientId in _selectedClients) { final result = await GetIt.I.get().clients.deleteClient(clientId); if (result.hasError && mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(context.l10n.clientsOverview_removeSelectedClients_error), - showCloseIcon: true, - ), - ); + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text(context.l10n.clientsOverview_removeSelectedClients_error), showCloseIcon: true)); return; } @@ -188,12 +183,9 @@ class _ClientsOverviewState extends State { _selectedClients.clear(); if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - content: Text(context.l10n.clientsOverview_removeSelectedClients_success), - showCloseIcon: true, - ), - ); + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text(context.l10n.clientsOverview_removeSelectedClients_success), showCloseIcon: true)); } } } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/change_client_secret_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/change_client_secret_dialog.dart index 9304a1f89d..adf27d0353 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/change_client_secret_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/change_client_secret_dialog.dart @@ -5,14 +5,8 @@ import 'package:go_router/go_router.dart'; import '/core/core.dart'; -Future showChangeClientSecretDialog({ - required BuildContext context, - required String clientId, -}) async { - await showDialog( - context: context, - builder: (BuildContext context) => _ChangeClientSecretDialog(clientId: clientId), - ); +Future showChangeClientSecretDialog({required BuildContext context, required String clientId}) async { + await showDialog(context: context, builder: (BuildContext context) => _ChangeClientSecretDialog(clientId: clientId)); } class _ChangeClientSecretDialog extends StatefulWidget { @@ -95,18 +89,12 @@ class _ChangeClientSecretDialogState extends State<_ChangeClientSecretDialog> { if (_saveSucceeded) Padding( padding: const EdgeInsets.symmetric(vertical: 8), - child: Text( - context.l10n.clientSecret_save_message, - style: TextStyle(color: Theme.of(context).colorScheme.primary), - ), + child: Text(context.l10n.clientSecret_save_message, style: TextStyle(color: Theme.of(context).colorScheme.primary)), ), if (_errorMessage != null) Padding( padding: const EdgeInsets.symmetric(vertical: 8), - child: Text( - _errorMessage!, - style: TextStyle(color: Theme.of(context).colorScheme.error), - ), + child: Text(_errorMessage!, style: TextStyle(color: Theme.of(context).colorScheme.error)), ), ], ), diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/create_client_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/create_client_dialog.dart index ee78448379..1b469cef2b 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/create_client_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/clients_overview/modals/create_client_dialog.dart @@ -111,10 +111,7 @@ class _CreateClientDialogState extends State<_CreateClientDialog> { ), if (_saveSucceeded) ...[ Gaps.h16, - Text( - context.l10n.clientSecret_save_message, - style: TextStyle(color: Theme.of(context).colorScheme.primary), - ), + Text(context.l10n.clientSecret_save_message, style: TextStyle(color: Theme.of(context).colorScheme.primary)), ], Gaps.h24, TextField( @@ -133,7 +130,8 @@ class _CreateClientDialogState extends State<_CreateClientDialog> { decoration: InputDecoration( border: const OutlineInputBorder(), labelText: context.l10n.maxIdentities, - helperText: '${context.l10n.createClientDialog_maxIdentities_message}' + helperText: + '${context.l10n.createClientDialog_maxIdentities_message}' '\n${context.l10n.createClientDialog_maxIdentities_noLimit_message}', ), inputFormatters: [FilteringTextInputFormatter.digitsOnly], @@ -142,23 +140,15 @@ class _CreateClientDialogState extends State<_CreateClientDialog> { Gaps.h24, DropdownButtonFormField( isExpanded: true, - decoration: InputDecoration( - border: const OutlineInputBorder(), - labelText: '${context.l10n.defaultTier}*', - ), + decoration: InputDecoration(border: const OutlineInputBorder(), labelText: '${context.l10n.defaultTier}*'), value: _chosenDefaultTier, onChanged: _saveSucceeded ? null : (tier) => setState(() => _chosenDefaultTier = tier), - items: widget.defaultTiers.map((tier) { - return DropdownMenuItem( - value: tier.id, - child: Text(tier.name), - ); - }).toList(), + items: + widget.defaultTiers.map((tier) { + return DropdownMenuItem(value: tier.id, child: Text(tier.name)); + }).toList(), ), - if (_errorMessage != null) ...[ - Gaps.h16, - Text(_errorMessage!, style: TextStyle(color: Theme.of(context).colorScheme.error)), - ], + if (_errorMessage != null) ...[Gaps.h16, Text(_errorMessage!, style: TextStyle(color: Theme.of(context).colorScheme.error))], ], ), ), @@ -182,12 +172,12 @@ class _CreateClientDialogState extends State<_CreateClientDialog> { final maxNumberOfIdentities = _maxIdentitiesController.text.isNotEmpty ? int.parse(_maxIdentitiesController.text) : null; final response = await GetIt.I.get().clients.createClient( - defaultTier: _chosenDefaultTier!, - clientId: _clientIdController.text.isNotEmpty ? _clientIdController.text : null, - clientSecret: _clientSecretController.text.isNotEmpty ? _clientSecretController.text : null, - displayName: _displayNameController.text.isNotEmpty ? _displayNameController.text : null, - maxIdentities: maxNumberOfIdentities, - ); + defaultTier: _chosenDefaultTier!, + clientId: _clientIdController.text.isNotEmpty ? _clientIdController.text : null, + clientSecret: _clientSecretController.text.isNotEmpty ? _clientSecretController.text : null, + displayName: _displayNameController.text.isNotEmpty ? _displayNameController.text : null, + maxIdentities: maxNumberOfIdentities, + ); setState(() => _saving = false); diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/deletion_process_audit_log_details/deletion_process_audit_log_details.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/deletion_process_audit_log_details/deletion_process_audit_log_details.dart index c41553e158..0cfa3e2422 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/deletion_process_audit_log_details/deletion_process_audit_log_details.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/deletion_process_audit_log_details/deletion_process_audit_log_details.dart @@ -9,10 +9,7 @@ import '/core/core.dart'; class DeletionProcessAuditLogDetails extends StatefulWidget { final String identityAddress; - const DeletionProcessAuditLogDetails({ - required this.identityAddress, - super.key, - }); + const DeletionProcessAuditLogDetails({required this.identityAddress, super.key}); @override State createState() => _DeletionProcessAuditLogDetailsState(); @@ -42,11 +39,7 @@ class _DeletionProcessAuditLogDetailsState extends State _reloadIdentityDeletionProcessAuditLogs() async { - final response = await GetIt.I.get().identities.getIdentityDeletionProcessAuditLogs( - address: widget.identityAddress, - ); + final response = await GetIt.I.get().identities.getIdentityDeletionProcessAuditLogs(address: widget.identityAddress); if (!mounted) return; diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/identities_overview.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/identities_overview.dart index 44081aeff0..248465f251 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/identities_overview.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/identities_overview.dart @@ -54,11 +54,7 @@ class _IdentitiesOverviewState extends State { ..refreshDatasource(); }, ), - IconButton( - icon: const Icon(Icons.refresh), - onPressed: () async => _dataSource.refreshDatasource(), - tooltip: context.l10n.reload, - ), + IconButton(icon: const Icon(Icons.refresh), onPressed: () async => _dataSource.refreshDatasource(), tooltip: context.l10n.reload), Expanded(child: IdentitiesDataTable(dataSource: _dataSource)), ], ), diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/widgets/query_deletion_process_audit_logs.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/widgets/query_deletion_process_audit_logs.dart index 5abb0409db..d59455165c 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/widgets/query_deletion_process_audit_logs.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identities_overview/widgets/query_deletion_process_audit_logs.dart @@ -57,22 +57,20 @@ class _QueryDeletionProcessAuditLogsState extends State { Row( children: [ BackButton(onPressed: () => context.pop(false)), - IconButton( - icon: const Icon(Icons.refresh), - onPressed: _reloadIdentityDeletionProcessAuditLogs, - tooltip: context.l10n.reload, - ), + IconButton(icon: const Icon(Icons.refresh), onPressed: _reloadIdentityDeletionProcessAuditLogs, tooltip: context.l10n.reload), ], ), - _DeletionProcessDetailsCard( - address: widget.address, - deletionProcessDetails: deletionProcessDetails, - ), + _DeletionProcessDetailsCard(address: widget.address, deletionProcessDetails: deletionProcessDetails), Gaps.h16, Expanded(child: DeletionProcessAuditLogsTable(auditLogs: _deletionProcessesDetails!.auditLog)), Gaps.h8, @@ -60,9 +53,10 @@ class _DeletionProcessDetailsState extends State { child: Padding( padding: const EdgeInsets.only(right: 16), child: Tooltip( - message: deletionProcessDetails.status == DeletionProcessStatus.approved - ? '' - : context.l10n.deletionProcessDetails_cancelDeletionProcess_disabledTooltipMessage, + message: + deletionProcessDetails.status == DeletionProcessStatus.approved + ? '' + : context.l10n.deletionProcessDetails_cancelDeletionProcess_disabledTooltipMessage, child: FilledButton( style: FilledButton.styleFrom( backgroundColor: Theme.of(context).colorScheme.error, @@ -90,18 +84,16 @@ class _DeletionProcessDetailsState extends State { if (!confirmed) return; - final result = - await GetIt.I.get().identities.cancelDeletionProcess(address: widget.address, deletionProcessId: widget.deletionProcessId); + final result = await GetIt.I.get().identities.cancelDeletionProcess( + address: widget.address, + deletionProcessId: widget.deletionProcessId, + ); if (result.hasError) { if (mounted) { - ScaffoldMessenger.of(context).showSnackBar( - SnackBar( - backgroundColor: Theme.of(context).colorScheme.error, - content: Text(result.error.message), - showCloseIcon: true, - ), - ); + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(backgroundColor: Theme.of(context).colorScheme.error, content: Text(result.error.message), showCloseIcon: true)); } return; } @@ -121,9 +113,9 @@ class _DeletionProcessDetailsState extends State { Future _reloadIdentityDeletionProcessAuditLogs() async { final deletionProcessesDetails = await GetIt.I.get().identities.getIdentityDeletionProcess( - address: widget.address, - deletionProcessId: widget.deletionProcessId, - ); + address: widget.address, + deletionProcessId: widget.deletionProcessId, + ); if (!mounted) return; @@ -137,10 +129,7 @@ class _DeletionProcessDetailsCard extends StatelessWidget { final String address; final IdentityDeletionProcessDetail deletionProcessDetails; - const _DeletionProcessDetailsCard({ - required this.address, - required this.deletionProcessDetails, - }); + const _DeletionProcessDetailsCard({required this.address, required this.deletionProcessDetails}); @override Widget build(BuildContext context) { diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/deletion_process_table/deletion_process_table.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/deletion_process_table/deletion_process_table.dart index 3eba0cd386..c5029d88de 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/deletion_process_table/deletion_process_table.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/deletion_process_table/deletion_process_table.dart @@ -56,77 +56,73 @@ class _DeletionProcessTableState extends State { DataColumn2(label: Text(context.l10n.deletionProcessTable_gracePeriodReminders), size: ColumnSize.L), DataColumn2(label: Text(context.l10n.deletionProcessTable_gracePeriodEndsAt), size: ColumnSize.S), ], - rows: _deletionProcesses!.map( - (deletionProcess) { - final textColor = Theme.of(context).colorScheme.onSecondaryContainer; - - return DataRow2( - specificRowHeight: 60, - onTap: () async { - final result = await context.push( - '/identities/${widget.address}/deletion-process-details/${deletionProcess.id}', - ); - if (result != true) return; - - await _reloadIdentityDeletionProcesses(); - }, - cells: [ - DataCell(Text(deletionProcess.id, style: TextStyle(color: textColor))), - DataCell( - Text( - switch (deletionProcess.status) { + rows: + _deletionProcesses!.map((deletionProcess) { + final textColor = Theme.of(context).colorScheme.onSecondaryContainer; + + return DataRow2( + specificRowHeight: 60, + onTap: () async { + final result = await context.push( + '/identities/${widget.address}/deletion-process-details/${deletionProcess.id}', + ); + if (result != true) return; + + await _reloadIdentityDeletionProcesses(); + }, + cells: [ + DataCell(Text(deletionProcess.id, style: TextStyle(color: textColor))), + DataCell( + Text(switch (deletionProcess.status) { DeletionProcessStatus.waitingForApproval => context.l10n.deletionProcessDetails_status_waitingForApproval, DeletionProcessStatus.approved => context.l10n.deletionProcessDetails_status_approved, DeletionProcessStatus.cancelled => context.l10n.deletionProcessDetails_status_cancelled, DeletionProcessStatus.rejected => context.l10n.deletionProcessDetails_status_rejected, DeletionProcessStatus.deleting => context.l10n.deletionProcessDetails_status_deleting, - }, - style: TextStyle(color: textColor), + }, style: TextStyle(color: textColor)), ), - ), - DataCell( - Text( - DateFormat.yMd(Localizations.localeOf(context).languageCode).format(deletionProcess.createdAt), - style: TextStyle(color: textColor), + DataCell( + Text( + DateFormat.yMd(Localizations.localeOf(context).languageCode).format(deletionProcess.createdAt), + style: TextStyle(color: textColor), + ), ), - ), - DataCell( - _RemindersCell( - name: context.l10n.deletionProcessTable_approvalRemindersCell_reminder, - noDataText: context.l10n.deletionProcessTable_approvalRemindersCell_noData, - reminders: deletionProcess.approvalReminders, - textColor: textColor, + DataCell( + _RemindersCell( + name: context.l10n.deletionProcessTable_approvalRemindersCell_reminder, + noDataText: context.l10n.deletionProcessTable_approvalRemindersCell_noData, + reminders: deletionProcess.approvalReminders, + textColor: textColor, + ), ), - ), - DataCell( - Text( - deletionProcess.approvedAt != null - ? '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(deletionProcess.approvedAt!)} ' - : '', - style: TextStyle(color: textColor), + DataCell( + Text( + deletionProcess.approvedAt != null + ? '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(deletionProcess.approvedAt!)} ' + : '', + style: TextStyle(color: textColor), + ), ), - ), - DataCell(Text(deletionProcess.approvedByDevice ?? '', style: TextStyle(color: textColor))), - DataCell( - _RemindersCell( - name: context.l10n.deletionProcessTable_gracePeriodRemindersCell_reminder, - noDataText: context.l10n.deletionProcessTable_gracePeriodRemindersCell_noData, - reminders: deletionProcess.gracePeriodReminders, - textColor: textColor, + DataCell(Text(deletionProcess.approvedByDevice ?? '', style: TextStyle(color: textColor))), + DataCell( + _RemindersCell( + name: context.l10n.deletionProcessTable_gracePeriodRemindersCell_reminder, + noDataText: context.l10n.deletionProcessTable_gracePeriodRemindersCell_noData, + reminders: deletionProcess.gracePeriodReminders, + textColor: textColor, + ), ), - ), - DataCell( - Text( - deletionProcess.gracePeriodEndsAt != null - ? DateFormat.yMd(Localizations.localeOf(context).languageCode).format(deletionProcess.gracePeriodEndsAt!) - : '', - style: TextStyle(color: textColor), + DataCell( + Text( + deletionProcess.gracePeriodEndsAt != null + ? DateFormat.yMd(Localizations.localeOf(context).languageCode).format(deletionProcess.gracePeriodEndsAt!) + : '', + style: TextStyle(color: textColor), + ), ), - ), - ], - ); - }, - ).toList(), + ], + ); + }).toList(), ), ), ], @@ -154,12 +150,7 @@ class _RemindersCell extends StatelessWidget { final List reminders; final Color textColor; - const _RemindersCell({ - required this.name, - required this.noDataText, - required this.reminders, - required this.textColor, - }); + const _RemindersCell({required this.name, required this.noDataText, required this.reminders, required this.textColor}); @override Widget build(BuildContext context) { @@ -168,26 +159,27 @@ class _RemindersCell extends StatelessWidget { return Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, - children: reminders.mapIndexed((index, date) { - return Text( - '$name ${index + 1}: ${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(date)} ${DateFormat.Hms().format(date)}', - style: TextStyle(color: textColor), - ); - }).toList(), + children: + reminders.mapIndexed((index, date) { + return Text( + '$name ${index + 1}: ${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(date)} ${DateFormat.Hms().format(date)}', + style: TextStyle(color: textColor), + ); + }).toList(), ); } } extension _Reminders on IdentityDeletionProcess { List get approvalReminders => [ - if (approvalReminder1SentAt != null) approvalReminder1SentAt!, - if (approvalReminder2SentAt != null) approvalReminder2SentAt!, - if (approvalReminder3SentAt != null) approvalReminder3SentAt!, - ]; + if (approvalReminder1SentAt != null) approvalReminder1SentAt!, + if (approvalReminder2SentAt != null) approvalReminder2SentAt!, + if (approvalReminder3SentAt != null) approvalReminder3SentAt!, + ]; List get gracePeriodReminders => [ - if (gracePeriodReminder1SentAt != null) gracePeriodReminder1SentAt!, - if (gracePeriodReminder2SentAt != null) gracePeriodReminder2SentAt!, - if (gracePeriodReminder3SentAt != null) gracePeriodReminder3SentAt!, - ]; + if (gracePeriodReminder1SentAt != null) gracePeriodReminder1SentAt!, + if (gracePeriodReminder2SentAt != null) gracePeriodReminder2SentAt!, + if (gracePeriodReminder3SentAt != null) gracePeriodReminder3SentAt!, + ]; } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_details.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_details.dart index 4280972438..d52760bdad 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_details.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_details.dart @@ -184,14 +184,15 @@ class _IdentityDetailsCard extends StatelessWidget { EntityDetails( title: context.l10n.tier, value: currentTier.name, - onIconPressed: currentTier.canBeManuallyAssigned - ? () => showChangeTierDialog( + onIconPressed: + currentTier.canBeManuallyAssigned + ? () => showChangeTierDialog( context: context, onTierUpdated: updateTierOfIdentity, identityDetails: identityDetails, availableTiers: availableTiers, ) - : null, + : null, icon: Icons.edit, tooltipMessage: context.l10n.changeTier, ), diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_devices/identity_devices.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_devices/identity_devices.dart index 9f794a1c45..e02901af8e 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_devices/identity_devices.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_devices/identity_devices.dart @@ -33,33 +33,32 @@ class IdentityDevices extends StatelessWidget { DataColumn2(label: Text(context.l10n.lastLoginAt)), DataColumn2(label: Text(context.l10n.identityDevices_communicationLanguage)), ], - rows: devices.map( - (device) { - final textColor = Theme.of(context).colorScheme.onSecondaryContainer; + rows: + devices.map((device) { + final textColor = Theme.of(context).colorScheme.onSecondaryContainer; - return DataRow2( - cells: [ - DataCell(Text(device.id, style: TextStyle(color: textColor))), - DataCell(Text(device.username, style: TextStyle(color: textColor))), - DataCell( - Text( - DateFormat.yMd(Localizations.localeOf(context).languageCode).format(device.createdAt), - style: TextStyle(color: textColor), + return DataRow2( + cells: [ + DataCell(Text(device.id, style: TextStyle(color: textColor))), + DataCell(Text(device.username, style: TextStyle(color: textColor))), + DataCell( + Text( + DateFormat.yMd(Localizations.localeOf(context).languageCode).format(device.createdAt), + style: TextStyle(color: textColor), + ), ), - ), - DataCell( - Text( - device.lastLogin != null - ? DateFormat.yMd(Localizations.localeOf(context).languageCode).format(device.lastLogin!.time) - : '-', - style: TextStyle(color: textColor), + DataCell( + Text( + device.lastLogin != null + ? DateFormat.yMd(Localizations.localeOf(context).languageCode).format(device.lastLogin!.time) + : '-', + style: TextStyle(color: textColor), + ), ), - ), - DataCell(Text(device.communicationLanguage, style: TextStyle(color: textColor))), - ], - ); - }, - ).toList(), + DataCell(Text(device.communicationLanguage, style: TextStyle(color: textColor))), + ], + ); + }).toList(), ), ), ], diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages.dart index a7189d856f..7e0d1e934e 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages.dart @@ -31,11 +31,7 @@ class _IdentityMessagesState extends State { void didChangeDependencies() { super.didChangeDependencies(); - _dataSource = IdentityMessagesDataTableSource( - participant: widget.participant, - type: widget.type, - locale: Localizations.localeOf(context), - ); + _dataSource = IdentityMessagesDataTableSource(participant: widget.participant, type: widget.type, locale: Localizations.localeOf(context)); } @override diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_data_table_source.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_data_table_source.dart index 9657b2acc8..70979f94cf 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_data_table_source.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_data_table_source.dart @@ -17,11 +17,7 @@ class IdentityMessagesDataTableSource extends AsyncDataTableSource { final String participant; final MessageType type; - IdentityMessagesDataTableSource({ - required this.participant, - required this.type, - required this.locale, - }); + IdentityMessagesDataTableSource({required this.participant, required this.type, required this.locale}); @override bool get isRowCountApproximate => false; @@ -37,47 +33,47 @@ class IdentityMessagesDataTableSource extends AsyncDataTableSource { final pageNumber = startIndex ~/ count + 1; try { final response = await GetIt.I.get().messages.getMessagesByParticipant( - participant: participant, - type: type, - pageNumber: pageNumber, - pageSize: count, - ); + participant: participant, + type: type, + pageNumber: pageNumber, + pageSize: count, + ); - _pagination = response.isPaged - ? response.pagination - : Pagination( - pageNumber: pageNumber, - pageSize: count, - totalPages: _totalPages(count, response.data), - totalRecords: response.data.length, - ); + _pagination = + response.isPaged + ? response.pagination + : Pagination( + pageNumber: pageNumber, + pageSize: count, + totalPages: _totalPages(count, response.data), + totalRecords: response.data.length, + ); - final rows = response.data.indexed - .map( - (message) => DataRow2.byIndex( - index: pageNumber * count + message.$1, - specificRowHeight: message.$2.recipients.length > 3 && type == MessageType.outgoing - ? 100.0 - : message.$2.recipients.length == 3 && type == MessageType.outgoing - ? 65.0 - : null, - cells: [ - if (type == MessageType.outgoing) DataCell(_RecipientsCell(recipients: message.$2.recipients)), - if (type == MessageType.incoming) ...[ - DataCell(Text(message.$2.senderAddress)), - DataCell(Text(message.$2.senderDevice)), - ], - DataCell(Text(message.$2.numberOfAttachments.toString())), - DataCell( - Tooltip( - message: '${DateFormat.yMd(locale.languageCode).format(message.$2.sendDate)} ${DateFormat.Hms().format(message.$2.sendDate)}', - child: Text(DateFormat.yMd(locale.languageCode).format(message.$2.sendDate)), - ), + final rows = + response.data.indexed + .map( + (message) => DataRow2.byIndex( + index: pageNumber * count + message.$1, + specificRowHeight: + message.$2.recipients.length > 3 && type == MessageType.outgoing + ? 100.0 + : message.$2.recipients.length == 3 && type == MessageType.outgoing + ? 65.0 + : null, + cells: [ + if (type == MessageType.outgoing) DataCell(_RecipientsCell(recipients: message.$2.recipients)), + if (type == MessageType.incoming) ...[DataCell(Text(message.$2.senderAddress)), DataCell(Text(message.$2.senderDevice))], + DataCell(Text(message.$2.numberOfAttachments.toString())), + DataCell( + Tooltip( + message: '${DateFormat.yMd(locale.languageCode).format(message.$2.sendDate)} ${DateFormat.Hms().format(message.$2.sendDate)}', + child: Text(DateFormat.yMd(locale.languageCode).format(message.$2.sendDate)), + ), + ), + ], ), - ], - ), - ) - .toList(); + ) + .toList(); return AsyncRowsResponse(response.isPaged ? response.pagination.totalPages : _pagination!.totalPages, rows); } catch (e) { GetIt.I.get().e('Failed to load data: $e'); @@ -104,16 +100,10 @@ class _RecipientsCell extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ ...displayedRecipients.map( - (recipient) => InkWell( - onTap: () => context.push('/identities/${recipient.address}'), - child: Text(recipient.address), - ), + (recipient) => InkWell(onTap: () => context.push('/identities/${recipient.address}'), child: Text(recipient.address)), ), if (recipients.length > 3) - FilledButton( - onPressed: () => showAllRecipientsDialog(context: context, recipients: recipients), - child: Text(context.l10n.showAll), - ), + FilledButton(onPressed: () => showAllRecipientsDialog(context: context, recipients: recipients), child: Text(context.l10n.showAll)), ], ); } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_table.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_table.dart index b762fa72d8..f2ffac9337 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_table.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/identity_messages_table.dart @@ -52,16 +52,17 @@ class _IdentityMessagesTableState extends State { availableRowsPerPage: const [5, 10, 25, 50, 100], wrapInCard: false, empty: Text(widget.emptyTableMessage), - errorBuilder: (error) => Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(context.l10n.identityMessageTable_errorLoadingData), - Gaps.h16, - FilledButton(onPressed: widget.dataSource.refreshDatasource, child: Text(context.l10n.retry)), - ], - ), - ), + errorBuilder: + (error) => Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(context.l10n.identityMessageTable_errorLoadingData), + Gaps.h16, + FilledButton(onPressed: widget.dataSource.refreshDatasource, child: Text(context.l10n.retry)), + ], + ), + ), columns: [ if (widget.type == MessageType.outgoing) DataColumn2(label: Text(context.l10n.identityMessageTable_recipients), size: ColumnSize.L), if (widget.type == MessageType.incoming) ...[ diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/modals/all_recipients_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/modals/all_recipients_dialog.dart index 8c99ab9ede..62a17cd360 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/modals/all_recipients_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_messages/modals/all_recipients_dialog.dart @@ -4,10 +4,8 @@ import 'package:go_router/go_router.dart'; import '/core/extensions.dart'; -Future showAllRecipientsDialog({required BuildContext context, required List recipients}) => showDialog( - context: context, - builder: (BuildContext context) => _AllRecipientsDialog(recipients: recipients), - ); +Future showAllRecipientsDialog({required BuildContext context, required List recipients}) => + showDialog(context: context, builder: (BuildContext context) => _AllRecipientsDialog(recipients: recipients)); class _AllRecipientsDialog extends StatefulWidget { final List recipients; @@ -28,28 +26,24 @@ class _AllRecipientsDialogState extends State<_AllRecipientsDialog> { padding: const EdgeInsets.all(8), child: Column( mainAxisSize: MainAxisSize.min, - children: widget.recipients - .map( - (recipient) => Padding( - padding: const EdgeInsets.all(4), - child: InkWell( - onTap: () { - context.push('/identities/${recipient.address}'); - Navigator.of(context).pop(); - }, - child: Text(recipient.address), - ), - ), - ) - .toList(), + children: + widget.recipients + .map( + (recipient) => Padding( + padding: const EdgeInsets.all(4), + child: InkWell( + onTap: () { + context.push('/identities/${recipient.address}'); + Navigator.of(context).pop(); + }, + child: Text(recipient.address), + ), + ), + ) + .toList(), ), ), - actions: [ - OutlinedButton( - onPressed: () => Navigator.of(context).pop(), - child: Text(context.l10n.close), - ), - ], + actions: [OutlinedButton(onPressed: () => Navigator.of(context).pop(), child: Text(context.l10n.close))], ); } } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_quotas/identity_quotas.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_quotas/identity_quotas.dart index 5897b650e6..eb180ce0d6 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_quotas/identity_quotas.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_quotas/identity_quotas.dart @@ -45,94 +45,71 @@ class IdentityQuotasState extends State { columns: [ DataColumn2(label: Text(context.l10n.metric)), DataColumn2(label: Text(context.l10n.source), size: ColumnSize.S), - DataColumn2( - label: Text( - '${context.l10n.usage} (${context.l10n.used}/${context.l10n.max})', - ), - size: ColumnSize.L, - ), + DataColumn2(label: Text('${context.l10n.usage} (${context.l10n.used}/${context.l10n.max})'), size: ColumnSize.L), DataColumn2(label: Text(context.l10n.period), size: ColumnSize.S), const DataColumn2(label: Text(''), size: ColumnSize.S), ], empty: Text(context.l10n.identityQuotaTable_noQuotaApplied), - rows: groupedQuotas.entries.expand((entry) { - final metricName = entry.key; - final quotas = entry.value; - - final hasIndividualQuota = quotas.any((quota) => quota.source == context.l10n.identityQuotaTable_individual); - - return [ - DataRow2( - color: WidgetStateProperty.all(Theme.of(context).colorScheme.surfaceBright), - cells: [ - DataCell(Text(metricName)), - const DataCell(Text('')), - const DataCell(Text('')), - const DataCell(Text('')), - const DataCell(Text('')), - ], - ), - ...quotas.map( - (quota) { - final isTierQuota = quota.source == 'Tier'; - final shouldDisable = isTierQuota && hasIndividualQuota; - final tooltipMessage = shouldDisable ? context.l10n.identityQuotaTable_tierQuotaEffectMessage : null; - - return DataRow2( - selected: _selectedQuotas.contains(quota.id), - color: shouldDisable ? WidgetStateProperty.all(Theme.of(context).colorScheme.surfaceBright) : null, - onSelectChanged: shouldDisable || isTierQuota ? null : (_) => _toggleSelection(quota.id), + rows: + groupedQuotas.entries.expand((entry) { + final metricName = entry.key; + final quotas = entry.value; + + final hasIndividualQuota = quotas.any((quota) => quota.source == context.l10n.identityQuotaTable_individual); + + return [ + DataRow2( + color: WidgetStateProperty.all(Theme.of(context).colorScheme.surfaceBright), cells: [ - DataCell(Container()), - DataCell( - Text( - quota.source, - style: TextStyle(color: shouldDisable ? Colors.grey : null), - ), - ), - DataCell( - Row( - children: [ - Text( - '${quota.usage}/${quota.max}', - style: TextStyle(color: shouldDisable ? Colors.grey : null), - ), - const SizedBox(width: 8), - Expanded( - child: LinearProgressIndicator( - value: quota.max > 0 ? quota.usage / quota.max : 0, - backgroundColor: shouldDisable ? Colors.grey : Theme.of(context).colorScheme.inversePrimary, - valueColor: - AlwaysStoppedAnimation(shouldDisable ? Colors.grey : Theme.of(context).colorScheme.primary), - minHeight: 8, + DataCell(Text(metricName)), + const DataCell(Text('')), + const DataCell(Text('')), + const DataCell(Text('')), + const DataCell(Text('')), + ], + ), + ...quotas.map((quota) { + final isTierQuota = quota.source == 'Tier'; + final shouldDisable = isTierQuota && hasIndividualQuota; + final tooltipMessage = shouldDisable ? context.l10n.identityQuotaTable_tierQuotaEffectMessage : null; + + return DataRow2( + selected: _selectedQuotas.contains(quota.id), + color: shouldDisable ? WidgetStateProperty.all(Theme.of(context).colorScheme.surfaceBright) : null, + onSelectChanged: shouldDisable || isTierQuota ? null : (_) => _toggleSelection(quota.id), + cells: [ + DataCell(Container()), + DataCell(Text(quota.source, style: TextStyle(color: shouldDisable ? Colors.grey : null))), + DataCell( + Row( + children: [ + Text('${quota.usage}/${quota.max}', style: TextStyle(color: shouldDisable ? Colors.grey : null)), + const SizedBox(width: 8), + Expanded( + child: LinearProgressIndicator( + value: quota.max > 0 ? quota.usage / quota.max : 0, + backgroundColor: shouldDisable ? Colors.grey : Theme.of(context).colorScheme.inversePrimary, + valueColor: AlwaysStoppedAnimation( + shouldDisable ? Colors.grey : Theme.of(context).colorScheme.primary, + ), + minHeight: 8, + ), ), - ), - ], - ), - ), - DataCell( - Text( - quota.period, - style: TextStyle(color: shouldDisable ? Colors.grey : null), + ], + ), ), - ), - DataCell( - Tooltip( - message: tooltipMessage ?? '', - child: isTierQuota && shouldDisable - ? Icon( - Icons.info, - color: shouldDisable ? Colors.grey : null, - ) - : null, + DataCell(Text(quota.period, style: TextStyle(color: shouldDisable ? Colors.grey : null))), + DataCell( + Tooltip( + message: tooltipMessage ?? '', + child: isTierQuota && shouldDisable ? Icon(Icons.info, color: shouldDisable ? Colors.grey : null) : null, + ), ), - ), - ], - ); - }, - ), - ]; - }).toList(), + ], + ); + }), + ]; + }).toList(), ), ), ], diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_data_table_source.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_data_table_source.dart index ebb4ea5f16..b080e24503 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_data_table_source.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_data_table_source.dart @@ -12,10 +12,7 @@ class IdentityRelationshipDataTableSource extends AsyncDataTableSource { final Locale locale; final String address; - IdentityRelationshipDataTableSource({ - required this.address, - required this.locale, - }); + IdentityRelationshipDataTableSource({required this.address, required this.locale}); @override bool get isRowCountApproximate => false; @@ -31,51 +28,53 @@ class IdentityRelationshipDataTableSource extends AsyncDataTableSource { final pageNumber = startIndex ~/ count + 1; try { final response = await GetIt.I.get().relationships.getRelationshipsByParticipantAddress( - address, - pageNumber: pageNumber, - pageSize: count, - ); + address, + pageNumber: pageNumber, + pageSize: count, + ); - _pagination = response.isPaged - ? response.pagination - : Pagination( - pageNumber: pageNumber, - pageSize: count, - totalPages: _totalPages(count, response.data), - totalRecords: response.data.length, - ); + _pagination = + response.isPaged + ? response.pagination + : Pagination( + pageNumber: pageNumber, + pageSize: count, + totalPages: _totalPages(count, response.data), + totalRecords: response.data.length, + ); - final rows = response.data.indexed - .map( - (relationship) => DataRow2.byIndex( - index: pageNumber * count + relationship.$1, - cells: [ - DataCell(Text(relationship.$2.peer)), - DataCell(Text(relationship.$2.requestedBy)), - DataCell(Text(relationship.$2.templateId)), - DataCell(Text(relationship.$2.status)), - DataCell( - Tooltip( - message: - '${DateFormat.yMd(locale.languageCode).format(relationship.$2.creationDate)} ${DateFormat.Hms().format(relationship.$2.creationDate)}', - child: Text(DateFormat.yMd(locale.languageCode).format(relationship.$2.creationDate)), - ), + final rows = + response.data.indexed + .map( + (relationship) => DataRow2.byIndex( + index: pageNumber * count + relationship.$1, + cells: [ + DataCell(Text(relationship.$2.peer)), + DataCell(Text(relationship.$2.requestedBy)), + DataCell(Text(relationship.$2.templateId)), + DataCell(Text(relationship.$2.status)), + DataCell( + Tooltip( + message: + '${DateFormat.yMd(locale.languageCode).format(relationship.$2.creationDate)} ${DateFormat.Hms().format(relationship.$2.creationDate)}', + child: Text(DateFormat.yMd(locale.languageCode).format(relationship.$2.creationDate)), + ), + ), + DataCell( + relationship.$2.answeredAt == null + ? const Text('-') + : Tooltip( + message: + '${DateFormat.yMd(locale.languageCode).format(relationship.$2.answeredAt!)} ${DateFormat.Hms().format(relationship.$2.answeredAt!)}', + child: Text(DateFormat.yMd(locale.languageCode).format(relationship.$2.answeredAt!)), + ), + ), + DataCell(Text(relationship.$2.createdByDevice)), + DataCell(Text(relationship.$2.answeredByDevice ?? '-')), + ], ), - DataCell( - relationship.$2.answeredAt == null - ? const Text('-') - : Tooltip( - message: - '${DateFormat.yMd(locale.languageCode).format(relationship.$2.answeredAt!)} ${DateFormat.Hms().format(relationship.$2.answeredAt!)}', - child: Text(DateFormat.yMd(locale.languageCode).format(relationship.$2.answeredAt!)), - ), - ), - DataCell(Text(relationship.$2.createdByDevice)), - DataCell(Text(relationship.$2.answeredByDevice ?? '-')), - ], - ), - ) - .toList(); + ) + .toList(); return AsyncRowsResponse(response.isPaged ? response.pagination.totalPages : _pagination!.totalPages, rows); } catch (e) { GetIt.I.get().e('Failed to load data: $e'); diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_table.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_table.dart index 6ca15c3576..ee97c62f90 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_table.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationship_table.dart @@ -8,10 +8,7 @@ import 'identity_relationship_data_table_source.dart'; class IdentityRelationshipTable extends StatefulWidget { final IdentityRelationshipDataTableSource dataSource; - const IdentityRelationshipTable({ - required this.dataSource, - super.key, - }); + const IdentityRelationshipTable({required this.dataSource, super.key}); @override State createState() => _IdentityRelationshipTableState(); @@ -43,16 +40,17 @@ class _IdentityRelationshipTableState extends State { availableRowsPerPage: const [5, 10, 25, 50, 100], wrapInCard: false, empty: Text(context.l10n.identityRelationshipTable_emptyRelationshipTable), - errorBuilder: (error) => Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Text(context.l10n.identityRelationshipTable_errorLoadingData), - Gaps.h16, - FilledButton(onPressed: widget.dataSource.refreshDatasource, child: Text(context.l10n.retry)), - ], - ), - ), + errorBuilder: + (error) => Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text(context.l10n.identityRelationshipTable_errorLoadingData), + Gaps.h16, + FilledButton(onPressed: widget.dataSource.refreshDatasource, child: Text(context.l10n.retry)), + ], + ), + ), columns: [ DataColumn2(label: Text(context.l10n.identityRelationshipTable_peer), size: ColumnSize.L), DataColumn2(label: Text(context.l10n.identityRelationshipTable_requestedBy), size: ColumnSize.S), diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationships.dart b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationships.dart index b6dfd4f455..3088017b7b 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationships.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/identity_details/identity_relationships/identity_relationships.dart @@ -6,10 +6,7 @@ import 'identity_relationship_table.dart'; class IdentityRelationships extends StatefulWidget { final String address; - const IdentityRelationships({ - required this.address, - super.key, - }); + const IdentityRelationships({required this.address, super.key}); @override State createState() => _IdentityRelationshipsState(); @@ -22,10 +19,7 @@ class _IdentityRelationshipsState extends State { void didChangeDependencies() { super.didChangeDependencies(); - _dataSource = IdentityRelationshipDataTableSource( - address: widget.address, - locale: Localizations.localeOf(context), - ); + _dataSource = IdentityRelationshipDataTableSource(address: widget.address, locale: Localizations.localeOf(context)); } @override @@ -36,8 +30,6 @@ class _IdentityRelationshipsState extends State { @override Widget build(BuildContext context) { - return IdentityRelationshipTable( - dataSource: _dataSource, - ); + return IdentityRelationshipTable(dataSource: _dataSource); } } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/tier_detail/tier_detail.dart b/Applications/AdminUi/apps/admin_ui/lib/home/tier_detail/tier_detail.dart index cf67c59558..af5017b031 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/tier_detail/tier_detail.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/tier_detail/tier_detail.dart @@ -49,16 +49,7 @@ class _TierDetailState extends State { crossAxisAlignment: CrossAxisAlignment.stretch, children: [ if (kIsDesktop) - Row( - children: [ - const BackButton(), - IconButton( - icon: const Icon(Icons.refresh), - onPressed: _reload, - tooltip: context.l10n.reload, - ), - ], - ), + Row(children: [const BackButton(), IconButton(icon: const Icon(Icons.refresh), onPressed: _reload, tooltip: context.l10n.reload)]), Card( child: Padding( padding: const EdgeInsets.all(16), @@ -115,19 +106,16 @@ class _QuotaListState extends State<_QuotaList> { data: Theme.of(context).copyWith(dividerColor: Colors.transparent), child: ExpansionTile( title: Text(context.l10n.quotas), - subtitle: isQueuedForDeletionTier - ? Text(context.l10n.tierDetails_quotaList_titleDescription_readOnly) - : Text(context.l10n.tierDetails_quotaList_titleDescription), + subtitle: + isQueuedForDeletionTier + ? Text(context.l10n.tierDetails_quotaList_titleDescription_readOnly) + : Text(context.l10n.tierDetails_quotaList_titleDescription), children: [ Card( child: Column( children: [ if (!isQueuedForDeletionTier) - QuotasButtonGroup( - selectedQuotas: _selectedQuotas, - onQuotasChanged: widget.onQuotasChanged, - tierId: widget.tierDetails.id, - ), + QuotasButtonGroup(selectedQuotas: _selectedQuotas, onQuotasChanged: widget.onQuotasChanged, tierId: widget.tierDetails.id), SizedBox( width: double.infinity, height: 500, @@ -138,19 +126,16 @@ class _QuotaListState extends State<_QuotaList> { DataColumn(label: Text(context.l10n.period)), ], empty: Text(context.l10n.tierDetails_quotaList_noQuotaForTier), - rows: widget.tierDetails.quotas - .map( - (quota) => DataRow2( - cells: [ - DataCell(Text(quota.metric.displayName)), - DataCell(Text(quota.max.toString())), - DataCell(Text(quota.period)), - ], - onSelectChanged: isQueuedForDeletionTier ? null : (_) => _toggleSelection(quota.id), - selected: _selectedQuotas.contains(quota.id), - ), - ) - .toList(), + rows: + widget.tierDetails.quotas + .map( + (quota) => DataRow2( + cells: [DataCell(Text(quota.metric.displayName)), DataCell(Text(quota.max.toString())), DataCell(Text(quota.period))], + onSelectChanged: isQueuedForDeletionTier ? null : (_) => _toggleSelection(quota.id), + selected: _selectedQuotas.contains(quota.id), + ), + ) + .toList(), ), ), ], diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/modals/show_create_tier_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/modals/show_create_tier_dialog.dart index 8972b0aa41..e2ae1310ec 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/modals/show_create_tier_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/modals/show_create_tier_dialog.dart @@ -6,10 +6,8 @@ import 'package:go_router/go_router.dart'; import '/core/core.dart'; -Future showCreateTierDialog({required BuildContext context}) => showDialog( - context: context, - builder: (BuildContext context) => const _CreateTierDialog(), - ); +Future showCreateTierDialog({required BuildContext context}) => + showDialog(context: context, builder: (BuildContext context) => const _CreateTierDialog()); class _CreateTierDialog extends StatefulWidget { const _CreateTierDialog(); @@ -47,55 +45,45 @@ class _CreateTierDialogState extends State<_CreateTierDialog> { shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)), title: Text(context.l10n.createTierDialog_title, textAlign: TextAlign.center), contentPadding: const EdgeInsets.only(left: 24, right: 24, top: 20, bottom: 32), - content: _isLoading - ? const Padding( - padding: EdgeInsets.all(16), - child: Wrap(alignment: WrapAlignment.center, children: [CircularProgressIndicator()]), - ) - : SizedBox( - width: 500, - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: Text('*${context.l10n.required}'), - ), - Gaps.h32, - TextField( - controller: _tierNameController, - focusNode: _focusNode, - onChanged: (_) { - if (_errorMessage == null) return; - setState(() => _errorMessage = null); - }, - onSubmitted: _onSubmitted, - decoration: InputDecoration( - border: const OutlineInputBorder(), - labelText: context.l10n.name, - helperText: context.l10n.createTierDialog_formMessage, - error: _errorMessage != null - ? Text( - _errorMessage!, - style: Theme.of(context).textTheme.labelSmall!.copyWith(color: Theme.of(context).colorScheme.error), - textAlign: TextAlign.left, - ) - : null, + content: + _isLoading + ? const Padding(padding: EdgeInsets.all(16), child: Wrap(alignment: WrapAlignment.center, children: [CircularProgressIndicator()])) + : SizedBox( + width: 500, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding(padding: const EdgeInsets.all(8), child: Text('*${context.l10n.required}')), + Gaps.h32, + TextField( + controller: _tierNameController, + focusNode: _focusNode, + onChanged: (_) { + if (_errorMessage == null) return; + setState(() => _errorMessage = null); + }, + onSubmitted: _onSubmitted, + decoration: InputDecoration( + border: const OutlineInputBorder(), + labelText: context.l10n.name, + helperText: context.l10n.createTierDialog_formMessage, + error: + _errorMessage != null + ? Text( + _errorMessage!, + style: Theme.of(context).textTheme.labelSmall!.copyWith(color: Theme.of(context).colorScheme.error), + textAlign: TextAlign.left, + ) + : null, + ), ), - ), - ], + ], + ), ), - ), actions: [ - OutlinedButton( - onPressed: _isLoading ? null : () => context.pop(), - child: Text(context.l10n.cancel), - ), - FilledButton( - onPressed: _isLoading ? null : () => _onSubmitted(_tierNameController.text), - child: Text(context.l10n.create), - ), + OutlinedButton(onPressed: _isLoading ? null : () => context.pop(), child: Text(context.l10n.cancel)), + FilledButton(onPressed: _isLoading ? null : () => _onSubmitted(_tierNameController.text), child: Text(context.l10n.create)), ], ), ); @@ -123,16 +111,13 @@ class _CreateTierDialogState extends State<_CreateTierDialog> { } void _setErrorMessage(String message) => setState(() { - _errorMessage = message; - _isLoading = false; - }); + _errorMessage = message; + _isLoading = false; + }); void _showSuccessSnackbar() { final snackBar = SnackBar( - content: Text( - context.l10n.createTierDialog_tierCreatedSuccess, - style: const TextStyle(color: Colors.white), - ), + content: Text(context.l10n.createTierDialog_tierCreatedSuccess, style: const TextStyle(color: Colors.white)), backgroundColor: Colors.green, duration: const Duration(seconds: 3), showCloseIcon: true, diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/tiers_overview.dart b/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/tiers_overview.dart index b2754cfc2e..b1586226b2 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/tiers_overview.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/tiers_overview/tiers_overview.dart @@ -38,12 +38,7 @@ class _TiersOverviewState extends State { crossAxisAlignment: CrossAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end, children: [ - if (kIsDesktop) - IconButton( - icon: const Icon(Icons.refresh), - onPressed: _reloadTiers, - tooltip: context.l10n.reload, - ), + if (kIsDesktop) IconButton(icon: const Icon(Icons.refresh), onPressed: _reloadTiers, tooltip: context.l10n.reload), Gaps.w8, IconButton.filled( icon: const Icon(Icons.add), @@ -62,18 +57,15 @@ class _TiersOverviewState extends State { DataColumn2(label: Text(context.l10n.name), size: ColumnSize.L), DataColumn2(label: Text(context.l10n.numberOfIdentities), size: ColumnSize.L), ], - rows: _tiers - .map( - (tier) => DataRow2( - onTap: () => context.go('/tiers/${tier.id}'), - cells: [ - DataCell(Text(tier.id)), - DataCell(Text(tier.name)), - DataCell(Text('${tier.numberOfIdentities}')), - ], - ), - ) - .toList(), + rows: + _tiers + .map( + (tier) => DataRow2( + onTap: () => context.go('/tiers/${tier.id}'), + cells: [DataCell(Text(tier.id)), DataCell(Text(tier.name)), DataCell(Text('${tier.numberOfIdentities}'))], + ), + ) + .toList(), ), ), ], diff --git a/Applications/AdminUi/apps/admin_ui/lib/main.dart b/Applications/AdminUi/apps/admin_ui/lib/main.dart index dd5f7e4094..ce6dfe5499 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/main.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/main.dart @@ -45,11 +45,7 @@ final _router = GoRouter( path: '/login', builder: (context, state) => LoginScreen(redirect: state.uri.queryParameters['redirect']), ), - GoRoute( - parentNavigatorKey: _rootNavigatorKey, - path: '/error', - builder: (context, state) => ErrorScreen(errorMessage: state.extra.toString()), - ), + GoRoute(parentNavigatorKey: _rootNavigatorKey, path: '/error', builder: (context, state) => ErrorScreen(errorMessage: state.extra.toString())), ShellRoute( navigatorKey: _shellNavigatorKey, parentNavigatorKey: _rootNavigatorKey, @@ -68,19 +64,19 @@ final _router = GoRouter( GoRoute( parentNavigatorKey: _shellNavigatorKey, path: 'deletion-process-details/:deletionProcessId', - pageBuilder: (context, state) => NoTransitionPage( - child: DeletionProcessDetails( - address: state.pathParameters['address']!, - deletionProcessId: state.pathParameters['deletionProcessId']!, - ), - ), + pageBuilder: + (context, state) => NoTransitionPage( + child: DeletionProcessDetails( + address: state.pathParameters['address']!, + deletionProcessId: state.pathParameters['deletionProcessId']!, + ), + ), ), GoRoute( parentNavigatorKey: _shellNavigatorKey, path: 'deletion-process-audit-logs', - pageBuilder: (context, state) => NoTransitionPage( - child: DeletionProcessAuditLogDetails(identityAddress: state.pathParameters['address']!), - ), + pageBuilder: + (context, state) => NoTransitionPage(child: DeletionProcessAuditLogDetails(identityAddress: state.pathParameters['address']!)), ), ], ), @@ -126,18 +122,8 @@ class AdminUiApp extends StatelessWidget with WatchItMixin { return MaterialApp.router( title: 'Admin UI', themeMode: themeMode, - theme: ThemeData( - useMaterial3: true, - colorScheme: lightColorScheme, - cardTheme: cardThemeLight, - extensions: [lightCustomColors], - ), - darkTheme: ThemeData( - useMaterial3: true, - colorScheme: darkColorScheme, - cardTheme: cardThemeDark, - extensions: [darkCustomColors], - ), + theme: ThemeData(useMaterial3: true, colorScheme: lightColorScheme, cardTheme: cardThemeLight, extensions: [lightCustomColors]), + darkTheme: ThemeData(useMaterial3: true, colorScheme: darkColorScheme, cardTheme: cardThemeDark, extensions: [darkCustomColors]), debugShowCheckedModeBanner: false, routerConfig: _router, localizationsDelegates: AppLocalizations.localizationsDelegates, diff --git a/Applications/AdminUi/apps/admin_ui/lib/screens/error_screen.dart b/Applications/AdminUi/apps/admin_ui/lib/screens/error_screen.dart index 2dd41abf1c..6685675a8d 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/screens/error_screen.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/screens/error_screen.dart @@ -6,10 +6,7 @@ import '/core/core.dart'; class ErrorScreen extends StatelessWidget { final String errorMessage; - const ErrorScreen({ - required this.errorMessage, - super.key, - }); + const ErrorScreen({required this.errorMessage, super.key}); @override Widget build(BuildContext context) { diff --git a/Applications/AdminUi/apps/admin_ui/lib/screens/home_screen.dart b/Applications/AdminUi/apps/admin_ui/lib/screens/home_screen.dart index d964bd5838..7698fc77ca 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/screens/home_screen.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/screens/home_screen.dart @@ -56,14 +56,12 @@ class _HomeScreenState extends State { ), selectedIndex: _selectedIndex, onDestinationSelected: (index) { - context.go( - switch (index) { - 0 => '/identities', - 1 => '/tiers', - 2 => '/clients', - _ => throw Exception(), - }, - ); + context.go(switch (index) { + 0 => '/identities', + 1 => '/tiers', + 2 => '/clients', + _ => throw Exception(), + }); }, ), Expanded(child: widget.child), diff --git a/Applications/AdminUi/apps/admin_ui/lib/screens/login_screen.dart b/Applications/AdminUi/apps/admin_ui/lib/screens/login_screen.dart index 181400e98a..75b32e22d7 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/screens/login_screen.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/screens/login_screen.dart @@ -40,11 +40,7 @@ class _LoginScreenState extends State { Widget build(BuildContext context) { return Scaffold( backgroundColor: Theme.of(context).colorScheme.inversePrimary, - appBar: AppBar( - title: const AppTitle(), - centerTitle: false, - leading: Gaps.w40, - ), + appBar: AppBar(title: const AppTitle(), centerTitle: false, leading: Gaps.w40), body: Center( child: SizedBox( width: 400, diff --git a/Applications/AdminUi/apps/admin_ui/lib/setup/setup_desktop.dart b/Applications/AdminUi/apps/admin_ui/lib/setup/setup_desktop.dart index 9a341a2403..0e0a3136c5 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/setup/setup_desktop.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/setup/setup_desktop.dart @@ -11,7 +11,5 @@ Future setup() async { setWindowMinSize(const Size(1200, 800)); } - GetIt.I.registerSingleton( - AppConfig(baseUrl: const String.fromEnvironment('base_url')), - ); + GetIt.I.registerSingleton(AppConfig(baseUrl: const String.fromEnvironment('base_url'))); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart b/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart index 971a89231c..3eb94d420b 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart @@ -17,19 +17,13 @@ void main() async { final clients = await client.clients.getClients(); print(clients.data.length); - final newClient = await client.clients.createClient( - defaultTier: basicTierId, - ); + final newClient = await client.clients.createClient(defaultTier: basicTierId); print(newClient.data.clientId); final clientInfo = await client.clients.getClient(newClient.data.clientId); print(clientInfo.data.displayName); - final updatedClient = await client.clients.updateClient( - newClient.data.clientId, - defaultTier: basicTierId, - maxIdentities: 100, - ); + final updatedClient = await client.clients.updateClient(newClient.data.clientId, defaultTier: basicTierId, maxIdentities: 100); print(updatedClient.data.maxIdentities); await client.clients.deleteClient(newClient.data.clientId); diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/admin_api_sdk_base.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/admin_api_sdk_base.dart index 1d39818e43..ad708bb73e 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/admin_api_sdk_base.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/admin_api_sdk_base.dart @@ -15,13 +15,7 @@ class AdminApiClient { late final MetricsEndpoint metrics; AdminApiClient._(String baseUrl, String apiKey) { - final dio = Dio( - BaseOptions( - baseUrl: baseUrl, - headers: {'X-API-KEY': apiKey}, - validateStatus: (_) => true, - ), - ); + final dio = Dio(BaseOptions(baseUrl: baseUrl, headers: {'X-API-KEY': apiKey}, validateStatus: (_) => true)); _dio = dio; clients = ClientsEndpoint(dio); @@ -50,14 +44,8 @@ class AdminApiClient { static Future validateApiKey({required String baseUrl, required String apiKey}) async { final isValidResponse = await Dio( - BaseOptions( - baseUrl: baseUrl, - validateStatus: (status) => status == 200, - ), - ).post>( - '/api/v1/validateApiKey', - data: {'apiKey': apiKey}, - ); + BaseOptions(baseUrl: baseUrl, validateStatus: (status) => status == 200), + ).post>('/api/v1/validateApiKey', data: {'apiKey': apiKey}); final isValid = isValidResponse.data!['isValid'] as bool; return isValid; diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/clients_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/clients_endpoint.dart index 442841e8cf..fda66d5e27 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/clients_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/clients_endpoint.dart @@ -6,10 +6,8 @@ import 'endpoint.dart'; class ClientsEndpoint extends Endpoint { ClientsEndpoint(super.dio); - Future>> getClients() => get( - '/api/v1/Clients', - transformer: (e) => (e as List).map(ClientOverview.fromJson).toList(), - ); + Future>> getClients() => + get('/api/v1/Clients', transformer: (e) => (e as List).map(ClientOverview.fromJson).toList()); Future> createClient({ required String defaultTier, @@ -17,57 +15,29 @@ class ClientsEndpoint extends Endpoint { String? clientSecret, String? displayName, int? maxIdentities, - }) => - post( - '/api/v1/Clients', - data: { - 'defaultTier': defaultTier, - 'clientId': clientId, - 'clientSecret': clientSecret, - 'displayName': displayName, - 'maxIdentities': maxIdentities, - }, - transformer: CreateClientResponse.fromJson, - ); - - Future> getClient(String clientId) => get( - '/api/v1/Clients/$clientId', - transformer: Client.fromJson, - ); - - Future> changeClientSecret( - String clientId, { - required String? newSecret, - }) => - patch( - '/api/v1/Clients/$clientId/ChangeSecret', - data: { - 'newSecret': newSecret, - }, - transformer: ChangeClientSecretResponse.fromJson, - ); - - Future> updateClient( - String clientId, { - required String defaultTier, - required int? maxIdentities, - }) => - put( - '/api/v1/Clients/$clientId', - data: { - 'defaultTier': defaultTier, - 'maxIdentities': maxIdentities, - }, - transformer: UpdateClientResponse.fromJson, - ); - - Future> deleteClient( - String clientId, - ) => - delete( - '/api/v1/Clients/$clientId', - expectedStatus: 204, - transformer: (e) {}, - allowEmptyResponse: true, - ); + }) => post( + '/api/v1/Clients', + data: { + 'defaultTier': defaultTier, + 'clientId': clientId, + 'clientSecret': clientSecret, + 'displayName': displayName, + 'maxIdentities': maxIdentities, + }, + transformer: CreateClientResponse.fromJson, + ); + + Future> getClient(String clientId) => get('/api/v1/Clients/$clientId', transformer: Client.fromJson); + + Future> changeClientSecret(String clientId, {required String? newSecret}) => + patch('/api/v1/Clients/$clientId/ChangeSecret', data: {'newSecret': newSecret}, transformer: ChangeClientSecretResponse.fromJson); + + Future> updateClient(String clientId, {required String defaultTier, required int? maxIdentities}) => put( + '/api/v1/Clients/$clientId', + data: {'defaultTier': defaultTier, 'maxIdentities': maxIdentities}, + transformer: UpdateClientResponse.fromJson, + ); + + Future> deleteClient(String clientId) => + delete('/api/v1/Clients/$clientId', expectedStatus: 204, transformer: (e) {}, allowEmptyResponse: true); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/endpoint.dart index f6c4456394..755b44b5f1 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/endpoint.dart @@ -20,11 +20,7 @@ abstract class Endpoint { @protected Future> get(String path, {required T Function(dynamic) transformer, Map? query}) async { - final response = await _dio.get>( - path, - queryParameters: query, - options: Options(headers: {'Accept': 'application/json'}), - ); + final response = await _dio.get>(path, queryParameters: query, options: Options(headers: {'Accept': 'application/json'})); return _makeResult(response, transformer); } @@ -69,7 +65,10 @@ abstract class Endpoint { int? expectedStatus, bool allowEmptyResponse = false, }) { - expectedStatus ??= switch (httpResponse.requestOptions.method.toUpperCase()) { 'POST' => 201, _ => 200 }; + expectedStatus ??= switch (httpResponse.requestOptions.method.toUpperCase()) { + 'POST' => 201, + _ => 200, + }; final payload = httpResponse.data; @@ -109,13 +108,7 @@ abstract class Endpoint { }) async { final response = await _dio.get>( path, - queryParameters: { - r'$top': '$pageSize', - r'$skip': '$pageNumber', - r'$count': 'true', - r'$orderBy': orderBy, - ...query ?? {}, - }, + queryParameters: {r'$top': '$pageSize', r'$skip': '$pageNumber', r'$count': 'true', r'$orderBy': orderBy, ...query ?? {}}, options: Options(headers: {'Accept': 'application/json'}), ); return _makeODataResult(response, transformer, pageNumber: pageNumber, pageSize: pageSize); diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/identities_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/identities_endpoint.dart index 6a7d37e736..910ea8b225 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/identities_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/identities_endpoint.dart @@ -7,25 +7,10 @@ import 'endpoint.dart'; class IdentitiesEndpoint extends Endpoint { IdentitiesEndpoint(super._dio); - Future> getIdentity( - String address, - ) => - get( - '/api/v1/Identities/$address', - transformer: Identity.fromJson, - ); + Future> getIdentity(String address) => get('/api/v1/Identities/$address', transformer: Identity.fromJson); - Future> updateIdentity( - String address, { - required String tierId, - }) => - put( - '/api/v1/Identities/$address', - data: { - 'tierId': tierId, - }, - transformer: (e) {}, - ); + Future> updateIdentity(String address, {required String tierId}) => + put('/api/v1/Identities/$address', data: {'tierId': tierId}, transformer: (e) {}); Future>> getIdentities({ String orderBy = 'address asc', @@ -53,36 +38,19 @@ class IdentitiesEndpoint extends Endpoint { ); } - Future>> getIdentityDeletionProcesses({ - required String address, - }) => - get( - '/api/v1/Identities/$address/DeletionProcesses', - transformer: (e) => (e as List).map(IdentityDeletionProcess.fromJson).toList(), - ); + Future>> getIdentityDeletionProcesses({required String address}) => + get('/api/v1/Identities/$address/DeletionProcesses', transformer: (e) => (e as List).map(IdentityDeletionProcess.fromJson).toList()); - Future> getIdentityDeletionProcess({ - required String address, - required String deletionProcessId, - }) => - get( - '/api/v1/Identities/$address/DeletionProcesses/$deletionProcessId', - transformer: IdentityDeletionProcessDetail.fromJson, - ); + Future> getIdentityDeletionProcess({required String address, required String deletionProcessId}) => + get('/api/v1/Identities/$address/DeletionProcesses/$deletionProcessId', transformer: IdentityDeletionProcessDetail.fromJson); - Future> cancelDeletionProcess({ - required String address, - required String deletionProcessId, - }) => - put( - '/api/v1/Identities/$address/DeletionProcesses/$deletionProcessId/Cancel', - transformer: (e) {}, - ); + Future> cancelDeletionProcess({required String address, required String deletionProcessId}) => + put('/api/v1/Identities/$address/DeletionProcesses/$deletionProcessId/Cancel', transformer: (e) {}); Future>> getIdentityDeletionProcessAuditLogs({required String address}) => get( - '/api/v1/Identities/$address/DeletionProcesses/AuditLogs', - transformer: (e) => (e as List).map(IdentityDeletionProcessAuditLogEntry.fromJson).toList(), - ); + '/api/v1/Identities/$address/DeletionProcesses/AuditLogs', + transformer: (e) => (e as List).map(IdentityDeletionProcessAuditLogEntry.fromJson).toList(), + ); Future> createIndividualQuota({ required String address, @@ -90,24 +58,8 @@ class IdentitiesEndpoint extends Endpoint { required int max, required String period, }) => - post( - '/api/v1/Identities/$address/Quotas', - data: { - 'metricKey': metricKey, - 'max': max, - 'period': period, - }, - transformer: IndividualQuota.fromJson, - ); + post('/api/v1/Identities/$address/Quotas', data: {'metricKey': metricKey, 'max': max, 'period': period}, transformer: IndividualQuota.fromJson); - Future> deleteIndividualQuota({ - required String address, - required String individualQuotaId, - }) => - delete( - '/api/v1/Identities/$address/Quotas/$individualQuotaId', - expectedStatus: 204, - transformer: (e) {}, - allowEmptyResponse: true, - ); + Future> deleteIndividualQuota({required String address, required String individualQuotaId}) => + delete('/api/v1/Identities/$address/Quotas/$individualQuotaId', expectedStatus: 204, transformer: (e) {}, allowEmptyResponse: true); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/messages_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/messages_endpoint.dart index f07eac3c1d..9e3073852b 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/messages_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/messages_endpoint.dart @@ -12,15 +12,9 @@ class MessagesEndpoint extends Endpoint { required MessageType type, required int pageNumber, required int pageSize, - }) => - get( - '/api/v1/Messages', - query: { - 'participant': participant, - 'type': type.name, - 'PageNumber': pageNumber, - 'PageSize': pageSize, - }, - transformer: (e) => (e as List).map(MessageOverview.fromJson).toList(), - ); + }) => get( + '/api/v1/Messages', + query: {'participant': participant, 'type': type.name, 'PageNumber': pageNumber, 'PageSize': pageSize}, + transformer: (e) => (e as List).map(MessageOverview.fromJson).toList(), + ); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/metrics_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/metrics_endpoint.dart index 3cca98b57c..281260217f 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/metrics_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/metrics_endpoint.dart @@ -6,8 +6,5 @@ import 'endpoint.dart'; class MetricsEndpoint extends Endpoint { MetricsEndpoint(super._dio); - Future>> getMetrics() => get( - '/api/v1/Metrics', - transformer: (e) => (e as List).map(Metric.fromJson).toList(), - ); + Future>> getMetrics() => get('/api/v1/Metrics', transformer: (e) => (e as List).map(Metric.fromJson).toList()); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/quotas_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/quotas_endpoint.dart index 0742760203..cf5d6d6356 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/quotas_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/quotas_endpoint.dart @@ -11,25 +11,8 @@ class QuotasEndpoint extends Endpoint { required String metricKey, required int max, required String period, - }) => - post( - '/api/v1/Tiers/$tierId/Quotas', - data: { - 'metricKey': metricKey, - 'max': max, - 'period': period, - }, - transformer: TierQuotaDefinition.fromJson, - ); + }) => post('/api/v1/Tiers/$tierId/Quotas', data: {'metricKey': metricKey, 'max': max, 'period': period}, transformer: TierQuotaDefinition.fromJson); - Future> deleteTierQuota({ - required String tierId, - required String tierQuotaDefinitionId, - }) => - delete( - '/api/v1/Tiers/$tierId/Quotas/$tierQuotaDefinitionId', - expectedStatus: 204, - transformer: (e) {}, - allowEmptyResponse: true, - ); + Future> deleteTierQuota({required String tierId, required String tierQuotaDefinitionId}) => + delete('/api/v1/Tiers/$tierId/Quotas/$tierQuotaDefinitionId', expectedStatus: 204, transformer: (e) {}, allowEmptyResponse: true); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/relationships_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/relationships_endpoint.dart index 660c9d14f7..c6aef6d0d9 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/relationships_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/relationships_endpoint.dart @@ -6,20 +6,12 @@ import 'endpoint.dart'; class RelationshipsEndpoint extends Endpoint { RelationshipsEndpoint(super._dio); - Future>> getRelationshipsByParticipantAddress( - String participant, { - int? pageNumber, - int? pageSize, - }) { + Future>> getRelationshipsByParticipantAddress(String participant, {int? pageNumber, int? pageSize}) { assert(pageNumber == null || pageNumber > 0, 'pageNumber must be greater than 0 when defined'); return get( '/api/v1/Relationships', - query: { - 'participant': participant, - 'PageNumber': pageNumber, - 'PageSize': pageSize, - }, + query: {'participant': participant, 'PageNumber': pageNumber, 'PageSize': pageSize}, transformer: (e) => (e as List).map(Relationship.fromJson).toList(), ); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/tiers_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/tiers_endpoint.dart index f5e584ef1e..f03d245c3a 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/tiers_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/tiers_endpoint.dart @@ -6,23 +6,12 @@ import 'endpoint.dart'; class TiersEndpoint extends Endpoint { TiersEndpoint(super.dio); - Future>> getTiers() => get( - '/api/v1/Tiers', - transformer: (e) => (e as List).map(TierOverview.fromJson).toList(), - ); + Future>> getTiers() => get('/api/v1/Tiers', transformer: (e) => (e as List).map(TierOverview.fromJson).toList()); - Future> createTier({required String name}) => post( - '/api/v1/Tiers', - data: {'name': name}, - transformer: Tier.fromJson, - ); + Future> createTier({required String name}) => post('/api/v1/Tiers', data: {'name': name}, transformer: Tier.fromJson); Future> getTier(String tierId) => get('/api/v1/Tiers/$tierId', transformer: TierDetails.fromJson); - Future> deleteTier(String tierId) => delete( - '/api/v1/Tiers/$tierId', - expectedStatus: 204, - transformer: (e) {}, - allowEmptyResponse: true, - ); + Future> deleteTier(String tierId) => + delete('/api/v1/Tiers/$tierId', expectedStatus: 204, transformer: (e) {}, allowEmptyResponse: true); } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/enums/message_type.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/enums/message_type.dart index 7c6fbc98a2..dde5ec4b30 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/enums/message_type.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/enums/message_type.dart @@ -2,5 +2,8 @@ enum MessageType { incoming, outgoing; - String get name => switch (this) { MessageType.incoming => 'Incoming', MessageType.outgoing => 'Outgoing' }; + String get name => switch (this) { + MessageType.incoming => 'Incoming', + MessageType.outgoing => 'Outgoing', + }; } diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_error.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_error.dart index 159ccf2358..9d522956ea 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_error.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_error.dart @@ -5,13 +5,7 @@ class ApiError { final String code; final String message; - ApiError({ - required this.id, - required this.docs, - required this.time, - required this.code, - required this.message, - }); + ApiError({required this.id, required this.docs, required this.time, required this.code, required this.message}); factory ApiError.fromJson(Map json) { return ApiError( diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_response.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_response.dart index 09297cf425..8a63808b70 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_response.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/types/api_response.dart @@ -42,12 +42,7 @@ class Pagination { final int totalPages; final int totalRecords; - Pagination({ - required this.pageNumber, - required this.pageSize, - required this.totalPages, - required this.totalRecords, - }); + Pagination({required this.pageNumber, required this.pageSize, required this.totalPages, required this.totalRecords}); factory Pagination.fromJson(Map json) { return Pagination( diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/change_client_secret_response.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/change_client_secret_response.g.dart index a683206e48..14e2c70e75 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/change_client_secret_response.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/change_client_secret_response.g.dart @@ -7,19 +7,19 @@ part of 'change_client_secret_response.dart'; // ************************************************************************** ChangeClientSecretResponse _$ChangeClientSecretResponseFromJson(Map json) => ChangeClientSecretResponse( - clientId: json['clientId'] as String, - displayName: json['displayName'] as String, - clientSecret: json['clientSecret'] as String, - defaultTier: json['defaultTier'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - maxIdentities: (json['maxIdentities'] as num?)?.toInt(), - ); + clientId: json['clientId'] as String, + displayName: json['displayName'] as String, + clientSecret: json['clientSecret'] as String, + defaultTier: json['defaultTier'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + maxIdentities: (json['maxIdentities'] as num?)?.toInt(), +); Map _$ChangeClientSecretResponseToJson(ChangeClientSecretResponse instance) => { - 'clientId': instance.clientId, - 'displayName': instance.displayName, - 'clientSecret': instance.clientSecret, - 'defaultTier': instance.defaultTier, - 'createdAt': instance.createdAt.toIso8601String(), - 'maxIdentities': instance.maxIdentities, - }; + 'clientId': instance.clientId, + 'displayName': instance.displayName, + 'clientSecret': instance.clientSecret, + 'defaultTier': instance.defaultTier, + 'createdAt': instance.createdAt.toIso8601String(), + 'maxIdentities': instance.maxIdentities, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client.g.dart index 7ad2d8a8b7..832688ae2b 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client.g.dart @@ -7,19 +7,19 @@ part of 'client.dart'; // ************************************************************************** Client _$ClientFromJson(Map json) => Client( - clientId: json['clientId'] as String, - displayName: json['displayName'] as String, - defaultTier: json['defaultTier'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - numberOfIdentities: (json['numberOfIdentities'] as num).toInt(), - maxIdentities: (json['maxIdentities'] as num?)?.toInt(), - ); + clientId: json['clientId'] as String, + displayName: json['displayName'] as String, + defaultTier: json['defaultTier'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + numberOfIdentities: (json['numberOfIdentities'] as num).toInt(), + maxIdentities: (json['maxIdentities'] as num?)?.toInt(), +); Map _$ClientToJson(Client instance) => { - 'clientId': instance.clientId, - 'displayName': instance.displayName, - 'defaultTier': instance.defaultTier, - 'createdAt': instance.createdAt.toIso8601String(), - 'numberOfIdentities': instance.numberOfIdentities, - 'maxIdentities': instance.maxIdentities, - }; + 'clientId': instance.clientId, + 'displayName': instance.displayName, + 'defaultTier': instance.defaultTier, + 'createdAt': instance.createdAt.toIso8601String(), + 'numberOfIdentities': instance.numberOfIdentities, + 'maxIdentities': instance.maxIdentities, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client_overview.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client_overview.g.dart index 1bfec302d7..e9ad05de14 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client_overview.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/client_overview.g.dart @@ -7,19 +7,19 @@ part of 'client_overview.dart'; // ************************************************************************** ClientOverview _$ClientOverviewFromJson(Map json) => ClientOverview( - clientId: json['clientId'] as String, - displayName: json['displayName'] as String, - defaultTier: Tier.fromJson(json['defaultTier']), - createdAt: DateTime.parse(json['createdAt'] as String), - maxIdentities: (json['maxIdentities'] as num?)?.toInt(), - numberOfIdentities: (json['numberOfIdentities'] as num).toInt(), - ); + clientId: json['clientId'] as String, + displayName: json['displayName'] as String, + defaultTier: Tier.fromJson(json['defaultTier']), + createdAt: DateTime.parse(json['createdAt'] as String), + maxIdentities: (json['maxIdentities'] as num?)?.toInt(), + numberOfIdentities: (json['numberOfIdentities'] as num).toInt(), +); Map _$ClientOverviewToJson(ClientOverview instance) => { - 'clientId': instance.clientId, - 'displayName': instance.displayName, - 'defaultTier': instance.defaultTier, - 'createdAt': instance.createdAt.toIso8601String(), - 'maxIdentities': instance.maxIdentities, - 'numberOfIdentities': instance.numberOfIdentities, - }; + 'clientId': instance.clientId, + 'displayName': instance.displayName, + 'defaultTier': instance.defaultTier, + 'createdAt': instance.createdAt.toIso8601String(), + 'maxIdentities': instance.maxIdentities, + 'numberOfIdentities': instance.numberOfIdentities, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/create_client_response.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/create_client_response.g.dart index 3afa8eecf5..13dab7a4a4 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/create_client_response.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/create_client_response.g.dart @@ -7,19 +7,19 @@ part of 'create_client_response.dart'; // ************************************************************************** CreateClientResponse _$CreateClientResponseFromJson(Map json) => CreateClientResponse( - clientId: json['clientId'] as String, - displayName: json['displayName'] as String, - clientSecret: json['clientSecret'] as String, - defaultTier: json['defaultTier'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - maxIdentities: (json['maxIdentities'] as num?)?.toInt(), - ); + clientId: json['clientId'] as String, + displayName: json['displayName'] as String, + clientSecret: json['clientSecret'] as String, + defaultTier: json['defaultTier'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + maxIdentities: (json['maxIdentities'] as num?)?.toInt(), +); Map _$CreateClientResponseToJson(CreateClientResponse instance) => { - 'clientId': instance.clientId, - 'displayName': instance.displayName, - 'clientSecret': instance.clientSecret, - 'defaultTier': instance.defaultTier, - 'createdAt': instance.createdAt.toIso8601String(), - 'maxIdentities': instance.maxIdentities, - }; + 'clientId': instance.clientId, + 'displayName': instance.displayName, + 'clientSecret': instance.clientSecret, + 'defaultTier': instance.defaultTier, + 'createdAt': instance.createdAt.toIso8601String(), + 'maxIdentities': instance.maxIdentities, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/update_client_response.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/update_client_response.g.dart index 116027bbd6..38616fb06e 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/clients/update_client_response.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/clients/update_client_response.g.dart @@ -7,17 +7,17 @@ part of 'update_client_response.dart'; // ************************************************************************** UpdateClientResponse _$UpdateClientResponseFromJson(Map json) => UpdateClientResponse( - clientId: json['clientId'] as String, - displayName: json['displayName'] as String, - defaultTier: json['defaultTier'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - maxIdentities: (json['maxIdentities'] as num?)?.toInt(), - ); + clientId: json['clientId'] as String, + displayName: json['displayName'] as String, + defaultTier: json['defaultTier'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + maxIdentities: (json['maxIdentities'] as num?)?.toInt(), +); Map _$UpdateClientResponseToJson(UpdateClientResponse instance) => { - 'clientId': instance.clientId, - 'displayName': instance.displayName, - 'defaultTier': instance.defaultTier, - 'createdAt': instance.createdAt.toIso8601String(), - 'maxIdentities': instance.maxIdentities, - }; + 'clientId': instance.clientId, + 'displayName': instance.displayName, + 'defaultTier': instance.defaultTier, + 'createdAt': instance.createdAt.toIso8601String(), + 'maxIdentities': instance.maxIdentities, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity.g.dart index aaae3fb2c1..af2e1b3677 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity.g.dart @@ -7,25 +7,25 @@ part of 'identity.dart'; // ************************************************************************** Identity _$IdentityFromJson(Map json) => Identity( - address: json['address'] as String, - clientId: json['clientId'] as String, - publicKey: json['publicKey'] as String, - tierId: json['tierId'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - identityVersion: (json['identityVersion'] as num).toInt(), - numberOfDevices: (json['numberOfDevices'] as num).toInt(), - devices: (json['devices'] as List).map(IdentityDevice.fromJson).toList(), - quotas: (json['quotas'] as List).map(IdentityQuota.fromJson).toList(), - ); + address: json['address'] as String, + clientId: json['clientId'] as String, + publicKey: json['publicKey'] as String, + tierId: json['tierId'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + identityVersion: (json['identityVersion'] as num).toInt(), + numberOfDevices: (json['numberOfDevices'] as num).toInt(), + devices: (json['devices'] as List).map(IdentityDevice.fromJson).toList(), + quotas: (json['quotas'] as List).map(IdentityQuota.fromJson).toList(), +); Map _$IdentityToJson(Identity instance) => { - 'address': instance.address, - 'clientId': instance.clientId, - 'publicKey': instance.publicKey, - 'tierId': instance.tierId, - 'createdAt': instance.createdAt.toIso8601String(), - 'identityVersion': instance.identityVersion, - 'numberOfDevices': instance.numberOfDevices, - 'devices': instance.devices, - 'quotas': instance.quotas, - }; + 'address': instance.address, + 'clientId': instance.clientId, + 'publicKey': instance.publicKey, + 'tierId': instance.tierId, + 'createdAt': instance.createdAt.toIso8601String(), + 'identityVersion': instance.identityVersion, + 'numberOfDevices': instance.numberOfDevices, + 'devices': instance.devices, + 'quotas': instance.quotas, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process.g.dart index 09fc74905a..c55e268d06 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process.g.dart @@ -7,36 +7,36 @@ part of 'identity_deletion_process.dart'; // ************************************************************************** IdentityDeletionProcess _$IdentityDeletionProcessFromJson(Map json) => IdentityDeletionProcess( - id: json['id'] as String, - status: $enumDecode(_$DeletionProcessStatusEnumMap, json['status']), - createdAt: DateTime.parse(json['createdAt'] as String), - approvalPeriodEndsAt: DateTime.parse(json['approvalPeriodEndsAt'] as String), - approvalReminder1SentAt: json['approvalReminder1SentAt'] == null ? null : DateTime.parse(json['approvalReminder1SentAt'] as String), - approvalReminder2SentAt: json['approvalReminder2SentAt'] == null ? null : DateTime.parse(json['approvalReminder2SentAt'] as String), - approvalReminder3SentAt: json['approvalReminder3SentAt'] == null ? null : DateTime.parse(json['approvalReminder3SentAt'] as String), - approvedAt: json['approvedAt'] == null ? null : DateTime.parse(json['approvedAt'] as String), - approvedByDevice: json['approvedByDevice'] as String?, - gracePeriodEndsAt: json['gracePeriodEndsAt'] == null ? null : DateTime.parse(json['gracePeriodEndsAt'] as String), - gracePeriodReminder1SentAt: json['gracePeriodReminder1SentAt'] == null ? null : DateTime.parse(json['gracePeriodReminder1SentAt'] as String), - gracePeriodReminder2SentAt: json['gracePeriodReminder2SentAt'] == null ? null : DateTime.parse(json['gracePeriodReminder2SentAt'] as String), - gracePeriodReminder3SentAt: json['gracePeriodReminder3SentAt'] == null ? null : DateTime.parse(json['gracePeriodReminder3SentAt'] as String), - ); + id: json['id'] as String, + status: $enumDecode(_$DeletionProcessStatusEnumMap, json['status']), + createdAt: DateTime.parse(json['createdAt'] as String), + approvalPeriodEndsAt: DateTime.parse(json['approvalPeriodEndsAt'] as String), + approvalReminder1SentAt: json['approvalReminder1SentAt'] == null ? null : DateTime.parse(json['approvalReminder1SentAt'] as String), + approvalReminder2SentAt: json['approvalReminder2SentAt'] == null ? null : DateTime.parse(json['approvalReminder2SentAt'] as String), + approvalReminder3SentAt: json['approvalReminder3SentAt'] == null ? null : DateTime.parse(json['approvalReminder3SentAt'] as String), + approvedAt: json['approvedAt'] == null ? null : DateTime.parse(json['approvedAt'] as String), + approvedByDevice: json['approvedByDevice'] as String?, + gracePeriodEndsAt: json['gracePeriodEndsAt'] == null ? null : DateTime.parse(json['gracePeriodEndsAt'] as String), + gracePeriodReminder1SentAt: json['gracePeriodReminder1SentAt'] == null ? null : DateTime.parse(json['gracePeriodReminder1SentAt'] as String), + gracePeriodReminder2SentAt: json['gracePeriodReminder2SentAt'] == null ? null : DateTime.parse(json['gracePeriodReminder2SentAt'] as String), + gracePeriodReminder3SentAt: json['gracePeriodReminder3SentAt'] == null ? null : DateTime.parse(json['gracePeriodReminder3SentAt'] as String), +); Map _$IdentityDeletionProcessToJson(IdentityDeletionProcess instance) => { - 'id': instance.id, - 'status': _$DeletionProcessStatusEnumMap[instance.status]!, - 'createdAt': instance.createdAt.toIso8601String(), - 'approvalPeriodEndsAt': instance.approvalPeriodEndsAt.toIso8601String(), - 'approvalReminder1SentAt': instance.approvalReminder1SentAt?.toIso8601String(), - 'approvalReminder2SentAt': instance.approvalReminder2SentAt?.toIso8601String(), - 'approvalReminder3SentAt': instance.approvalReminder3SentAt?.toIso8601String(), - 'approvedAt': instance.approvedAt?.toIso8601String(), - 'approvedByDevice': instance.approvedByDevice, - 'gracePeriodEndsAt': instance.gracePeriodEndsAt?.toIso8601String(), - 'gracePeriodReminder1SentAt': instance.gracePeriodReminder1SentAt?.toIso8601String(), - 'gracePeriodReminder2SentAt': instance.gracePeriodReminder2SentAt?.toIso8601String(), - 'gracePeriodReminder3SentAt': instance.gracePeriodReminder3SentAt?.toIso8601String(), - }; + 'id': instance.id, + 'status': _$DeletionProcessStatusEnumMap[instance.status]!, + 'createdAt': instance.createdAt.toIso8601String(), + 'approvalPeriodEndsAt': instance.approvalPeriodEndsAt.toIso8601String(), + 'approvalReminder1SentAt': instance.approvalReminder1SentAt?.toIso8601String(), + 'approvalReminder2SentAt': instance.approvalReminder2SentAt?.toIso8601String(), + 'approvalReminder3SentAt': instance.approvalReminder3SentAt?.toIso8601String(), + 'approvedAt': instance.approvedAt?.toIso8601String(), + 'approvedByDevice': instance.approvedByDevice, + 'gracePeriodEndsAt': instance.gracePeriodEndsAt?.toIso8601String(), + 'gracePeriodReminder1SentAt': instance.gracePeriodReminder1SentAt?.toIso8601String(), + 'gracePeriodReminder2SentAt': instance.gracePeriodReminder2SentAt?.toIso8601String(), + 'gracePeriodReminder3SentAt': instance.gracePeriodReminder3SentAt?.toIso8601String(), +}; const _$DeletionProcessStatusEnumMap = { DeletionProcessStatus.waitingForApproval: 'WaitingForApproval', diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_audit_log_entry.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_audit_log_entry.g.dart index 11c38fe97f..cda93c6620 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_audit_log_entry.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_audit_log_entry.g.dart @@ -12,18 +12,15 @@ IdentityDeletionProcessAuditLogEntry _$IdentityDeletionProcessAuditLogEntryFromJ createdAt: DateTime.parse(json['createdAt'] as String), messageKey: json['messageKey'] as String, newStatus: json['newStatus'] as String, - additionalData: (json['additionalData'] as Map?)?.map( - (k, e) => MapEntry(k, e as String), - ) ?? - const {}, + additionalData: (json['additionalData'] as Map?)?.map((k, e) => MapEntry(k, e as String)) ?? const {}, oldStatus: json['oldStatus'] as String?, ); Map _$IdentityDeletionProcessAuditLogEntryToJson(IdentityDeletionProcessAuditLogEntry instance) => { - 'id': instance.id, - 'createdAt': instance.createdAt.toIso8601String(), - 'messageKey': instance.messageKey, - 'oldStatus': instance.oldStatus, - 'newStatus': instance.newStatus, - 'additionalData': instance.additionalData, - }; + 'id': instance.id, + 'createdAt': instance.createdAt.toIso8601String(), + 'messageKey': instance.messageKey, + 'oldStatus': instance.oldStatus, + 'newStatus': instance.newStatus, + 'additionalData': instance.additionalData, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.dart index 2b0d7cb088..a43d9b7159 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.dart @@ -12,12 +12,7 @@ class IdentityDeletionProcessDetail { final DateTime createdAt; final List auditLog; - IdentityDeletionProcessDetail({ - required this.id, - required this.status, - required this.createdAt, - required this.auditLog, - }); + IdentityDeletionProcessDetail({required this.id, required this.status, required this.createdAt, required this.auditLog}); factory IdentityDeletionProcessDetail.fromJson(dynamic json) => _$IdentityDeletionProcessDetailFromJson(json as Map); Map toJson() => _$IdentityDeletionProcessDetailToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.g.dart index 56dbcee05c..c8846be158 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_deletion_process_detail.g.dart @@ -7,18 +7,18 @@ part of 'identity_deletion_process_detail.dart'; // ************************************************************************** IdentityDeletionProcessDetail _$IdentityDeletionProcessDetailFromJson(Map json) => IdentityDeletionProcessDetail( - id: json['id'] as String, - status: $enumDecode(_$DeletionProcessStatusEnumMap, json['status']), - createdAt: DateTime.parse(json['createdAt'] as String), - auditLog: (json['auditLog'] as List).map(IdentityDeletionProcessAuditLogEntry.fromJson).toList(), - ); + id: json['id'] as String, + status: $enumDecode(_$DeletionProcessStatusEnumMap, json['status']), + createdAt: DateTime.parse(json['createdAt'] as String), + auditLog: (json['auditLog'] as List).map(IdentityDeletionProcessAuditLogEntry.fromJson).toList(), +); Map _$IdentityDeletionProcessDetailToJson(IdentityDeletionProcessDetail instance) => { - 'id': instance.id, - 'status': _$DeletionProcessStatusEnumMap[instance.status]!, - 'createdAt': instance.createdAt.toIso8601String(), - 'auditLog': instance.auditLog, - }; + 'id': instance.id, + 'status': _$DeletionProcessStatusEnumMap[instance.status]!, + 'createdAt': instance.createdAt.toIso8601String(), + 'auditLog': instance.auditLog, +}; const _$DeletionProcessStatusEnumMap = { DeletionProcessStatus.waitingForApproval: 'WaitingForApproval', diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_device.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_device.g.dart index fa9bd7e269..1a72105a84 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_device.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_device.g.dart @@ -7,27 +7,23 @@ part of 'identity_device.dart'; // ************************************************************************** IdentityDevice _$IdentityDeviceFromJson(Map json) => IdentityDevice( - id: json['id'] as String, - username: json['username'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - createdByDevice: json['createdByDevice'] as String, - communicationLanguage: json['communicationLanguage'] as String, - lastLogin: json['lastLogin'] == null ? null : LastLoginInformation.fromJson(json['lastLogin']), - ); + id: json['id'] as String, + username: json['username'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + createdByDevice: json['createdByDevice'] as String, + communicationLanguage: json['communicationLanguage'] as String, + lastLogin: json['lastLogin'] == null ? null : LastLoginInformation.fromJson(json['lastLogin']), +); Map _$IdentityDeviceToJson(IdentityDevice instance) => { - 'id': instance.id, - 'username': instance.username, - 'createdAt': instance.createdAt.toIso8601String(), - 'createdByDevice': instance.createdByDevice, - 'lastLogin': instance.lastLogin, - 'communicationLanguage': instance.communicationLanguage, - }; + 'id': instance.id, + 'username': instance.username, + 'createdAt': instance.createdAt.toIso8601String(), + 'createdByDevice': instance.createdByDevice, + 'lastLogin': instance.lastLogin, + 'communicationLanguage': instance.communicationLanguage, +}; -LastLoginInformation _$LastLoginInformationFromJson(Map json) => LastLoginInformation( - time: DateTime.parse(json['time'] as String), - ); +LastLoginInformation _$LastLoginInformationFromJson(Map json) => LastLoginInformation(time: DateTime.parse(json['time'] as String)); -Map _$LastLoginInformationToJson(LastLoginInformation instance) => { - 'time': instance.time.toIso8601String(), - }; +Map _$LastLoginInformationToJson(LastLoginInformation instance) => {'time': instance.time.toIso8601String()}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_overview.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_overview.g.dart index cff7ab52bf..927769f541 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_overview.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_overview.g.dart @@ -7,23 +7,23 @@ part of 'identity_overview.dart'; // ************************************************************************** IdentityOverview _$IdentityOverviewFromJson(Map json) => IdentityOverview( - address: json['address'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - createdWithClient: json['createdWithClient'] as String, - identityVersion: (json['identityVersion'] as num).toInt(), - numberOfDevices: (json['numberOfDevices'] as num).toInt(), - tier: Tier.fromJson(json['tier']), - lastLoginAt: json['lastLoginAt'] == null ? null : DateTime.parse(json['lastLoginAt'] as String), - datawalletVersion: (json['datawalletVersion'] as num?)?.toInt(), - ); + address: json['address'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + createdWithClient: json['createdWithClient'] as String, + identityVersion: (json['identityVersion'] as num).toInt(), + numberOfDevices: (json['numberOfDevices'] as num).toInt(), + tier: Tier.fromJson(json['tier']), + lastLoginAt: json['lastLoginAt'] == null ? null : DateTime.parse(json['lastLoginAt'] as String), + datawalletVersion: (json['datawalletVersion'] as num?)?.toInt(), +); Map _$IdentityOverviewToJson(IdentityOverview instance) => { - 'address': instance.address, - 'createdAt': instance.createdAt.toIso8601String(), - 'createdWithClient': instance.createdWithClient, - 'identityVersion': instance.identityVersion, - 'numberOfDevices': instance.numberOfDevices, - 'tier': instance.tier, - 'lastLoginAt': instance.lastLoginAt?.toIso8601String(), - 'datawalletVersion': instance.datawalletVersion, - }; + 'address': instance.address, + 'createdAt': instance.createdAt.toIso8601String(), + 'createdWithClient': instance.createdWithClient, + 'identityVersion': instance.identityVersion, + 'numberOfDevices': instance.numberOfDevices, + 'tier': instance.tier, + 'lastLoginAt': instance.lastLoginAt?.toIso8601String(), + 'datawalletVersion': instance.datawalletVersion, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.dart index aa3b12358d..13f14a0d8e 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.dart @@ -13,14 +13,7 @@ class IdentityQuota { final int usage; final String period; - IdentityQuota({ - required this.id, - required this.source, - required this.metric, - required this.max, - required this.usage, - required this.period, - }); + IdentityQuota({required this.id, required this.source, required this.metric, required this.max, required this.usage, required this.period}); factory IdentityQuota.fromJson(dynamic json) => _$IdentityQuotaFromJson(json as Map); Map toJson() => _$IdentityQuotaToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.g.dart index 6e1250867b..79a76cd4ef 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/identity_quota.g.dart @@ -7,19 +7,19 @@ part of 'identity_quota.dart'; // ************************************************************************** IdentityQuota _$IdentityQuotaFromJson(Map json) => IdentityQuota( - id: json['id'] as String, - source: json['source'] as String, - metric: Metric.fromJson(json['metric']), - max: (json['max'] as num).toInt(), - usage: (json['usage'] as num).toInt(), - period: json['period'] as String, - ); + id: json['id'] as String, + source: json['source'] as String, + metric: Metric.fromJson(json['metric']), + max: (json['max'] as num).toInt(), + usage: (json['usage'] as num).toInt(), + period: json['period'] as String, +); Map _$IdentityQuotaToJson(IdentityQuota instance) => { - 'id': instance.id, - 'source': instance.source, - 'metric': instance.metric, - 'max': instance.max, - 'usage': instance.usage, - 'period': instance.period, - }; + 'id': instance.id, + 'source': instance.source, + 'metric': instance.metric, + 'max': instance.max, + 'usage': instance.usage, + 'period': instance.period, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.dart index 5246f36c1c..9084fbc11a 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.dart @@ -11,12 +11,7 @@ class IndividualQuota { final int max; final String period; - IndividualQuota({ - required this.id, - required this.metric, - required this.max, - required this.period, - }); + IndividualQuota({required this.id, required this.metric, required this.max, required this.period}); factory IndividualQuota.fromJson(dynamic json) => _$IndividualQuotaFromJson(json as Map); Map toJson() => _$IndividualQuotaToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.g.dart index 753d3bcbcb..0d4193b95e 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/identities/individual_quota.g.dart @@ -7,15 +7,15 @@ part of 'individual_quota.dart'; // ************************************************************************** IndividualQuota _$IndividualQuotaFromJson(Map json) => IndividualQuota( - id: json['id'] as String, - metric: Metric.fromJson(json['metric']), - max: (json['max'] as num).toInt(), - period: json['period'] as String, - ); + id: json['id'] as String, + metric: Metric.fromJson(json['metric']), + max: (json['max'] as num).toInt(), + period: json['period'] as String, +); Map _$IndividualQuotaToJson(IndividualQuota instance) => { - 'id': instance.id, - 'metric': instance.metric, - 'max': instance.max, - 'period': instance.period, - }; + 'id': instance.id, + 'metric': instance.metric, + 'max': instance.max, + 'period': instance.period, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_overview.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_overview.g.dart index 16a4f5cc38..a7a0d76752 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_overview.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_overview.g.dart @@ -7,19 +7,19 @@ part of 'message_overview.dart'; // ************************************************************************** MessageOverview _$MessageOverviewFromJson(Map json) => MessageOverview( - messageId: json['messageId'] as String, - senderAddress: json['senderAddress'] as String, - senderDevice: json['senderDevice'] as String, - sendDate: DateTime.parse(json['sendDate'] as String), - numberOfAttachments: (json['numberOfAttachments'] as num).toInt(), - recipients: (json['recipients'] as List).map(MessageRecipient.fromJson).toList(), - ); + messageId: json['messageId'] as String, + senderAddress: json['senderAddress'] as String, + senderDevice: json['senderDevice'] as String, + sendDate: DateTime.parse(json['sendDate'] as String), + numberOfAttachments: (json['numberOfAttachments'] as num).toInt(), + recipients: (json['recipients'] as List).map(MessageRecipient.fromJson).toList(), +); Map _$MessageOverviewToJson(MessageOverview instance) => { - 'messageId': instance.messageId, - 'senderAddress': instance.senderAddress, - 'senderDevice': instance.senderDevice, - 'sendDate': instance.sendDate.toIso8601String(), - 'numberOfAttachments': instance.numberOfAttachments, - 'recipients': instance.recipients, - }; + 'messageId': instance.messageId, + 'senderAddress': instance.senderAddress, + 'senderDevice': instance.senderDevice, + 'sendDate': instance.sendDate.toIso8601String(), + 'numberOfAttachments': instance.numberOfAttachments, + 'recipients': instance.recipients, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.dart index e3b0156099..f2c487030f 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.dart @@ -6,9 +6,7 @@ part 'message_recipient.g.dart'; class MessageRecipient { final String address; - MessageRecipient({ - required this.address, - }); + MessageRecipient({required this.address}); factory MessageRecipient.fromJson(dynamic json) => _$MessageRecipientFromJson(json as Map); Map toJson() => _$MessageRecipientToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.g.dart index 731f05e645..621173cb84 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/messages/message_recipient.g.dart @@ -6,10 +6,6 @@ part of 'message_recipient.dart'; // JsonSerializableGenerator // ************************************************************************** -MessageRecipient _$MessageRecipientFromJson(Map json) => MessageRecipient( - address: json['address'] as String, - ); +MessageRecipient _$MessageRecipientFromJson(Map json) => MessageRecipient(address: json['address'] as String); -Map _$MessageRecipientToJson(MessageRecipient instance) => { - 'address': instance.address, - }; +Map _$MessageRecipientToJson(MessageRecipient instance) => {'address': instance.address}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.dart index be98522bb6..98bbb7709a 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.dart @@ -7,10 +7,7 @@ class Metric { final String key; final String displayName; - Metric({ - required this.key, - required this.displayName, - }); + Metric({required this.key, required this.displayName}); factory Metric.fromJson(dynamic json) => _$MetricFromJson(json as Map); Map toJson() => _$MetricToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.g.dart index 06edb60d05..76d5d17a69 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/metrics/metric.g.dart @@ -6,12 +6,6 @@ part of 'metric.dart'; // JsonSerializableGenerator // ************************************************************************** -Metric _$MetricFromJson(Map json) => Metric( - key: json['key'] as String, - displayName: json['displayName'] as String, - ); +Metric _$MetricFromJson(Map json) => Metric(key: json['key'] as String, displayName: json['displayName'] as String); -Map _$MetricToJson(Metric instance) => { - 'key': instance.key, - 'displayName': instance.displayName, - }; +Map _$MetricToJson(Metric instance) => {'key': instance.key, 'displayName': instance.displayName}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/relationships/relationship.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/relationships/relationship.g.dart index 21b1e0770f..6fb1d6b30f 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/relationships/relationship.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/relationships/relationship.g.dart @@ -7,23 +7,23 @@ part of 'relationship.dart'; // ************************************************************************** Relationship _$RelationshipFromJson(Map json) => Relationship( - peer: json['peer'] as String, - requestedBy: json['requestedBy'] as String, - templateId: json['templateId'] as String, - status: json['status'] as String, - creationDate: DateTime.parse(json['creationDate'] as String), - answeredAt: json['answeredAt'] == null ? null : DateTime.parse(json['answeredAt'] as String), - createdByDevice: json['createdByDevice'] as String, - answeredByDevice: json['answeredByDevice'] as String?, - ); + peer: json['peer'] as String, + requestedBy: json['requestedBy'] as String, + templateId: json['templateId'] as String, + status: json['status'] as String, + creationDate: DateTime.parse(json['creationDate'] as String), + answeredAt: json['answeredAt'] == null ? null : DateTime.parse(json['answeredAt'] as String), + createdByDevice: json['createdByDevice'] as String, + answeredByDevice: json['answeredByDevice'] as String?, +); Map _$RelationshipToJson(Relationship instance) => { - 'peer': instance.peer, - 'requestedBy': instance.requestedBy, - 'templateId': instance.templateId, - 'status': instance.status, - 'creationDate': instance.creationDate.toIso8601String(), - 'answeredAt': instance.answeredAt?.toIso8601String(), - 'createdByDevice': instance.createdByDevice, - 'answeredByDevice': instance.answeredByDevice, - }; + 'peer': instance.peer, + 'requestedBy': instance.requestedBy, + 'templateId': instance.templateId, + 'status': instance.status, + 'creationDate': instance.creationDate.toIso8601String(), + 'answeredAt': instance.answeredAt?.toIso8601String(), + 'createdByDevice': instance.createdByDevice, + 'answeredByDevice': instance.answeredByDevice, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.dart index b54fa1a842..89d8c9d472 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.dart @@ -7,10 +7,7 @@ class CreateTierResponse { final String id; final String name; - CreateTierResponse({ - required this.id, - required this.name, - }); + CreateTierResponse({required this.id, required this.name}); factory CreateTierResponse.fromJson(dynamic json) => _$CreateTierResponseFromJson(json as Map); Map toJson() => _$CreateTierResponseToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.g.dart index 6387519b22..a35315ddc4 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/create_tier_response.g.dart @@ -6,12 +6,7 @@ part of 'create_tier_response.dart'; // JsonSerializableGenerator // ************************************************************************** -CreateTierResponse _$CreateTierResponseFromJson(Map json) => CreateTierResponse( - id: json['id'] as String, - name: json['name'] as String, - ); +CreateTierResponse _$CreateTierResponseFromJson(Map json) => + CreateTierResponse(id: json['id'] as String, name: json['name'] as String); -Map _$CreateTierResponseToJson(CreateTierResponse instance) => { - 'id': instance.id, - 'name': instance.name, - }; +Map _$CreateTierResponseToJson(CreateTierResponse instance) => {'id': instance.id, 'name': instance.name}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier.g.dart index b3393846d5..76ef3655ac 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier.g.dart @@ -6,12 +6,6 @@ part of 'tier.dart'; // JsonSerializableGenerator // ************************************************************************** -Tier _$TierFromJson(Map json) => Tier( - id: json['id'] as String, - name: json['name'] as String, - ); +Tier _$TierFromJson(Map json) => Tier(id: json['id'] as String, name: json['name'] as String); -Map _$TierToJson(Tier instance) => { - 'id': instance.id, - 'name': instance.name, - }; +Map _$TierToJson(Tier instance) => {'id': instance.id, 'name': instance.name}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.dart index 69afc8871a..923f8e2e0e 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.dart @@ -10,11 +10,7 @@ class TierDetails { final String name; final List quotas; - TierDetails({ - required this.id, - required this.name, - required this.quotas, - }); + TierDetails({required this.id, required this.name, required this.quotas}); factory TierDetails.fromJson(dynamic json) => _$TierDetailsFromJson(json as Map); Map toJson() => _$TierDetailsToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.g.dart index e3f96b8c24..a21a7cd0a2 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_details.g.dart @@ -7,13 +7,13 @@ part of 'tier_details.dart'; // ************************************************************************** TierDetails _$TierDetailsFromJson(Map json) => TierDetails( - id: json['id'] as String, - name: json['name'] as String, - quotas: (json['quotas'] as List).map(TierQuotaDefinition.fromJson).toList(), - ); + id: json['id'] as String, + name: json['name'] as String, + quotas: (json['quotas'] as List).map(TierQuotaDefinition.fromJson).toList(), +); Map _$TierDetailsToJson(TierDetails instance) => { - 'id': instance.id, - 'name': instance.name, - 'quotas': instance.quotas, - }; + 'id': instance.id, + 'name': instance.name, + 'quotas': instance.quotas, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_overview.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_overview.g.dart index f62689a7e6..7d1015dc88 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_overview.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_overview.g.dart @@ -7,17 +7,17 @@ part of 'tier_overview.dart'; // ************************************************************************** TierOverview _$TierOverviewFromJson(Map json) => TierOverview( - id: json['id'] as String, - name: json['name'] as String, - numberOfIdentities: (json['numberOfIdentities'] as num).toInt(), - canBeUsedAsDefaultForClient: json['canBeUsedAsDefaultForClient'] as bool, - canBeManuallyAssigned: json['canBeManuallyAssigned'] as bool, - ); + id: json['id'] as String, + name: json['name'] as String, + numberOfIdentities: (json['numberOfIdentities'] as num).toInt(), + canBeUsedAsDefaultForClient: json['canBeUsedAsDefaultForClient'] as bool, + canBeManuallyAssigned: json['canBeManuallyAssigned'] as bool, +); Map _$TierOverviewToJson(TierOverview instance) => { - 'id': instance.id, - 'name': instance.name, - 'numberOfIdentities': instance.numberOfIdentities, - 'canBeUsedAsDefaultForClient': instance.canBeUsedAsDefaultForClient, - 'canBeManuallyAssigned': instance.canBeManuallyAssigned, - }; + 'id': instance.id, + 'name': instance.name, + 'numberOfIdentities': instance.numberOfIdentities, + 'canBeUsedAsDefaultForClient': instance.canBeUsedAsDefaultForClient, + 'canBeManuallyAssigned': instance.canBeManuallyAssigned, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.dart index a4dd3b706f..10c906a64d 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.dart @@ -11,12 +11,7 @@ class TierQuotaDefinition { final int max; final String period; - TierQuotaDefinition({ - required this.id, - required this.metric, - required this.max, - required this.period, - }); + TierQuotaDefinition({required this.id, required this.metric, required this.max, required this.period}); factory TierQuotaDefinition.fromJson(dynamic json) => _$TierQuotaDefinitionFromJson(json as Map); Map toJson() => _$TierQuotaDefinitionToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.g.dart index 84af2f0ce2..30b5fe1582 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/tiers/tier_quota_definition.g.dart @@ -7,15 +7,15 @@ part of 'tier_quota_definition.dart'; // ************************************************************************** TierQuotaDefinition _$TierQuotaDefinitionFromJson(Map json) => TierQuotaDefinition( - id: json['id'] as String, - metric: Metric.fromJson(json['metric']), - max: (json['max'] as num).toInt(), - period: json['period'] as String, - ); + id: json['id'] as String, + metric: Metric.fromJson(json['metric']), + max: (json['max'] as num).toInt(), + period: json['period'] as String, +); Map _$TierQuotaDefinitionToJson(TierQuotaDefinition instance) => { - 'id': instance.id, - 'metric': instance.metric, - 'max': instance.max, - 'period': instance.period, - }; + 'id': instance.id, + 'metric': instance.metric, + 'max': instance.max, + 'period': instance.period, +}; From 743c0e3222c7ef838a2e08ff0dbbc3aa62faf8e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 15:51:12 +0100 Subject: [PATCH 04/11] fix: reformat new code --- .../announcement_details.dart | 38 ++++---- .../announcements_overview.dart | 64 +++++++------ .../modals/create_announcement_dialog.dart | 90 +++++-------------- .../show_announcement_details_dialog.dart | 20 +---- .../widgets/language_picker.dart | 50 ++++------- .../src/endpoints/announcements_endpoint.dart | 23 ++--- .../announcement_severity_type.dart | 7 +- .../src/announcements/announcement_text.dart | 6 +- .../announcements/announcement_text.g.dart | 15 ++-- .../announcements/announcements_overview.dart | 8 +- .../announcements_overview.g.dart | 24 ++--- .../create_announcement_response.dart | 7 +- .../create_announcement_response.g.dart | 20 ++--- 13 files changed, 134 insertions(+), 238 deletions(-) diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/announcement_details/announcement_details.dart b/Applications/AdminUi/apps/admin_ui/lib/home/announcement_details/announcement_details.dart index 362343f4b8..ab70d8cb0c 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/announcement_details/announcement_details.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/announcement_details/announcement_details.dart @@ -10,10 +10,7 @@ import '/core/core.dart'; class AnnouncementDetails extends StatefulWidget { final String announcementId; - const AnnouncementDetails({ - required this.announcementId, - super.key, - }); + const AnnouncementDetails({required this.announcementId, super.key}); @override State createState() => _AnnouncementDetailsState(); @@ -47,11 +44,7 @@ class _AnnouncementDetailsState extends State { Row( children: [ const BackButton(), - IconButton( - icon: const Icon(Icons.refresh), - onPressed: _loadAnnouncement, - tooltip: context.l10n.reload, - ), + IconButton(icon: const Icon(Icons.refresh), onPressed: _loadAnnouncement, tooltip: context.l10n.reload), ], ), Card( @@ -104,9 +97,7 @@ class _AnnouncementDetailsState extends State { class _AnnouncementsTextTable extends StatelessWidget { final List announcementTexts; - const _AnnouncementsTextTable({ - required this.announcementTexts, - }); + const _AnnouncementsTextTable({required this.announcementTexts}); @override Widget build(BuildContext context) { @@ -120,17 +111,18 @@ class _AnnouncementsTextTable extends StatelessWidget { DataColumn2(label: Text(context.l10n.title)), DataColumn2(label: Text(context.l10n.body)), ], - rows: announcementTexts - .map( - (announcementText) => DataRow( - cells: [ - DataCell(Text(AnnouncementLanguages.languages.firstWhere((language) => language.isoCode == announcementText.language).name)), - DataCell(Text(announcementText.title)), - DataCell(Text(announcementText.body)), - ], - ), - ) - .toList(), + rows: + announcementTexts + .map( + (announcementText) => DataRow( + cells: [ + DataCell(Text(AnnouncementLanguages.languages.firstWhere((language) => language.isoCode == announcementText.language).name)), + DataCell(Text(announcementText.title)), + DataCell(Text(announcementText.body)), + ], + ), + ) + .toList(), ), ), ); diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/announcements_overview.dart b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/announcements_overview.dart index e10711a0be..edf35216bd 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/announcements_overview.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/announcements_overview.dart @@ -41,11 +41,7 @@ class _AnnouncementsOverviewState extends State { mainAxisAlignment: MainAxisAlignment.end, children: [ if (kIsDesktop) - IconButton( - icon: const Icon(Icons.refresh), - onPressed: () async => _reloadAnnouncements(), - tooltip: context.l10n.reload, - ), + IconButton(icon: const Icon(Icons.refresh), onPressed: () async => _reloadAnnouncements(), tooltip: context.l10n.reload), IconButton.filled( icon: const Icon(Icons.add), onPressed: () => showCreateAnnouncementDialog(context: context, onAnnouncementCreated: _reloadAnnouncements), @@ -61,36 +57,38 @@ class _AnnouncementsOverviewState extends State { DataColumn2(label: Text(context.l10n.expiresAt)), DataColumn2(label: Text(context.l10n.announcementsOverview_severity)), ], - rows: _announcements - .map( - (announcement) => DataRow2( - onTap: () => context.go('/announcements/${announcement.id}'), - cells: [ - DataCell(Text(_getAnnouncementTitle(announcement, 'en'))), - DataCell( - Tooltip( - message: - '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.createdAt)} ${DateFormat.Hms().format(announcement.createdAt)}', - child: Text(DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.createdAt)), - ), - ), - DataCell( - Tooltip( - message: announcement.expiresAt != null - ? '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.expiresAt!)} ${DateFormat.Hms().format(announcement.expiresAt!)}' - : '', - child: Text( - announcement.expiresAt != null - ? DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.expiresAt!) - : '', + rows: + _announcements + .map( + (announcement) => DataRow2( + onTap: () => context.go('/announcements/${announcement.id}'), + cells: [ + DataCell(Text(_getAnnouncementTitle(announcement, 'en'))), + DataCell( + Tooltip( + message: + '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.createdAt)} ${DateFormat.Hms().format(announcement.createdAt)}', + child: Text(DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.createdAt)), + ), + ), + DataCell( + Tooltip( + message: + announcement.expiresAt != null + ? '${DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.expiresAt!)} ${DateFormat.Hms().format(announcement.expiresAt!)}' + : '', + child: Text( + announcement.expiresAt != null + ? DateFormat.yMd(Localizations.localeOf(context).languageCode).format(announcement.expiresAt!) + : '', + ), + ), ), - ), + DataCell(Text(announcement.severity)), + ], ), - DataCell(Text(announcement.severity)), - ], - ), - ) - .toList(), + ) + .toList(), ), ), ], diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/create_announcement_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/create_announcement_dialog.dart index 401912a580..1f437a4de6 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/create_announcement_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/create_announcement_dialog.dart @@ -8,10 +8,7 @@ import 'package:intl/intl.dart'; import '/core/core.dart'; import '../widgets/language_picker.dart'; -Future showCreateAnnouncementDialog({ - required BuildContext context, - required VoidCallback onAnnouncementCreated, -}) async { +Future showCreateAnnouncementDialog({required BuildContext context, required VoidCallback onAnnouncementCreated}) async { await showDialog( context: context, builder: (BuildContext context) => _CreateAnnouncementDialog(onAnnouncementCreated: onAnnouncementCreated), @@ -40,13 +37,7 @@ class _CreateAnnouncementDialogState extends State<_CreateAnnouncementDialog> { void initState() { super.initState(); - _announcementTextWidgets.add( - _AnnouncementTextFormWidget( - defaultLanguage: 'en', - formKey: _formKey, - onRemove: _remove, - ), - ); + _announcementTextWidgets.add(_AnnouncementTextFormWidget(defaultLanguage: 'en', formKey: _formKey, onRemove: _remove)); } @override @@ -77,13 +68,11 @@ class _CreateAnnouncementDialogState extends State<_CreateAnnouncementDialog> { Gaps.h16, DropdownButtonFormField( validator: (value) => validateRequiredField(context, value?.name), - decoration: InputDecoration( - labelText: '${context.l10n.createAnnouncementDialog_impact}*', - border: const OutlineInputBorder(), - ), - items: _severityOptions.map((severity) { - return DropdownMenuItem(value: severity, child: Text(severity.name)); - }).toList(), + decoration: InputDecoration(labelText: '${context.l10n.createAnnouncementDialog_impact}*', border: const OutlineInputBorder()), + items: + _severityOptions.map((severity) { + return DropdownMenuItem(value: severity, child: Text(severity.name)); + }).toList(), onChanged: (newValue) => setState(() => _selectedSeverity = newValue), ), Gaps.h16, @@ -129,35 +118,21 @@ class _CreateAnnouncementDialogState extends State<_CreateAnnouncementDialog> { icon: const Icon(Icons.add), onPressed: () { setState(() { - _announcementTextWidgets.add( - _AnnouncementTextFormWidget( - formKey: _formKey, - onRemove: _remove, - ), - ); + _announcementTextWidgets.add(_AnnouncementTextFormWidget(formKey: _formKey, onRemove: _remove)); }); }, ), ], ), Gaps.h16, - Column( - spacing: 16, - children: _announcementTextWidgets, - ), + Column(spacing: 16, children: _announcementTextWidgets), ], ), ), ), ), actions: [ - SizedBox( - height: 40, - child: OutlinedButton( - onPressed: () => Navigator.of(context).pop(), - child: Text(context.l10n.cancel), - ), - ), + SizedBox(height: 40, child: OutlinedButton(onPressed: () => Navigator.of(context).pop(), child: Text(context.l10n.cancel))), SizedBox( height: 40, child: FilledButton( @@ -168,17 +143,12 @@ class _CreateAnnouncementDialogState extends State<_CreateAnnouncementDialog> { for (final announcementTextWidget in _announcementTextWidgets) { final title = announcementTextWidget.titleController.text; final body = announcementTextWidget.bodyController.text; - final language = announcementTextWidget.languageController.text == '' - ? announcementTextWidget.defaultLanguage - : announcementTextWidget.languageController.text; + final language = + announcementTextWidget.languageController.text == '' + ? announcementTextWidget.defaultLanguage + : announcementTextWidget.languageController.text; - announcementTexts.add( - AnnouncementText( - title: title, - body: body, - language: language!, - ), - ); + announcementTexts.add(AnnouncementText(title: title, body: body, language: language!)); } final response = await GetIt.I.get().announcements.createAnnouncement( @@ -216,10 +186,7 @@ class _CreateAnnouncementDialogState extends State<_CreateAnnouncementDialog> { void _showSuccessSnackbar() { final snackBar = SnackBar( - content: Text( - context.l10n.createAnnouncement_announcementSuccess, - style: const TextStyle(color: Colors.white), - ), + content: Text(context.l10n.createAnnouncement_announcementSuccess, style: const TextStyle(color: Colors.white)), backgroundColor: Colors.green, duration: const Duration(seconds: 3), showCloseIcon: true, @@ -229,10 +196,7 @@ class _CreateAnnouncementDialogState extends State<_CreateAnnouncementDialog> { void _showErrorSnackbar() { final snackBar = SnackBar( - content: Text( - context.l10n.createAnnouncement_announcementError, - style: const TextStyle(color: Colors.white), - ), + content: Text(context.l10n.createAnnouncement_announcementError, style: const TextStyle(color: Colors.white)), backgroundColor: Colors.red, duration: const Duration(seconds: 3), showCloseIcon: true, @@ -245,11 +209,7 @@ class _AnnouncementTextFormWidget extends StatefulWidget { final GlobalKey formKey; final void Function(_AnnouncementTextFormWidget index) onRemove; - _AnnouncementTextFormWidget({ - required this.formKey, - required this.onRemove, - this.defaultLanguage, - }); + _AnnouncementTextFormWidget({required this.formKey, required this.onRemove, this.defaultLanguage}); @override State<_AnnouncementTextFormWidget> createState() => _AnnouncementTextFormWidgetState(); @@ -283,9 +243,7 @@ class _AnnouncementTextFormWidgetState extends State<_AnnouncementTextFormWidget if (widget.defaultLanguage == null) ...[ Row( mainAxisAlignment: MainAxisAlignment.end, - children: [ - TextButton(onPressed: () => widget.onRemove(widget), child: Text(context.l10n.remove)), - ], + children: [TextButton(onPressed: () => widget.onRemove(widget), child: Text(context.l10n.remove))], ), LanguagePicker( width: MediaQuery.of(context).size.width, @@ -301,18 +259,12 @@ class _AnnouncementTextFormWidgetState extends State<_AnnouncementTextFormWidget TextFormField( controller: widget.titleController, validator: (value) => validateRequiredField(context, value), - decoration: InputDecoration( - labelText: '${context.l10n.title}*', - border: const OutlineInputBorder(), - ), + decoration: InputDecoration(labelText: '${context.l10n.title}*', border: const OutlineInputBorder()), ), TextFormField( controller: widget.bodyController, validator: (value) => validateRequiredField(context, value), - decoration: InputDecoration( - labelText: '${context.l10n.body}*', - border: const OutlineInputBorder(), - ), + decoration: InputDecoration(labelText: '${context.l10n.body}*', border: const OutlineInputBorder()), ), ], ), diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/show_announcement_details_dialog.dart b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/show_announcement_details_dialog.dart index 78f5e13607..224b06ff50 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/show_announcement_details_dialog.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/modals/show_announcement_details_dialog.dart @@ -4,14 +4,8 @@ import 'package:go_router/go_router.dart'; import '/core/core.dart'; -Future showAnnouncementDetailsDialog({ - required BuildContext context, - required List announcementTexts, -}) async { - await showDialog( - context: context, - builder: (BuildContext context) => _AnnouncementTextDialog(announcementTexts: announcementTexts), - ); +Future showAnnouncementDetailsDialog({required BuildContext context, required List announcementTexts}) async { + await showDialog(context: context, builder: (BuildContext context) => _AnnouncementTextDialog(announcementTexts: announcementTexts)); } class _AnnouncementTextDialog extends StatelessWidget { @@ -38,15 +32,7 @@ class _AnnouncementTextDialog extends StatelessWidget { ], ), ), - actions: [ - SizedBox( - height: 40, - child: OutlinedButton( - child: Text(context.l10n.close), - onPressed: () => context.pop(), - ), - ), - ], + actions: [SizedBox(height: 40, child: OutlinedButton(child: Text(context.l10n.close), onPressed: () => context.pop()))], ), ); } diff --git a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/widgets/language_picker.dart b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/widgets/language_picker.dart index daeb88c1ed..6d1d39e505 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/widgets/language_picker.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/home/announcements_overview/widgets/language_picker.dart @@ -7,22 +7,16 @@ class LanguagePicker extends StatelessWidget { final ValueChanged onLanguageChanged; final double? width; - const LanguagePicker({ - required this.labelText, - required this.onLanguageChanged, - super.key, - this.validator, - this.width, - }); + const LanguagePicker({required this.labelText, required this.onLanguageChanged, super.key, this.validator, this.width}); @override Widget build(BuildContext context) { - final languageOptions = AnnouncementLanguages.languages.toList() - ..sort((a, b) { - if (a.isoCode == 'de') return -1; - if (b.isoCode == 'de') return 1; - return a.name.compareTo(b.name); - }); + final languageOptions = + AnnouncementLanguages.languages.toList()..sort((a, b) { + if (a.isoCode == 'de') return -1; + if (b.isoCode == 'de') return 1; + return a.name.compareTo(b.name); + }); return FormField( validator: validator, builder: (fieldState) { @@ -33,26 +27,20 @@ class LanguagePicker extends StatelessWidget { menuHeight: MediaQuery.of(context).size.height * 0.3, expandedInsets: EdgeInsets.zero, errorText: fieldState.errorText, - inputDecorationTheme: fieldState.hasError - ? InputDecorationTheme( - border: OutlineInputBorder(borderSide: BorderSide(color: Theme.of(context).colorScheme.error)), - enabledBorder: OutlineInputBorder(borderSide: BorderSide(color: Theme.of(context).colorScheme.error)), - ) - : const InputDecorationTheme( - border: OutlineInputBorder(), - ), - label: Text( - labelText, - style: fieldState.hasError ? TextStyle(color: Theme.of(context).colorScheme.error) : null, - ), + inputDecorationTheme: + fieldState.hasError + ? InputDecorationTheme( + border: OutlineInputBorder(borderSide: BorderSide(color: Theme.of(context).colorScheme.error)), + enabledBorder: OutlineInputBorder(borderSide: BorderSide(color: Theme.of(context).colorScheme.error)), + ) + : const InputDecorationTheme(border: OutlineInputBorder()), + label: Text(labelText, style: fieldState.hasError ? TextStyle(color: Theme.of(context).colorScheme.error) : null), requestFocusOnTap: true, enableFilter: true, - dropdownMenuEntries: languageOptions.map((language) { - return DropdownMenuEntry( - value: language.isoCode, - label: language.name, - ); - }).toList(), + dropdownMenuEntries: + languageOptions.map((language) { + return DropdownMenuEntry(value: language.isoCode, label: language.name); + }).toList(), onSelected: (String? selectedLanguageIsoCode) { if (selectedLanguageIsoCode != null) { onLanguageChanged(selectedLanguageIsoCode); diff --git a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/announcements_endpoint.dart b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/announcements_endpoint.dart index 96a10bce3d..c7419d35c3 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/announcements_endpoint.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/lib/src/endpoints/announcements_endpoint.dart @@ -6,25 +6,20 @@ import 'endpoint.dart'; class AnnouncementsEndpoint extends Endpoint { AnnouncementsEndpoint(super.dio); - Future>> getAnnouncements() => get( - '/api/v1/Announcements', - transformer: (e) => (e as List).map(Announcement.fromJson).toList(), - ); + Future>> getAnnouncements() => + get('/api/v1/Announcements', transformer: (e) => (e as List).map(Announcement.fromJson).toList()); - Future> getAnnouncement(String announcementId) => get( - '/api/v1/Announcements/$announcementId', - transformer: Announcement.fromJson, - ); + Future> getAnnouncement(String announcementId) => + get('/api/v1/Announcements/$announcementId', transformer: Announcement.fromJson); Future> createAnnouncement({ required AnnouncementSeverity severity, required List announcementTexts, String? expiresAt, List? recipients, - }) => - post( - '/api/v1/Announcements', - data: {'expiresAt': expiresAt, 'severity': severity.name, 'texts': announcementTexts, 'recipients': recipients}, - transformer: CreateAnnouncementResponse.fromJson, - ); + }) => post( + '/api/v1/Announcements', + data: {'expiresAt': expiresAt, 'severity': severity.name, 'texts': announcementTexts, 'recipients': recipients}, + transformer: CreateAnnouncementResponse.fromJson, + ); } diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_severity_type.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_severity_type.dart index 5614824b9e..32a4c2e692 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_severity_type.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_severity_type.dart @@ -3,6 +3,9 @@ enum AnnouncementSeverity { medium, high; - String get name => - switch (this) { AnnouncementSeverity.low => 'Low', AnnouncementSeverity.medium => 'Medium', AnnouncementSeverity.high => 'High' }; + String get name => switch (this) { + AnnouncementSeverity.low => 'Low', + AnnouncementSeverity.medium => 'Medium', + AnnouncementSeverity.high => 'High', + }; } diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.dart index 222702a03b..71b9cb45c6 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.dart @@ -10,11 +10,7 @@ class AnnouncementText { final String title; final String body; - AnnouncementText({ - required this.language, - required this.title, - required this.body, - }); + AnnouncementText({required this.language, required this.title, required this.body}); factory AnnouncementText.fromJson(dynamic json) => _$AnnouncementTextFromJson(json as Map); Map toJson() => _$AnnouncementTextToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.g.dart index 7f219e4611..699e7511eb 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcement_text.g.dart @@ -6,14 +6,11 @@ part of 'announcement_text.dart'; // JsonSerializableGenerator // ************************************************************************** -AnnouncementText _$AnnouncementTextFromJson(Map json) => AnnouncementText( - language: json['language'] as String, - title: json['title'] as String, - body: json['body'] as String, - ); +AnnouncementText _$AnnouncementTextFromJson(Map json) => + AnnouncementText(language: json['language'] as String, title: json['title'] as String, body: json['body'] as String); Map _$AnnouncementTextToJson(AnnouncementText instance) => { - 'language': instance.language, - 'title': instance.title, - 'body': instance.body, - }; + 'language': instance.language, + 'title': instance.title, + 'body': instance.body, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.dart index 677f8a6500..6ac112f0f0 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.dart @@ -14,13 +14,7 @@ class Announcement { final String severity; final List texts; - Announcement({ - required this.id, - required this.createdAt, - required this.expiresAt, - required this.severity, - required this.texts, - }); + Announcement({required this.id, required this.createdAt, required this.expiresAt, required this.severity, required this.texts}); factory Announcement.fromJson(dynamic json) => _$AnnouncementFromJson(json as Map); Map toJson() => _$AnnouncementToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.g.dart index d3990b6330..025d7c6303 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/announcements_overview.g.dart @@ -7,17 +7,17 @@ part of 'announcements_overview.dart'; // ************************************************************************** Announcement _$AnnouncementFromJson(Map json) => Announcement( - id: json['id'] as String, - createdAt: DateTime.parse(json['createdAt'] as String), - expiresAt: json['expiresAt'] == null ? null : DateTime.parse(json['expiresAt'] as String), - severity: json['severity'] as String, - texts: (json['texts'] as List).map(AnnouncementText.fromJson).toList(), - ); + id: json['id'] as String, + createdAt: DateTime.parse(json['createdAt'] as String), + expiresAt: json['expiresAt'] == null ? null : DateTime.parse(json['expiresAt'] as String), + severity: json['severity'] as String, + texts: (json['texts'] as List).map(AnnouncementText.fromJson).toList(), +); Map _$AnnouncementToJson(Announcement instance) => { - 'id': instance.id, - 'createdAt': instance.createdAt.toIso8601String(), - 'expiresAt': instance.expiresAt?.toIso8601String(), - 'severity': instance.severity, - 'texts': instance.texts, - }; + 'id': instance.id, + 'createdAt': instance.createdAt.toIso8601String(), + 'expiresAt': instance.expiresAt?.toIso8601String(), + 'severity': instance.severity, + 'texts': instance.texts, +}; diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.dart index 901b1acc41..1911a73965 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.dart @@ -11,12 +11,7 @@ class CreateAnnouncementResponse { final List texts; final List? recipients; - CreateAnnouncementResponse({ - required this.severity, - required this.texts, - this.recipients, - this.expiresAt, - }); + CreateAnnouncementResponse({required this.severity, required this.texts, this.recipients, this.expiresAt}); factory CreateAnnouncementResponse.fromJson(dynamic json) => _$CreateAnnouncementResponseFromJson(json as Map); Map toJson() => _$CreateAnnouncementResponseToJson(this); diff --git a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.g.dart b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.g.dart index 1be105a062..d7510ff65d 100644 --- a/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.g.dart +++ b/Applications/AdminUi/packages/admin_api_types/lib/src/announcements/create_announcement_response.g.dart @@ -7,15 +7,15 @@ part of 'create_announcement_response.dart'; // ************************************************************************** CreateAnnouncementResponse _$CreateAnnouncementResponseFromJson(Map json) => CreateAnnouncementResponse( - severity: json['severity'] as String, - texts: (json['texts'] as List).map(AnnouncementText.fromJson).toList(), - recipients: (json['recipients'] as List?)?.map((e) => e as String).toList(), - expiresAt: json['expiresAt'] == null ? null : DateTime.parse(json['expiresAt'] as String), - ); + severity: json['severity'] as String, + texts: (json['texts'] as List).map(AnnouncementText.fromJson).toList(), + recipients: (json['recipients'] as List?)?.map((e) => e as String).toList(), + expiresAt: json['expiresAt'] == null ? null : DateTime.parse(json['expiresAt'] as String), +); Map _$CreateAnnouncementResponseToJson(CreateAnnouncementResponse instance) => { - 'expiresAt': instance.expiresAt?.toIso8601String(), - 'severity': instance.severity, - 'texts': instance.texts, - 'recipients': instance.recipients, - }; + 'expiresAt': instance.expiresAt?.toIso8601String(), + 'severity': instance.severity, + 'texts': instance.texts, + 'recipients': instance.recipients, +}; From d0e0d9df745c08ea1d960eb252791a6f3c90236e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 15:54:06 +0100 Subject: [PATCH 05/11] fix: install flutter ourselves --- Applications/AdminApi/src/AdminApi/Dockerfile | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index dc4ad85b8b..5c5a43cdd8 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -102,7 +102,20 @@ RUN dotnet publish /p:ContinuousIntegrationBuild=true /p:UseAppHost=false --no-r RUN dotnet publish /p:ContinuousIntegrationBuild=true --configuration Release --output /app/publish/health "/src/Applications/HealthCheck/src/HealthCheck.csproj" #### Build Flutter Admin UI #### -FROM ghcr.io/cirruslabs/flutter:3.27.3 AS flutter-build-env +FROM ghcr.io/cirruslabs/android-sdk:34 + +USER root + +ENV FLUTTER_HOME=${HOME}/sdks/flutter +ENV FLUTTER_VERSION=3.29.0 +ENV FLUTTER_ROOT=$FLUTTER_HOME +ENV PATH ${PATH}:${FLUTTER_HOME}/bin:${FLUTTER_HOME}/bin/cache/dart-sdk/bin + +RUN git clone --depth 1 --branch ${FLUTTER_VERSION} https://github.com/flutter/flutter.git ${FLUTTER_HOME} + +RUN yes | flutter doctor --android-licenses \ + && flutter doctor \ + && chown -R root:root ${FLUTTER_HOME} COPY Applications/AdminUi /src WORKDIR /src From 6826361405e5b58115f386c78be27a0c238b718d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 15:56:09 +0100 Subject: [PATCH 06/11] fix: re-add flutter-build-env --- Applications/AdminApi/src/AdminApi/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index 5c5a43cdd8..b651d0d021 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -102,7 +102,7 @@ RUN dotnet publish /p:ContinuousIntegrationBuild=true /p:UseAppHost=false --no-r RUN dotnet publish /p:ContinuousIntegrationBuild=true --configuration Release --output /app/publish/health "/src/Applications/HealthCheck/src/HealthCheck.csproj" #### Build Flutter Admin UI #### -FROM ghcr.io/cirruslabs/android-sdk:34 +FROM ghcr.io/cirruslabs/android-sdk:34 AS flutter-build-env USER root From 03eabeb24fa92b31aa5ce62f73d169170e99456a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 16:31:21 +0100 Subject: [PATCH 07/11] fix: install flutter using curl --- Applications/AdminApi/src/AdminApi/Dockerfile | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index b651d0d021..1f0844b635 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -106,17 +106,17 @@ FROM ghcr.io/cirruslabs/android-sdk:34 AS flutter-build-env USER root -ENV FLUTTER_HOME=${HOME}/sdks/flutter -ENV FLUTTER_VERSION=3.29.0 +ENV FLUTTER_HOME=/sdks/flutter ENV FLUTTER_ROOT=$FLUTTER_HOME -ENV PATH ${PATH}:${FLUTTER_HOME}/bin:${FLUTTER_HOME}/bin/cache/dart-sdk/bin +ENV PATH=${PATH}:${FLUTTER_HOME}/bin:${FLUTTER_HOME}/bin/cache/dart-sdk/bin -RUN git clone --depth 1 --branch ${FLUTTER_VERSION} https://github.com/flutter/flutter.git ${FLUTTER_HOME} - -RUN yes | flutter doctor --android-licenses \ - && flutter doctor \ +RUN curl -sLO https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.29.0-stable.tar.xz \ + && mkdir -p ${FLUTTER_HOME} \ + && tar -xf flutter_linux_3.29.0-stable.tar.xz -C /sdks/ \ && chown -R root:root ${FLUTTER_HOME} +RUN flutter doctor + COPY Applications/AdminUi /src WORKDIR /src RUN dart pub global activate melos From bd41751f531c9905de5c60042bd30770d7baf499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 16:38:06 +0100 Subject: [PATCH 08/11] fix: migrate away from synthetic package --- Applications/AdminUi/apps/admin_ui/.gitignore | 3 +++ Applications/AdminUi/apps/admin_ui/l10n.yaml | 3 +++ Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart | 2 +- Applications/AdminUi/apps/admin_ui/lib/main.dart | 2 +- Applications/AdminUi/apps/admin_ui/pubspec.yaml | 1 - 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/Applications/AdminUi/apps/admin_ui/.gitignore b/Applications/AdminUi/apps/admin_ui/.gitignore index 717abbc27d..864bf24b1b 100644 --- a/Applications/AdminUi/apps/admin_ui/.gitignore +++ b/Applications/AdminUi/apps/admin_ui/.gitignore @@ -42,3 +42,6 @@ app.*.map.json /android/app/debug /android/app/profile /android/app/release + +# generated files +lib/generated/ diff --git a/Applications/AdminUi/apps/admin_ui/l10n.yaml b/Applications/AdminUi/apps/admin_ui/l10n.yaml index bc0d6a2c3e..4c0205aae5 100644 --- a/Applications/AdminUi/apps/admin_ui/l10n.yaml +++ b/Applications/AdminUi/apps/admin_ui/l10n.yaml @@ -1,4 +1,7 @@ +synthetic-package: false arb-dir: lib/l10n +output-dir: lib/generated/l10n template-arb-file: app_en.arb output-localization-file: app_localizations.dart +preferred-supported-locales: [en] use-escaping: false diff --git a/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart b/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart index dac520f3e6..4b314d429d 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/core/extensions.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:get_it/get_it.dart'; +import '../generated/l10n/app_localizations.dart'; import 'theme/theme.dart'; extension AppLocalizationsExtension on BuildContext { diff --git a/Applications/AdminUi/apps/admin_ui/lib/main.dart b/Applications/AdminUi/apps/admin_ui/lib/main.dart index 0dff74d060..83fcf2a945 100644 --- a/Applications/AdminUi/apps/admin_ui/lib/main.dart +++ b/Applications/AdminUi/apps/admin_ui/lib/main.dart @@ -1,13 +1,13 @@ import 'package:admin_api_sdk/admin_api_sdk.dart'; import 'package:data_table_2/data_table_2.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:go_router/go_router.dart'; import 'package:logger/logger.dart'; import 'package:watch_it/watch_it.dart'; import 'core/models/models.dart'; import 'core/theme/theme.dart'; +import 'generated/l10n/app_localizations.dart'; import 'home/home.dart'; import 'screens/screens.dart'; import 'setup/setup_desktop.dart' if (dart.library.html) 'setup/setup_web.dart' if (dart.library.js_interop) 'setup/setup_web.dart'; diff --git a/Applications/AdminUi/apps/admin_ui/pubspec.yaml b/Applications/AdminUi/apps/admin_ui/pubspec.yaml index a45ef9a0d9..575d0f62f7 100644 --- a/Applications/AdminUi/apps/admin_ui/pubspec.yaml +++ b/Applications/AdminUi/apps/admin_ui/pubspec.yaml @@ -40,7 +40,6 @@ dev_dependencies: very_good_analysis: ^7.0.0 flutter: - generate: true uses-material-design: true assets: - assets/logo.svg From 68c6e844c876aaf93ee7533adde4803e279d0f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 16:42:47 +0100 Subject: [PATCH 09/11] fix: generate translations --- .ci/aui/runChecks.sh | 1 + Applications/AdminApi/src/AdminApi/Dockerfile | 1 + Applications/AdminUi/melos.yaml | 4 ++++ 3 files changed, 6 insertions(+) diff --git a/.ci/aui/runChecks.sh b/.ci/aui/runChecks.sh index 916ca45c78..456df2fa61 100755 --- a/.ci/aui/runChecks.sh +++ b/.ci/aui/runChecks.sh @@ -6,5 +6,6 @@ INITIAL_DIR=$(pwd) cd Applications/AdminUi dart pub global activate melos melos bootstrap +melos generate_translations melos analyze melos format diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index 1f0844b635..45f8dcbaf6 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -121,6 +121,7 @@ COPY Applications/AdminUi /src WORKDIR /src RUN dart pub global activate melos RUN dart pub global run melos:melos bootstrap +RUN dart pub global run melos:melos generate_translations WORKDIR /src/apps/admin_ui RUN flutter build web --output /build diff --git a/Applications/AdminUi/melos.yaml b/Applications/AdminUi/melos.yaml index b64b6ee6ab..816b3c1409 100644 --- a/Applications/AdminUi/melos.yaml +++ b/Applications/AdminUi/melos.yaml @@ -26,3 +26,7 @@ scripts: outdated: run: melos exec -c 1 --no-flutter -- "dart pub outdated" && melos exec -c 1 --flutter -- "flutter pub outdated" description: Run `dart pub outdated` in all packages + + generate_translations: + run: melos exec --dir-exists=lib/l10n --flutter -- "flutter gen-l10n && dart format lib/generated/l10n" + description: Generate translations in all packages From 054406a4d2c44a0868b85d960876f7008e81f8d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 16:44:51 +0100 Subject: [PATCH 10/11] fix: satisfy analyzer --- Applications/AdminUi/analysis_options.yaml | 1 + .../packages/admin_api_sdk/example/admin_api_sdk_example.dart | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Applications/AdminUi/analysis_options.yaml b/Applications/AdminUi/analysis_options.yaml index 2aa42e0d2c..d27ce64380 100644 --- a/Applications/AdminUi/analysis_options.yaml +++ b/Applications/AdminUi/analysis_options.yaml @@ -7,6 +7,7 @@ linter: public_member_api_docs: false always_use_package_imports: false avoid_setters_without_getters: false + require_trailing_commas: false formatter: page_width: 150 diff --git a/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart b/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart index 3eb94d420b..e9b777a343 100644 --- a/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart +++ b/Applications/AdminUi/packages/admin_api_sdk/example/admin_api_sdk_example.dart @@ -1,4 +1,4 @@ -// ignore_for_file: avoid_print +// ignore_for_file: avoid_print is's only an example file import 'dart:io'; From 37f035ff597af8e92638a659c672a639df9bd300 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julian=20K=C3=B6nig?= Date: Thu, 27 Feb 2025 16:51:41 +0100 Subject: [PATCH 11/11] chore: remove command --- Applications/AdminApi/src/AdminApi/Dockerfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Applications/AdminApi/src/AdminApi/Dockerfile b/Applications/AdminApi/src/AdminApi/Dockerfile index 45f8dcbaf6..1f0844b635 100644 --- a/Applications/AdminApi/src/AdminApi/Dockerfile +++ b/Applications/AdminApi/src/AdminApi/Dockerfile @@ -121,7 +121,6 @@ COPY Applications/AdminUi /src WORKDIR /src RUN dart pub global activate melos RUN dart pub global run melos:melos bootstrap -RUN dart pub global run melos:melos generate_translations WORKDIR /src/apps/admin_ui RUN flutter build web --output /build