From 79a1c69af1e5f63f2a953be5f116f8bc49fc6039 Mon Sep 17 00:00:00 2001 From: Abdullah Alassaf Date: Sun, 21 Jul 2024 11:45:49 +0300 Subject: [PATCH] Added env files and the read base url using the dotenv package --- .env.dev | 0 .env.development | 2 + .env.prod | 0 .env.production | 2 + .env.staging | 2 + .gitignore | 2 +- lib/features/menu/view/menu_view.dart | 6 + lib/main.dart | 6 +- lib/services/api/api_links_endpoints.dart | 157 +++++++++++----------- pubspec.yaml | 7 +- 10 files changed, 100 insertions(+), 84 deletions(-) delete mode 100644 .env.dev create mode 100644 .env.development delete mode 100644 .env.prod create mode 100644 .env.production diff --git a/.env.dev b/.env.dev deleted file mode 100644 index e69de29..0000000 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..e77609d --- /dev/null +++ b/.env.development @@ -0,0 +1,2 @@ +ENV_NAME=development +BASE_URL=https://syncrow-dev.azurewebsites.net \ No newline at end of file diff --git a/.env.prod b/.env.prod deleted file mode 100644 index e69de29..0000000 diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..4e9dcb8 --- /dev/null +++ b/.env.production @@ -0,0 +1,2 @@ +ENV_NAME=production +BASE_URL=https://syncrow-staging.azurewebsites.net \ No newline at end of file diff --git a/.env.staging b/.env.staging index e69de29..9565b42 100644 --- a/.env.staging +++ b/.env.staging @@ -0,0 +1,2 @@ +ENV_NAME=staging +BASE_URL=https://syncrow-staging.azurewebsites.net \ No newline at end of file diff --git a/.gitignore b/.gitignore index add5842..c3e0679 100644 --- a/.gitignore +++ b/.gitignore @@ -20,7 +20,7 @@ migrate_working_dir/ # VS Code which you may wish to be included in version control, so this line # is commented out by default. #.vscode/ - +*.env # Flutter/Dart/Pub related **/doc/api/ **/ios/Flutter/.last_build_id diff --git a/lib/features/menu/view/menu_view.dart b/lib/features/menu/view/menu_view.dart index 0d3dc83..298d1f7 100644 --- a/lib/features/menu/view/menu_view.dart +++ b/lib/features/menu/view/menu_view.dart @@ -6,6 +6,7 @@ import 'package:syncrow_app/features/menu/view/widgets/menu_list.dart'; import 'package:syncrow_app/features/menu/view/widgets/profile/profile_tab.dart'; import 'package:syncrow_app/features/shared_widgets/default_container.dart'; import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart'; +import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart'; import 'package:syncrow_app/utils/context_extension.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart'; @@ -32,6 +33,11 @@ class MenuView extends StatelessWidget { const SizedBox( height: 15, ), + const BodyMedium( + text: String.fromEnvironment('FLAVOR', defaultValue: 'production')), + const SizedBox( + height: 15, + ), InkWell( onTap: () { AuthCubit.get(context).logout(); diff --git a/lib/main.dart b/lib/main.dart index 786eeda..ec2a3ea 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:syncrow_app/firebase_options.dart'; import 'package:syncrow_app/services/locator.dart'; import 'package:syncrow_app/utils/bloc_observer.dart'; @@ -15,9 +16,8 @@ void main() { //to catch all the errors in the app and send them to firebase runZonedGuarded(() async { //to load the environment variables - // const environment = - // String.fromEnvironment('FLAVOR', defaultValue: 'production'); - // await dotenv.load(fileName: '.env.$environment'); + const environment = String.fromEnvironment('FLAVOR', defaultValue: 'production'); + await dotenv.load(fileName: '.env.$environment'); // //this is to make the app work with the self-signed certificate // HttpOverrides.global = MyHttpOverrides(); diff --git a/lib/services/api/api_links_endpoints.dart b/lib/services/api/api_links_endpoints.dart index d32bdba..f02bc99 100644 --- a/lib/services/api/api_links_endpoints.dart +++ b/lib/services/api/api_links_endpoints.dart @@ -1,154 +1,153 @@ +import 'package:flutter_dotenv/flutter_dotenv.dart'; + abstract class ApiEndpoints { - static const String baseUrl = 'https://syncrow.azurewebsites.net'; - // static const String baseUrl = 'http://100.107.182.63:4001'; //Localhost + static String baseUrl = dotenv.env['BASE_URL'] ?? ''; ////////////////////////////////////// Authentication /////////////////////////////// - static const String signUp = '$baseUrl/authentication/user/signup'; - static const String login = '$baseUrl/authentication/user/login'; - static const String deleteUser = '$baseUrl/authentication/user/delete/{id}'; - static const String sendOtp = '$baseUrl/authentication/user/send-otp'; - static const String verifyOtp = '$baseUrl/authentication/user/verify-otp'; - static const String forgetPassword = '$baseUrl/authentication/user/forget-password'; + static const String signUp = '/authentication/user/signup'; + static const String login = '/authentication/user/login'; + static const String deleteUser = '/authentication/user/delete/{id}'; + static const String sendOtp = '/authentication/user/send-otp'; + static const String verifyOtp = '/authentication/user/verify-otp'; + static const String forgetPassword = '/authentication/user/forget-password'; ////////////////////////////////////// Spaces /////////////////////////////////////// ///Community Module //POST - static const String addCommunity = '$baseUrl/community'; - static const String addCommunityToUser = '$baseUrl/community/user'; + static const String addCommunity = '/community'; + static const String addCommunityToUser = '/community/user'; //GET - static const String communityByUuid = '$baseUrl/community/{communityUuid}'; - static const String communityChild = '$baseUrl/community/child/{communityUuid}'; - static const String communityUser = '$baseUrl/community/user/{userUuid}'; + static const String communityByUuid = '/community/{communityUuid}'; + static const String communityChild = '/community/child/{communityUuid}'; + static const String communityUser = '/community/user/{userUuid}'; //PUT - static const String renameCommunity = '$baseUrl/community/rename/{communityUuid}'; + static const String renameCommunity = '/community/rename/{communityUuid}'; ///Building Module //POST - static const String addBuilding = '$baseUrl/building'; - static const String addBuildingToUser = '$baseUrl/building/user'; + static const String addBuilding = '/building'; + static const String addBuildingToUser = '/building/user'; //GET - static const String buildingByUuid = '$baseUrl/building/{buildingUuid}'; - static const String buildingChild = '$baseUrl/building/child/{buildingUuid}'; - static const String buildingParent = '$baseUrl/building/parent/{buildingUuid}'; - static const String buildingUser = '$baseUrl/building/user/{userUuid}'; + static const String buildingByUuid = '/building/{buildingUuid}'; + static const String buildingChild = '/building/child/{buildingUuid}'; + static const String buildingParent = '/building/parent/{buildingUuid}'; + static const String buildingUser = '/building/user/{userUuid}'; //PUT - static const String renameBuilding = '$baseUrl/building/rename/{buildingUuid}'; + static const String renameBuilding = '/building/rename/{buildingUuid}'; ///Floor Module //POST - static const String addFloor = '$baseUrl/floor'; - static const String addFloorToUser = '$baseUrl/floor/user'; + static const String addFloor = '/floor'; + static const String addFloorToUser = '/floor/user'; //GET - static const String floorByUuid = '$baseUrl/floor/{floorUuid}'; - static const String floorChild = '$baseUrl/floor/child/{floorUuid}'; - static const String floorParent = '$baseUrl/floor/parent/{floorUuid}'; - static const String floorUser = '$baseUrl/floor/user/{userUuid}'; + static const String floorByUuid = '/floor/{floorUuid}'; + static const String floorChild = '/floor/child/{floorUuid}'; + static const String floorParent = '/floor/parent/{floorUuid}'; + static const String floorUser = '/floor/user/{userUuid}'; //PUT - static const String renameFloor = '$baseUrl/floor/rename/{floorUuid}'; + static const String renameFloor = '/floor/rename/{floorUuid}'; ///Unit Module //POST - static const String addUnit = '$baseUrl/unit'; - static const String addUnitToUser = '$baseUrl/unit/user'; + static const String addUnit = '/unit'; + static const String addUnitToUser = '/unit/user'; //GET - static const String unitByUuid = '$baseUrl/unit/'; - static const String unitChild = '$baseUrl/unit/child/'; - static const String unitParent = '$baseUrl/unit/parent/{unitUuid}'; - static const String unitUser = '$baseUrl/unit/user/'; - static const String invitationCode = '$baseUrl/unit/{unitUuid}/invitation-code'; - static const String verifyInvitationCode = '$baseUrl/unit/user/verify-code'; + static const String unitByUuid = '/unit/'; + static const String unitChild = '/unit/child/'; + static const String unitParent = '/unit/parent/{unitUuid}'; + static const String unitUser = '/unit/user/'; + static const String invitationCode = '/unit/{unitUuid}/invitation-code'; + static const String verifyInvitationCode = '/unit/user/verify-code'; //PUT - static const String renameUnit = '$baseUrl/unit/rename/{unitUuid}'; + static const String renameUnit = '/unit/rename/{unitUuid}'; ///Room Module //POST - static const String addRoom = '$baseUrl/room'; - static const String addRoomToUser = '$baseUrl/room/user'; + static const String addRoom = '/room'; + static const String addRoomToUser = '/room/user'; //GET - static const String roomByUuid = '$baseUrl/room/{roomUuid}'; - static const String roomParent = '$baseUrl/room/parent/{roomUuid}'; - static const String roomUser = '$baseUrl/room/user/{userUuid}'; + static const String roomByUuid = '/room/{roomUuid}'; + static const String roomParent = '/room/parent/{roomUuid}'; + static const String roomUser = '/room/user/{userUuid}'; //PUT - static const String renameRoom = '$baseUrl/room/rename/{roomUuid}'; + static const String renameRoom = '/room/rename/{roomUuid}'; ///Group Module //POST - static const String addGroup = '$baseUrl/group'; - static const String controlGroup = '$baseUrl/group/control'; + static const String addGroup = '/group'; + static const String controlGroup = '/group/control'; //GET - static const String groupBySpace = '$baseUrl/group/{unitUuid}'; - static const String devicesByGroupName = '$baseUrl/group/{unitUuid}/devices/{groupName}'; + static const String groupBySpace = '/group/{unitUuid}'; + static const String devicesByGroupName = '/group/{unitUuid}/devices/{groupName}'; - static const String groupByUuid = '$baseUrl/group/{groupUuid}'; + static const String groupByUuid = '/group/{groupUuid}'; //DELETE - static const String deleteGroup = '$baseUrl/group/{groupUuid}'; + static const String deleteGroup = '/group/{groupUuid}'; ////////////////////////////////////// Devices /////////////////////////////////////// ///Device Module //POST - static const String addDeviceToRoom = '$baseUrl/device/room'; - static const String addDeviceToGroup = '$baseUrl/device/group'; - static const String controlDevice = '$baseUrl/device/{deviceUuid}/control'; - static const String firmwareDevice = '$baseUrl/device/{deviceUuid}/firmware/{firmwareVersion}'; - static const String getDevicesByUserId = '$baseUrl/device/user/{userId}'; - static const String getDevicesByUnitId = '$baseUrl/device/unit/{unitUuid}'; + static const String addDeviceToRoom = '/device/room'; + static const String addDeviceToGroup = '/device/group'; + static const String controlDevice = '/device/{deviceUuid}/control'; + static const String firmwareDevice = '/device/{deviceUuid}/firmware/{firmwareVersion}'; + static const String getDevicesByUserId = '/device/user/{userId}'; + static const String getDevicesByUnitId = '/device/unit/{unitUuid}'; //GET - static const String deviceByRoom = '$baseUrl/device/room'; - static const String deviceByUuid = '$baseUrl/device/{deviceUuid}'; - static const String deviceFunctions = '$baseUrl/device/{deviceUuid}/functions'; - static const String gatewayApi = '$baseUrl/device/gateway/{gatewayUuid}/devices'; - static const String deviceFunctionsStatus = '$baseUrl/device/{deviceUuid}/functions/status'; + static const String deviceByRoom = '/device/room'; + static const String deviceByUuid = '/device/{deviceUuid}'; + static const String deviceFunctions = '/device/{deviceUuid}/functions'; + static const String gatewayApi = '/device/gateway/{gatewayUuid}/devices'; + static const String deviceFunctionsStatus = '/device/{deviceUuid}/functions/status'; ///Device Permission Module //POST - static const String addDevicePermission = '$baseUrl/device-permission/add'; + static const String addDevicePermission = '/device-permission/add'; //GET - static const String devicePermissionList = '$baseUrl/device-permission/list'; + static const String devicePermissionList = '/device-permission/list'; //PUT - static const String editDevicePermission = '$baseUrl/device-permission/edit/{userId}'; + static const String editDevicePermission = '/device-permission/edit/{userId}'; - static const String assignDeviceToRoom = '$baseUrl/device/room'; + static const String assignDeviceToRoom = '/device/room'; /// Scene API //////////////////// /// POST - static const String createScene = '$baseUrl/scene/tap-to-run'; - static const String triggerScene = '$baseUrl/scene/tap-to-run/trigger/{sceneId}'; + static const String createScene = '/scene/tap-to-run'; + static const String triggerScene = '/scene/tap-to-run/trigger/{sceneId}'; /// GET - static const String getUnitScenes = '$baseUrl/scene/tap-to-run/{unitUuid}'; + static const String getUnitScenes = '/scene/tap-to-run/{unitUuid}'; - static const String getScene = '$baseUrl/scene/tap-to-run/details/{sceneId}'; + static const String getScene = '/scene/tap-to-run/details/{sceneId}'; /// PUT - static const String updateScene = '$baseUrl/scene/tap-to-run/{sceneId}'; + static const String updateScene = '/scene/tap-to-run/{sceneId}'; /// DELETE - static const String deleteScene = '$baseUrl/scene/tap-to-run/{unitUuid}/{sceneId}'; + static const String deleteScene = '/scene/tap-to-run/{unitUuid}/{sceneId}'; //////////////////////Door Lock ////////////////////// //online - static const String addTemporaryPassword = - '$baseUrl/door-lock/temporary-password/online/{doorLockUuid}'; - static const String getTemporaryPassword = - '$baseUrl/door-lock/temporary-password/online/{doorLockUuid}'; + static const String addTemporaryPassword = '/door-lock/temporary-password/online/{doorLockUuid}'; + static const String getTemporaryPassword = '/door-lock/temporary-password/online/{doorLockUuid}'; //one-time offline static const String addOneTimeTemporaryPassword = - '$baseUrl/door-lock/temporary-password/offline/one-time/{doorLockUuid}'; + '/door-lock/temporary-password/offline/one-time/{doorLockUuid}'; static const String getOneTimeTemporaryPassword = - '$baseUrl/door-lock/temporary-password/offline/one-time/{doorLockUuid}'; + '/door-lock/temporary-password/offline/one-time/{doorLockUuid}'; //multiple-time offline static const String addMultipleTimeTemporaryPassword = - '$baseUrl/door-lock/temporary-password/offline/multiple-time/{doorLockUuid}'; + '/door-lock/temporary-password/offline/multiple-time/{doorLockUuid}'; static const String getMultipleTimeTemporaryPassword = - '$baseUrl/door-lock/temporary-password/offline/multiple-time/{doorLockUuid}'; + '/door-lock/temporary-password/offline/multiple-time/{doorLockUuid}'; //multiple-time offline static const String deleteTemporaryPassword = - '$baseUrl/door-lock/temporary-password/{doorLockUuid}/{passwordId}'; + '/door-lock/temporary-password/{doorLockUuid}/{passwordId}'; } diff --git a/pubspec.yaml b/pubspec.yaml index 0dbf15a..7a130bf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: This is the mobile application project, developed with Flutter for # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: "none" # Remove this line if you wish to publish to pub.dev -version: 1.0.1+11 +version: 1.0.1+12 environment: sdk: ">=3.0.6 <4.0.0" @@ -74,6 +74,11 @@ flutter: - assets/icons/MenuIcons/SecurityAndPrivacyIcons/ - assets/icons/curtainsIcon/ - assets/icons/functions_icons/ + - .env.development + - .env.staging + - .env.production + + fonts: - family: Aftika fonts: