From 4651bbca47596843369f0f66842f6a51e258e410 Mon Sep 17 00:00:00 2001 From: Arthi-chaud Date: Wed, 9 Feb 2022 13:54:14 +0100 Subject: [PATCH] Mobile Client: Reanme app package --- mobile/lib/aeris.dart | 8 +- mobile/lib/src/main.dart | 20 +-- mobile/lib/src/models/action.dart | 3 +- mobile/lib/src/models/pipeline.dart | 4 +- .../lib/src/models/pipeline_collection.dart | 5 +- mobile/lib/src/models/reaction.dart | 16 +- mobile/lib/src/models/trigger.dart | 6 +- mobile/lib/src/models/user_service.dart | 13 +- .../lib/src/providers/pipelines_provider.dart | 10 +- .../src/providers/user_services_provider.dart | 41 ++--- .../lib/src/views/create_pipeline_page.dart | 20 +-- mobile/lib/src/views/home_page.dart | 148 +++++++++--------- mobile/lib/src/views/login_page.dart | 7 +- .../lib/src/views/pipeline_detail_page.dart | 20 +-- mobile/lib/src/views/service_page.dart | 17 +- mobile/lib/src/views/setup_action_page.dart | 10 +- .../src/widgets/action_card_popup_menu.dart | 9 +- mobile/lib/src/widgets/aeris_page.dart | 37 ++--- .../src/widgets/colored_clickable_card.dart | 39 ++--- mobile/lib/src/widgets/home_page_menu.dart | 5 +- .../lib/src/widgets/home_page_sort_menu.dart | 8 +- mobile/lib/src/widgets/pipeline_card.dart | 129 +++++++-------- mobile/pubspec.yaml | 2 +- mobile/test/widget_test.dart | 2 +- 24 files changed, 289 insertions(+), 290 deletions(-) diff --git a/mobile/lib/aeris.dart b/mobile/lib/aeris.dart index 4fa9483..757aa3e 100644 --- a/mobile/lib/aeris.dart +++ b/mobile/lib/aeris.dart @@ -1,8 +1,8 @@ library aeris; -export 'package:mobile/src/views/startup_page.dart'; +export 'package:aeris/src/views/startup_page.dart'; -export 'package:mobile/src/widgets/overlayed_texts.dart'; +export 'package:aeris/src/widgets/overlayed_texts.dart'; -export 'package:mobile/src/widgets/background/anim_painter.dart'; -export 'package:mobile/src/widgets/background/custom_animation.dart'; \ No newline at end of file +export 'package:aeris/src/widgets/background/anim_painter.dart'; +export 'package:aeris/src/widgets/background/custom_animation.dart'; diff --git a/mobile/lib/src/main.dart b/mobile/lib/src/main.dart index 7a343ab..1f7959f 100644 --- a/mobile/lib/src/main.dart +++ b/mobile/lib/src/main.dart @@ -1,15 +1,15 @@ import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:form_builder_validators/localization/l10n.dart'; -import 'package:mobile/src/providers/pipelines_provider.dart'; -import 'package:mobile/src/providers/user_services_provider.dart'; -import 'package:mobile/src/views/create_pipeline_page.dart'; -import 'package:mobile/src/views/pipeline_detail_page.dart'; -import 'package:mobile/src/views/service_page.dart'; -import 'package:mobile/src/views/setup_action_page.dart'; -import 'package:mobile/src/views/startup_page.dart'; -import 'package:mobile/src/views/login_page.dart'; -import 'package:mobile/src/views/home_page.dart'; -import 'package:mobile/src/constants.dart'; +import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/providers/user_services_provider.dart'; +import 'package:aeris/src/views/create_pipeline_page.dart'; +import 'package:aeris/src/views/pipeline_detail_page.dart'; +import 'package:aeris/src/views/service_page.dart'; +import 'package:aeris/src/views/setup_action_page.dart'; +import 'package:aeris/src/views/startup_page.dart'; +import 'package:aeris/src/views/login_page.dart'; +import 'package:aeris/src/views/home_page.dart'; +import 'package:aeris/src/constants.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/mobile/lib/src/models/action.dart b/mobile/lib/src/models/action.dart index 4d34a12..0e675c5 100644 --- a/mobile/lib/src/models/action.dart +++ b/mobile/lib/src/models/action.dart @@ -1,5 +1,5 @@ import 'package:flutter/widgets.dart'; -import 'package:mobile/src/models/service.dart'; +import 'package:aeris/src/models/service.dart'; ///Base class for reactions and trigger abstract class Action { @@ -16,5 +16,4 @@ abstract class Action { required this.service, required this.name, this.parameters = const {}}); - } diff --git a/mobile/lib/src/models/pipeline.dart b/mobile/lib/src/models/pipeline.dart index edafad9..be194ed 100644 --- a/mobile/lib/src/models/pipeline.dart +++ b/mobile/lib/src/models/pipeline.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/models/reaction.dart'; -import 'package:mobile/src/models/trigger.dart'; +import 'package:aeris/src/models/reaction.dart'; +import 'package:aeris/src/models/trigger.dart'; /// Object representation of a pipeline class Pipeline { diff --git a/mobile/lib/src/models/pipeline_collection.dart b/mobile/lib/src/models/pipeline_collection.dart index 3f7cbe5..456a4dc 100644 --- a/mobile/lib/src/models/pipeline_collection.dart +++ b/mobile/lib/src/models/pipeline_collection.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/models/pipeline.dart'; +import 'package:aeris/src/models/pipeline.dart'; /// enum PipelineCollectionSort { last, triggerCount, name, triggeringService } @@ -30,7 +30,8 @@ class PipelineCollection { int Function(Pipeline, Pipeline) sortingFunction; enabled = pipelines.where((pipeline) => pipeline.enabled).toList(); - disabled = pipelines.where((pipeline) => pipeline.enabled == false).toList(); + disabled = + pipelines.where((pipeline) => pipeline.enabled == false).toList(); if (sortingSplitDisabled == false) { enabled.addAll(disabled); disabled.clear(); diff --git a/mobile/lib/src/models/reaction.dart b/mobile/lib/src/models/reaction.dart index 5dde37d..1ecb583 100644 --- a/mobile/lib/src/models/reaction.dart +++ b/mobile/lib/src/models/reaction.dart @@ -1,6 +1,6 @@ -import 'package:mobile/src/models/action.dart' as aeris_action; +import 'package:aeris/src/models/action.dart' as aeris_action; import 'package:flutter/widgets.dart'; -import 'package:mobile/src/models/service.dart'; +import 'package:aeris/src/models/service.dart'; ///Object representation of a reaction class Reaction extends aeris_action.Action { @@ -10,16 +10,18 @@ class Reaction extends aeris_action.Action { required String name, Map parameters = const {}}) : super(service: service, name: name, parameters: parameters); - - /// Template trigger, used as an 'empty' trigger - Reaction.template(): super(service: Service.all()[0], name: '', parameters: {}); - @override + /// Template trigger, used as an 'empty' trigger + Reaction.template() + : super(service: Service.all()[0], name: '', parameters: {}); + + @override bool operator ==(Object other) { Reaction otherReaction = other as Reaction; return service.name == otherReaction.service.name && name == otherReaction.name && - parameters.values.toString() == otherReaction.parameters.values.toString() && + parameters.values.toString() == + otherReaction.parameters.values.toString() && parameters.keys.toString() == otherReaction.parameters.keys.toString(); } } diff --git a/mobile/lib/src/models/trigger.dart b/mobile/lib/src/models/trigger.dart index c07273a..32d0e5d 100644 --- a/mobile/lib/src/models/trigger.dart +++ b/mobile/lib/src/models/trigger.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/main.dart'; -import 'package:mobile/src/models/service.dart'; -import 'package:mobile/src/models/action.dart' as aeris_action; +import 'package:aeris/src/main.dart'; +import 'package:aeris/src/models/service.dart'; +import 'package:aeris/src/models/action.dart' as aeris_action; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; ///Object representation of a pipeline trigger diff --git a/mobile/lib/src/models/user_service.dart b/mobile/lib/src/models/user_service.dart index c17efa5..195bf1c 100644 --- a/mobile/lib/src/models/user_service.dart +++ b/mobile/lib/src/models/user_service.dart @@ -1,9 +1,8 @@ // Class for a service related to a user (Youtube, Gmail, ...) -import 'package:mobile/src/models/service.dart'; +import 'package:aeris/src/models/service.dart'; import 'package:flutter/cupertino.dart'; class UserService { - /// Service name related to the user final Service serviceProvider; @@ -21,9 +20,9 @@ class UserService { UserService( {Key? key, - required this.serviceAccountId, - required this.accountUsername, - required this.accountSlug, - required this.userExternalToken, - required this.serviceProvider}); + required this.serviceAccountId, + required this.accountUsername, + required this.accountSlug, + required this.userExternalToken, + required this.serviceProvider}); } diff --git a/mobile/lib/src/providers/pipelines_provider.dart b/mobile/lib/src/providers/pipelines_provider.dart index 883b90e..93987d7 100644 --- a/mobile/lib/src/providers/pipelines_provider.dart +++ b/mobile/lib/src/providers/pipelines_provider.dart @@ -1,9 +1,9 @@ -import 'package:mobile/src/models/pipeline.dart'; +import 'package:aeris/src/models/pipeline.dart'; import 'package:flutter/cupertino.dart'; -import 'package:mobile/src/models/pipeline_collection.dart'; -import 'package:mobile/src/models/reaction.dart'; -import 'package:mobile/src/models/service.dart'; -import 'package:mobile/src/models/trigger.dart'; +import 'package:aeris/src/models/pipeline_collection.dart'; +import 'package:aeris/src/models/reaction.dart'; +import 'package:aeris/src/models/service.dart'; +import 'package:aeris/src/models/trigger.dart'; /// Provider class for Pipelines class PipelineProvider extends ChangeNotifier { diff --git a/mobile/lib/src/providers/user_services_provider.dart b/mobile/lib/src/providers/user_services_provider.dart index 8a97cf1..1c941d7 100644 --- a/mobile/lib/src/providers/user_services_provider.dart +++ b/mobile/lib/src/providers/user_services_provider.dart @@ -1,10 +1,9 @@ -import 'package:mobile/src/models/user_service.dart'; -import 'package:mobile/src/models/service.dart'; +import 'package:aeris/src/models/user_service.dart'; +import 'package:aeris/src/models/service.dart'; import 'package:flutter/cupertino.dart'; /// Provider used to store every Service related to the User class UserServiceProvider extends ChangeNotifier { - /// List of [Service] related to the user List userServices = []; @@ -15,14 +14,17 @@ class UserServiceProvider extends ChangeNotifier { } /// Creates a new service related to the user - createUserService(Service serviceToSet, {String accountId = "", String accUsername = "", String accountSlug = "", String externalToken = ""}) { + createUserService(Service serviceToSet, + {String accountId = "", + String accUsername = "", + String accountSlug = "", + String externalToken = ""}) { UserService newService = UserService( - serviceAccountId: accountId, - accountUsername: accUsername, - accountSlug: accountSlug, - userExternalToken: externalToken, - serviceProvider: serviceToSet - ); + serviceAccountId: accountId, + accountUsername: accUsername, + accountSlug: accountSlug, + userExternalToken: externalToken, + serviceProvider: serviceToSet); userServices.add(newService); // notifyListeners(); /// TODO Get the notifyListeners method back. } @@ -35,18 +37,19 @@ class UserServiceProvider extends ChangeNotifier { } /// Modifies a service given as argument - modifyService(UserService toModify, String serviceAccountId, String accountUsername, String accountSlug, String userExternalToken) { + modifyService(UserService toModify, String serviceAccountId, + String accountUsername, String accountSlug, String userExternalToken) { for (int i = 0; i < userServices.length; i++) { - if (userServices[i].serviceProvider.name == toModify.serviceProvider.name && + if (userServices[i].serviceProvider.name == + toModify.serviceProvider.name && userServices[i].serviceAccountId == toModify.serviceAccountId && userServices[i].userExternalToken == toModify.userExternalToken) { UserService newService = UserService( - serviceProvider: userServices[i].serviceProvider, - serviceAccountId: serviceAccountId, - accountUsername: accountUsername, - accountSlug: accountSlug, - userExternalToken: userExternalToken - ); + serviceProvider: userServices[i].serviceProvider, + serviceAccountId: serviceAccountId, + accountUsername: accountUsername, + accountSlug: accountSlug, + userExternalToken: userExternalToken); userServices[i] = newService; notifyListeners(); return true; @@ -74,4 +77,4 @@ class UserServiceProvider extends ChangeNotifier { userServices.clear(); notifyListeners(); } -} \ No newline at end of file +} diff --git a/mobile/lib/src/views/create_pipeline_page.dart b/mobile/lib/src/views/create_pipeline_page.dart index 9c67822..6f41a61 100644 --- a/mobile/lib/src/views/create_pipeline_page.dart +++ b/mobile/lib/src/views/create_pipeline_page.dart @@ -1,16 +1,16 @@ import 'package:flutter/material.dart'; import 'package:form_builder_validators/form_builder_validators.dart'; -import 'package:mobile/src/models/pipeline.dart'; -import 'package:mobile/src/models/reaction.dart'; -import 'package:mobile/src/models/trigger.dart'; -import 'package:mobile/src/providers/pipelines_provider.dart'; -import 'package:mobile/src/views/pipeline_detail_page.dart'; -import 'package:mobile/src/views/setup_action_page.dart'; -import 'package:mobile/src/widgets/action_card.dart'; -import 'package:mobile/src/widgets/action_card_popup_menu.dart'; -import 'package:mobile/src/widgets/aeris_card_page.dart'; +import 'package:aeris/src/models/pipeline.dart'; +import 'package:aeris/src/models/reaction.dart'; +import 'package:aeris/src/models/trigger.dart'; +import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/views/pipeline_detail_page.dart'; +import 'package:aeris/src/views/setup_action_page.dart'; +import 'package:aeris/src/widgets/action_card.dart'; +import 'package:aeris/src/widgets/action_card_popup_menu.dart'; +import 'package:aeris/src/widgets/aeris_card_page.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart'; -import 'package:mobile/src/widgets/colored_clickable_card.dart'; +import 'package:aeris/src/widgets/colored_clickable_card.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/mobile/lib/src/views/home_page.dart b/mobile/lib/src/views/home_page.dart index b07fc97..340d603 100644 --- a/mobile/lib/src/views/home_page.dart +++ b/mobile/lib/src/views/home_page.dart @@ -1,12 +1,12 @@ import 'dart:ui'; import 'package:flutter/material.dart'; -import 'package:mobile/src/providers/pipelines_provider.dart'; -import 'package:mobile/src/widgets/aeris_page.dart'; -import 'package:mobile/src/widgets/home_page_menu.dart'; -import 'package:mobile/src/widgets/clickable_card.dart'; -import 'package:mobile/src/widgets/home_page_sort_menu.dart'; -import 'package:mobile/src/widgets/loading_widget.dart'; -import 'package:mobile/src/widgets/pipeline_card.dart'; +import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/widgets/aeris_page.dart'; +import 'package:aeris/src/widgets/home_page_menu.dart'; +import 'package:aeris/src/widgets/clickable_card.dart'; +import 'package:aeris/src/widgets/home_page_sort_menu.dart'; +import 'package:aeris/src/widgets/loading_widget.dart'; +import 'package:aeris/src/widgets/pipeline_card.dart'; import 'package:provider/provider.dart'; /// [StatefulWidget] used to display [HomePage] interface @@ -25,70 +25,76 @@ class _HomePageState extends State { Widget build(BuildContext context) { ScrollController listController = ScrollController(); return Consumer( - builder: (context, provider, _) => AerisPage( - actions: [ - HomePageSortMenu( - collectionProvider: provider, - ), - const HomePageMenu() - ], - body: NotificationListener( - onNotification: (notification) { - if (listController.position.atEdge) { - if (listController.position.pixels == 0) { - print("Loading"); - setState(() { - loading = true; - }); - Future.delayed(const Duration(seconds: 2)).then((_) => setState(() { - loading = false; - print("Loaded"); - })); - // TODO Call API - } - } - return true; - }, - child: Stack( - children: [ - ListView.builder( - padding: const EdgeInsets.only(top: 20, bottom: 20, left: 10, right: 10), - controller: listController, - itemCount: provider.pipelineCollection.pipelines.length + 1, - itemBuilder: (BuildContext context, int index) { - if (index == provider.pipelineCollection.pipelines.length) { - return ClickableCard( - color: Theme.of(context).colorScheme.secondary, - body: Padding( - padding: const EdgeInsets.only(top: 20, bottom: 20), - child: Text("Create a pipeline", - textAlign: TextAlign.center, - style: TextStyle( - color: Theme.of(context).colorScheme.onSecondary, - fontSize: 20, - fontWeight: FontWeight.w600 - ) - ), + builder: (context, provider, _) => AerisPage( + actions: [ + HomePageSortMenu( + collectionProvider: provider, + ), + const HomePageMenu() + ], + body: NotificationListener( + onNotification: (notification) { + if (listController.position.atEdge) { + if (listController.position.pixels == 0) { + print("Loading"); + setState(() { + loading = true; + }); + Future.delayed(const Duration(seconds: 2)) + .then((_) => setState(() { + loading = false; + print("Loaded"); + })); + // TODO Call API + } + } + return true; + }, + child: Stack( + children: [ + ListView.builder( + padding: const EdgeInsets.only( + top: 20, bottom: 20, left: 10, right: 10), + controller: listController, + itemCount: + provider.pipelineCollection.pipelines.length + 1, + itemBuilder: (BuildContext context, int index) { + if (index == + provider.pipelineCollection.pipelines.length) { + return ClickableCard( + color: Theme.of(context).colorScheme.secondary, + body: Padding( + padding: + const EdgeInsets.only(top: 20, bottom: 20), + child: Text("Create a pipeline", + textAlign: TextAlign.center, + style: TextStyle( + color: Theme.of(context) + .colorScheme + .onSecondary, + fontSize: 20, + fontWeight: FontWeight.w600)), + ), + onTap: () { + Navigator.of(context) + .pushNamed('/pipeline/new'); + }, + ); + } + return PipelineCard( + pipeline: + provider.pipelineCollection.pipelines[index]); + }, ), - onTap: () { - Navigator.of(context).pushNamed('/pipeline/new'); - }, - ); - } - return PipelineCard( - pipeline: provider.pipelineCollection.pipelines[index] - ); - }, - ), - loading ? BackdropFilter( - filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), - child: Container() - ) : Container(), - loading ? const LoadingWidget() : Container() - ], - ) - ), - ) - ); + loading + ? BackdropFilter( + filter: + ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0), + child: Container()) + : Container(), + loading ? const LoadingWidget() : Container() + ], + )), + )); } } diff --git a/mobile/lib/src/views/login_page.dart b/mobile/lib/src/views/login_page.dart index 221e5b1..68ffd82 100644 --- a/mobile/lib/src/views/login_page.dart +++ b/mobile/lib/src/views/login_page.dart @@ -1,5 +1,5 @@ -import 'package:mobile/src/main.dart'; -import 'package:mobile/src/widgets/aeris_page.dart'; +import 'package:aeris/src/main.dart'; +import 'package:aeris/src/widgets/aeris_page.dart'; import 'package:flutter_login/flutter_login.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -45,7 +45,8 @@ class LoginPage extends StatelessWidget { debugPrint('Name: $name'); return Future.delayed(loginDuration).then((_) { if (!users.containsKey(name)) { - return AppLocalizations.of(Aeris.materialKey.currentContext!).userDoesNotExist; + return AppLocalizations.of(Aeris.materialKey.currentContext!) + .userDoesNotExist; } return null; }); diff --git a/mobile/lib/src/views/pipeline_detail_page.dart b/mobile/lib/src/views/pipeline_detail_page.dart index 3796d9a..a540067 100644 --- a/mobile/lib/src/views/pipeline_detail_page.dart +++ b/mobile/lib/src/views/pipeline_detail_page.dart @@ -1,14 +1,14 @@ -import 'package:mobile/src/main.dart'; -import 'package:mobile/src/providers/pipelines_provider.dart'; -import 'package:mobile/src/views/setup_action_page.dart'; -import 'package:mobile/src/widgets/action_card_popup_menu.dart'; -import 'package:mobile/src/widgets/aeris_card_page.dart'; -import 'package:mobile/src/widgets/colored_clickable_card.dart'; -import 'package:mobile/src/widgets/warning_dialog.dart'; -import 'package:mobile/src/widgets/action_card.dart'; +import 'package:aeris/src/main.dart'; +import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/views/setup_action_page.dart'; +import 'package:aeris/src/widgets/action_card_popup_menu.dart'; +import 'package:aeris/src/widgets/aeris_card_page.dart'; +import 'package:aeris/src/widgets/colored_clickable_card.dart'; +import 'package:aeris/src/widgets/warning_dialog.dart'; +import 'package:aeris/src/widgets/action_card.dart'; import 'package:flutter_switch/flutter_switch.dart'; -import 'package:mobile/src/models/reaction.dart'; -import 'package:mobile/src/models/pipeline.dart'; +import 'package:aeris/src/models/reaction.dart'; +import 'package:aeris/src/models/pipeline.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/mobile/lib/src/views/service_page.dart b/mobile/lib/src/views/service_page.dart index c8c973e..c1ea255 100644 --- a/mobile/lib/src/views/service_page.dart +++ b/mobile/lib/src/views/service_page.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/models/pipeline.dart'; -import 'package:mobile/src/models/reaction.dart'; -import 'package:mobile/src/models/service.dart'; -import 'package:mobile/src/providers/pipelines_provider.dart'; -import 'package:mobile/src/providers/user_services_provider.dart'; -import 'package:mobile/src/widgets/action_card.dart'; -import 'package:mobile/src/widgets/aeris_card_page.dart'; -import 'package:mobile/src/widgets/warning_dialog.dart'; +import 'package:aeris/src/models/pipeline.dart'; +import 'package:aeris/src/models/reaction.dart'; +import 'package:aeris/src/models/service.dart'; +import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/providers/user_services_provider.dart'; +import 'package:aeris/src/widgets/action_card.dart'; +import 'package:aeris/src/widgets/aeris_card_page.dart'; +import 'package:aeris/src/widgets/warning_dialog.dart'; import 'package:provider/provider.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -93,6 +93,7 @@ class ServicePage extends StatelessWidget { } return false; }), + /// TODO Remove service from provider provider.notifyListeners(), print("Disconnect") diff --git a/mobile/lib/src/views/setup_action_page.dart b/mobile/lib/src/views/setup_action_page.dart index 65d2cd4..02d136f 100644 --- a/mobile/lib/src/views/setup_action_page.dart +++ b/mobile/lib/src/views/setup_action_page.dart @@ -1,9 +1,9 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/models/action.dart' as aeris; -import 'package:mobile/src/models/service.dart'; -import 'package:mobile/src/models/trigger.dart'; -import 'package:mobile/src/widgets/action_form.dart'; -import 'package:mobile/src/widgets/aeris_card_page.dart'; +import 'package:aeris/src/models/action.dart' as aeris; +import 'package:aeris/src/models/service.dart'; +import 'package:aeris/src/models/trigger.dart'; +import 'package:aeris/src/widgets/action_form.dart'; +import 'package:aeris/src/widgets/aeris_card_page.dart'; import 'package:expandable/expandable.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/mobile/lib/src/widgets/action_card_popup_menu.dart b/mobile/lib/src/widgets/action_card_popup_menu.dart index e3a4eed..3bc3c1f 100644 --- a/mobile/lib/src/widgets/action_card_popup_menu.dart +++ b/mobile/lib/src/widgets/action_card_popup_menu.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/views/setup_action_page.dart'; -import 'package:mobile/src/widgets/aeris_popup_menu.dart'; -import 'package:mobile/src/widgets/aeris_popup_menu_item.dart'; -import 'package:mobile/src/models/action.dart' as aeris; +import 'package:aeris/src/views/setup_action_page.dart'; +import 'package:aeris/src/widgets/aeris_popup_menu.dart'; +import 'package:aeris/src/widgets/aeris_popup_menu_item.dart'; +import 'package:aeris/src/models/action.dart' as aeris; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; /// [StatelessWidget] displayed as a PopupMenu @@ -36,6 +36,7 @@ class ActionCardPopupMenu extends StatelessWidget { onSelected: (value) { if (value == '/pipeline/action/del') { onDelete!(); + ///TODO delete from db } else { Map object = value as Map; diff --git a/mobile/lib/src/widgets/aeris_page.dart b/mobile/lib/src/widgets/aeris_page.dart index cbc3005..ea6dd81 100644 --- a/mobile/lib/src/widgets/aeris_page.dart +++ b/mobile/lib/src/widgets/aeris_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/widgets/background/animated_background.dart'; +import 'package:aeris/src/widgets/background/animated_background.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + /// Application base page, holds scaffold and background class AerisPage extends StatelessWidget { /// Body of the page @@ -23,24 +24,24 @@ class AerisPage extends StatelessWidget { return Scaffold( resizeToAvoidBottomInset: false, body: SizedBox( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - child: Stack(children: [const AnimatedBackground(), body]) - ), + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + child: Stack(children: [const AnimatedBackground(), body])), backgroundColor: Theme.of(context).colorScheme.primary, - appBar: displayAppbar ? AppBar( - title: const Text("AERIS"), - centerTitle: true, - elevation: 0, - leading: Container(), - actions: [ - for (Widget action in actions) - Padding( - child: action, - padding: const EdgeInsets.only(right: 10.0) - ), - ], - ) : null, + appBar: displayAppbar + ? AppBar( + title: const Text("AERIS"), + centerTitle: true, + elevation: 0, + leading: Container(), + actions: [ + for (Widget action in actions) + Padding( + child: action, + padding: const EdgeInsets.only(right: 10.0)), + ], + ) + : null, ); } } diff --git a/mobile/lib/src/widgets/colored_clickable_card.dart b/mobile/lib/src/widgets/colored_clickable_card.dart index 103061c..9bb9691 100644 --- a/mobile/lib/src/widgets/colored_clickable_card.dart +++ b/mobile/lib/src/widgets/colored_clickable_card.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/widgets/clickable_card.dart'; +import 'package:aeris/src/widgets/clickable_card.dart'; /// Clickable card with simple text and color class ColoredClickableCard extends StatelessWidget { @@ -11,28 +11,23 @@ class ColoredClickableCard extends StatelessWidget { final void Function() onTap; const ColoredClickableCard( - {Key? key, - required this.text, - required this.color, - required this.onTap - }) : super(key: key); + {Key? key, required this.text, required this.color, required this.onTap}) + : super(key: key); @override Widget build(BuildContext context) => ClickableCard( - color: color, - elevation: 5, - body: Container( - child: Text( - text, - textAlign: TextAlign.center, - style: TextStyle( - color: Theme.of(context).colorScheme.onSecondary, - fontSize: 20, - fontWeight: FontWeight.w600 - ), - ), - width: double.infinity, - padding: const EdgeInsets.only(top: 15, bottom: 15)), - onTap: onTap - ); + color: color, + elevation: 5, + body: Container( + child: Text( + text, + textAlign: TextAlign.center, + style: TextStyle( + color: Theme.of(context).colorScheme.onSecondary, + fontSize: 20, + fontWeight: FontWeight.w600), + ), + width: double.infinity, + padding: const EdgeInsets.only(top: 15, bottom: 15)), + onTap: onTap); } diff --git a/mobile/lib/src/widgets/home_page_menu.dart b/mobile/lib/src/widgets/home_page_menu.dart index fc03632..5c10b2f 100644 --- a/mobile/lib/src/widgets/home_page_menu.dart +++ b/mobile/lib/src/widgets/home_page_menu.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/widgets/aeris_popup_menu.dart'; -import 'package:mobile/src/widgets/aeris_popup_menu_item.dart'; +import 'package:aeris/src/widgets/aeris_popup_menu.dart'; +import 'package:aeris/src/widgets/aeris_popup_menu_item.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; /// Menu for the Home Page @@ -17,7 +17,6 @@ class HomePageMenu extends StatelessWidget { title: AppLocalizations.of(context).services, value: "/services"), AerisPopupMenuItem( - context: context, icon: Icons.logout, title: AppLocalizations.of(context).logout, diff --git a/mobile/lib/src/widgets/home_page_sort_menu.dart b/mobile/lib/src/widgets/home_page_sort_menu.dart index cdc2a17..d151d12 100644 --- a/mobile/lib/src/widgets/home_page_sort_menu.dart +++ b/mobile/lib/src/widgets/home_page_sort_menu.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/models/pipeline_collection.dart'; -import 'package:mobile/src/providers/pipelines_provider.dart'; -import 'package:mobile/src/widgets/aeris_popup_menu.dart'; -import 'package:mobile/src/widgets/aeris_popup_menu_item.dart'; +import 'package:aeris/src/models/pipeline_collection.dart'; +import 'package:aeris/src/providers/pipelines_provider.dart'; +import 'package:aeris/src/widgets/aeris_popup_menu.dart'; +import 'package:aeris/src/widgets/aeris_popup_menu_item.dart'; import 'package:recase/recase.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; diff --git a/mobile/lib/src/widgets/pipeline_card.dart b/mobile/lib/src/widgets/pipeline_card.dart index d398a2a..4e31ff1 100644 --- a/mobile/lib/src/widgets/pipeline_card.dart +++ b/mobile/lib/src/widgets/pipeline_card.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -import 'package:mobile/src/models/pipeline.dart'; -import 'package:mobile/src/views/pipeline_detail_page.dart'; -import 'package:mobile/src/widgets/clickable_card.dart'; +import 'package:aeris/src/models/pipeline.dart'; +import 'package:aeris/src/views/pipeline_detail_page.dart'; +import 'package:aeris/src/widgets/clickable_card.dart'; /// Widget for Action-reaction card on home page class PipelineCard extends StatefulWidget { @@ -26,71 +26,62 @@ class _PipelineCardState extends State { array + [logo, const SizedBox(height: 5)]).toList(); reactionLogos.removeLast(); return ClickableCard( - onTap: () { - Navigator.pushNamed(context, '/pipeline', arguments: PipelineDetailPageArguments(widget.pipeline)).then((value) => setState(() {})); - }, - color: widget.pipeline.enabled == false - ? const Color.fromARGB(115, 34, 34, 34).withOpacity(0.8) - : null, - body: Container( - width: double.infinity, - padding: const EdgeInsets.only(top: 20, bottom: 20, left: 40), - child: Row( - children: [ - Expanded( - flex: 4, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(widget.pipeline.name, - style: TextStyle( - fontSize: 25, - color: Theme.of(context).colorScheme.onSurface, - ) - ), - const SizedBox(height: 10), - Text(widget.pipeline.trigger.lastToString(), - style: TextStyle( - color: widget.pipeline.enabled == false - ? Theme.of(context).colorScheme.onSurface - : const Color.fromARGB(255, 83, 83, 83), - fontSize: 15 - ) - ), - ], - ) - ), - Expanded( - flex: 4, - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - widget.pipeline.trigger.service.getLogo(), - const SizedBox(width: 10), - Icon( - Icons.arrow_forward, - color: Theme.of(context).colorScheme.onSurface, - ), - const SizedBox(width: 10), - Column(children: reactionLogos) - ] - ) - ), - Expanded( - flex: 2, - child: Column( - children: [ - Icon( - Icons.arrow_forward_ios, - color: Theme.of(context).colorScheme.onSurface, - ) - ], - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center) - ), - ] - ) - ) - ); + onTap: () { + Navigator.pushNamed(context, '/pipeline', + arguments: PipelineDetailPageArguments(widget.pipeline)) + .then((value) => setState(() {})); + }, + color: widget.pipeline.enabled == false + ? const Color.fromARGB(115, 34, 34, 34).withOpacity(0.8) + : null, + body: Container( + width: double.infinity, + padding: const EdgeInsets.only(top: 20, bottom: 20, left: 40), + child: Row(children: [ + Expanded( + flex: 4, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text(widget.pipeline.name, + style: TextStyle( + fontSize: 25, + color: Theme.of(context).colorScheme.onSurface, + )), + const SizedBox(height: 10), + Text(widget.pipeline.trigger.lastToString(), + style: TextStyle( + color: widget.pipeline.enabled == false + ? Theme.of(context).colorScheme.onSurface + : const Color.fromARGB(255, 83, 83, 83), + fontSize: 15)), + ], + )), + Expanded( + flex: 4, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + widget.pipeline.trigger.service.getLogo(), + const SizedBox(width: 10), + Icon( + Icons.arrow_forward, + color: Theme.of(context).colorScheme.onSurface, + ), + const SizedBox(width: 10), + Column(children: reactionLogos) + ])), + Expanded( + flex: 2, + child: Column( + children: [ + Icon( + Icons.arrow_forward_ios, + color: Theme.of(context).colorScheme.onSurface, + ) + ], + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center)), + ]))); } } diff --git a/mobile/pubspec.yaml b/mobile/pubspec.yaml index 721160b..c705ac0 100644 --- a/mobile/pubspec.yaml +++ b/mobile/pubspec.yaml @@ -1,4 +1,4 @@ -name: mobile +name: aeris description: Mobile application for Aeris # The following line prevents the package from being accidentally published to diff --git a/mobile/test/widget_test.dart b/mobile/test/widget_test.dart index 514db74..5b48bd2 100644 --- a/mobile/test/widget_test.dart +++ b/mobile/test/widget_test.dart @@ -7,7 +7,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:mobile/src/main.dart'; +import 'package:aeris/src/main.dart'; void main() { testWidgets('Counter increments smoke test', (WidgetTester tester) async {