From 40aeb313472fb4bec5bcaa885d8a260c21713dcd Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Wed, 12 Oct 2022 10:40:39 +0200 Subject: [PATCH 1/2] Bump coverage to node 16 --- .github/workflows/dart.yml | 2 +- .github/workflows/dio.yml | 2 +- .github/workflows/flutter.yml | 2 +- .github/workflows/logging.yml | 2 +- flutter/lib/src/integrations/test.dart | 187 +++++++++++++++++++++++++ 5 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 flutter/lib/src/integrations/test.dart diff --git a/.github/workflows/dart.yml b/.github/workflows/dart.yml index d689f5c67a..449c177c1d 100644 --- a/.github/workflows/dart.yml +++ b/.github/workflows/dart.yml @@ -63,7 +63,7 @@ jobs: name: sentry files: ./dart/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@feed99cc060453828a8f12e74b404baace8e4502 # pin@v1.2.1 + - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: './dart/coverage/lcov.info' diff --git a/.github/workflows/dio.yml b/.github/workflows/dio.yml index 5ffe5c9c5e..0406a16b6d 100644 --- a/.github/workflows/dio.yml +++ b/.github/workflows/dio.yml @@ -45,7 +45,7 @@ jobs: name: sentry_dio files: ./dio/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@feed99cc060453828a8f12e74b404baace8e4502 # pin@v1.2.1 + - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: './dio/coverage/lcov.info' diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 85ab19249f..b5ca17ec6e 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -96,7 +96,7 @@ jobs: # name: sentry_flutter # file: ./flutter/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@feed99cc060453828a8f12e74b404baace8e4502 # pin@v1.2.1 + - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' && matrix.target == 'linux' with: path: './flutter/coverage/lcov.info' diff --git a/.github/workflows/logging.yml b/.github/workflows/logging.yml index 56f9618c3a..108dc1fe93 100644 --- a/.github/workflows/logging.yml +++ b/.github/workflows/logging.yml @@ -45,7 +45,7 @@ jobs: name: sentry_logging files: ./logging/coverage/lcov.info - - uses: VeryGoodOpenSource/very_good_coverage@feed99cc060453828a8f12e74b404baace8e4502 # pin@v1.2.1 if: runner.os == 'Linux' && matrix.sdk == 'stable' + - uses: VeryGoodOpenSource/very_good_coverage@84e5b54ab888644554e5573dca87d7f76dec9fb3 # pin@v2.0.0 if: runner.os == 'Linux' && matrix.sdk == 'stable' with: path: './logging/coverage/lcov.info' min_coverage: 90 diff --git a/flutter/lib/src/integrations/test.dart b/flutter/lib/src/integrations/test.dart new file mode 100644 index 0000000000..5dcd256f51 --- /dev/null +++ b/flutter/lib/src/integrations/test.dart @@ -0,0 +1,187 @@ +// @dart=2.11 +import 'dart:async'; + +// import 'package:organization_name_app/data/firebase/firebase_manager.dart'; +// import 'package:organization_name_app/data/firebase/force_update_info.dart'; +// import 'package:organization_name_app/general/global.dart'; +// import 'package:organization_name_app/general/operation_mode.dart'; +// import 'package:organization_name_app/ui/pages/login_page.dart'; +// import 'package:organization_name_app/ui/pages/start_page.dart'; +// import 'package:organization_name_app/ui/shared_components/force_update_dialog.dart'; +// import 'package:organization_name_app/ui/style/organization_name__color.dart'; +// import 'package:organization_name_app/utils/organization_name_date_util.dart'; +// import 'package:organization_name_app/utils/translate.dart'; +// import 'package:cloud_firestore/cloud_firestore.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +// import 'package:flutter_localizations/flutter_localizations.dart'; +// import 'package:flutter_riverpod/flutter_riverpod.dart'; +// import 'package:package_info/package_info.dart'; +import 'package:sentry_flutter/sentry_flutter.dart'; + +Future main() async { + await mainOperationMode(); +} + +Future mainOperationMode() async { + OperationMode operationMode = await setup(); + await _setupSentry(operationMode); + return operationMode; +} + +Future setup() async { + Future internalModeDetector = runZonedGuarded(_unhandledSetup, (Object error, StackTrace stack) { + print('Internal mode flag is not present.'); + }); + + bool hasInternalModeFlag = await internalModeDetector; + + if (hasInternalModeFlag == null) { + hasInternalModeFlag = false; + } + + _setOperationModeGlobal(hasInternalModeFlag); + return OperationModeDetector(hasInternalModeFlag).mode; +} + +String _setOperationModeGlobal(bool hasInternalModeFlag) => + Global().operationMode = OperationModeDetector(hasInternalModeFlag).mode.toString().split(".").last.toLowerCase(); + +Future _unhandledSetup() async { + WidgetsFlutterBinding.ensureInitialized(); + return OperationModeDetector.isInternalMode(); +} + +Future _setupSentry(OperationMode operationMode) async { + if (operationMode == OperationMode.PRODUCTION) { + print("> App will start with Sentry Error Reporting"); + await SentryFlutter.init( + (options) => options.dsn = 'https://REDACTED@sentry.io/REDACTED', + appRunner: () => _start(operationMode), + ); + } else { + print("> App will start without Sentry Error Reporting when in DEBUG mode"); + + await _start(operationMode); + } +} + +Future _start(OperationMode operationMode) async { + await setupFirebase(operationMode); + await Global().init(); + + await Translate.init(); + + PackageInfo packageInfo = await PackageInfo.fromPlatform(); + + runApp( + ProviderScope( + child: OrganizationNameApp( + packageInfo: packageInfo, + operationMode: operationMode, + ), + ), + ); +} + +Future setupFirebase(OperationMode operationMode) async { + if (operationMode != OperationMode.IDE) { + await FirebaseManager.setUpFirebase(operationMode); + } +} + +class OrganizationNameApp extends StatelessWidget { + PackageInfo packageInfo; + String versionNumber; + ForceUpdateInfo forceUpdateInfo; + OperationMode operationMode; + + OrganizationNameApp({Key key, this.operationMode, this.packageInfo}) : super(key: key); + + @override + Widget build(BuildContext context) { + versionNumber = packageInfo.version; + SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + ]); + + if (operationMode == OperationMode.IDE) { + return createMaterialApp(context); + } + + Widget _onLoad() { + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.bottomCenter, + end: Alignment.topCenter, + colors: [OrganizationNameColor.dark_blue, OrganizationNameColor.other_blue, OrganizationNameColor.blue], + ), + ), + ); + } + + return StreamBuilder>>( + stream: FirebaseManager.getInstance().collection(FirebaseManager.FORCE_UPDATE_COLLECTION).doc(FirebaseManager.getDocumentToFetch()).snapshots(), + builder: (BuildContext context, AsyncSnapshot>> snapshot) { + + if (snapshot.connectionState == ConnectionState.waiting) { + return _onLoad(); + } + if (snapshot.hasData) { + if (snapshot.connectionState == ConnectionState.active) { + Map forceUpdateInfoMap = snapshot.data.data(); + if (forceUpdateInfoMap != null) { + forceUpdateInfo = ForceUpdateInfo(forceUpdateInfoMap); + if (forceUpdateInfo.usagePrevented(versionNumber)) { + return ForceUpdateDialog(forceUpdateInfo: forceUpdateInfo); + } + } + } + } + return createMaterialApp(context); + }, + ); + } + + Widget _startPage(BuildContext context) { + if (Global().getAuthorizationToken() != null) { + return new StartPage(); + } else { + return new LoginPage(); + } + } + + Widget createMaterialApp(BuildContext context) { + return MaterialApp( + navigatorObservers: [ + SentryNavigatorObserver(), + ], + locale: Translate.getLocale(), + localizationsDelegates: [ + GlobalMaterialLocalizations.delegate, + GlobalWidgetsLocalizations.delegate, + GlobalCupertinoLocalizations.delegate, + ], + title: 'Organization Name', + theme: ThemeData( + primaryColor: OrganizationNameColor.white, + primarySwatch: Colors.blue, + toggleableActiveColor: OrganizationNameColor.green, + fontFamily: 'SofiaPro', + dividerTheme: DividerThemeData( + color: OrganizationNameColor.grey, + thickness: 1.2, + space: 1.2, + ), + bottomSheetTheme: BottomSheetThemeData( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.only(topLeft: Radius.circular(12.0), topRight: Radius.circular(12.0)), + ), + ), + ), + home: _startPage(context), + ); + } +} From ee2c655c46de8d8de0e3d12f152dbbf122495144 Mon Sep 17 00:00:00 2001 From: Manoel Aranda Neto Date: Wed, 12 Oct 2022 10:40:52 +0200 Subject: [PATCH 2/2] fix --- flutter/lib/src/integrations/test.dart | 187 ------------------------- 1 file changed, 187 deletions(-) delete mode 100644 flutter/lib/src/integrations/test.dart diff --git a/flutter/lib/src/integrations/test.dart b/flutter/lib/src/integrations/test.dart deleted file mode 100644 index 5dcd256f51..0000000000 --- a/flutter/lib/src/integrations/test.dart +++ /dev/null @@ -1,187 +0,0 @@ -// @dart=2.11 -import 'dart:async'; - -// import 'package:organization_name_app/data/firebase/firebase_manager.dart'; -// import 'package:organization_name_app/data/firebase/force_update_info.dart'; -// import 'package:organization_name_app/general/global.dart'; -// import 'package:organization_name_app/general/operation_mode.dart'; -// import 'package:organization_name_app/ui/pages/login_page.dart'; -// import 'package:organization_name_app/ui/pages/start_page.dart'; -// import 'package:organization_name_app/ui/shared_components/force_update_dialog.dart'; -// import 'package:organization_name_app/ui/style/organization_name__color.dart'; -// import 'package:organization_name_app/utils/organization_name_date_util.dart'; -// import 'package:organization_name_app/utils/translate.dart'; -// import 'package:cloud_firestore/cloud_firestore.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; -// import 'package:flutter_localizations/flutter_localizations.dart'; -// import 'package:flutter_riverpod/flutter_riverpod.dart'; -// import 'package:package_info/package_info.dart'; -import 'package:sentry_flutter/sentry_flutter.dart'; - -Future main() async { - await mainOperationMode(); -} - -Future mainOperationMode() async { - OperationMode operationMode = await setup(); - await _setupSentry(operationMode); - return operationMode; -} - -Future setup() async { - Future internalModeDetector = runZonedGuarded(_unhandledSetup, (Object error, StackTrace stack) { - print('Internal mode flag is not present.'); - }); - - bool hasInternalModeFlag = await internalModeDetector; - - if (hasInternalModeFlag == null) { - hasInternalModeFlag = false; - } - - _setOperationModeGlobal(hasInternalModeFlag); - return OperationModeDetector(hasInternalModeFlag).mode; -} - -String _setOperationModeGlobal(bool hasInternalModeFlag) => - Global().operationMode = OperationModeDetector(hasInternalModeFlag).mode.toString().split(".").last.toLowerCase(); - -Future _unhandledSetup() async { - WidgetsFlutterBinding.ensureInitialized(); - return OperationModeDetector.isInternalMode(); -} - -Future _setupSentry(OperationMode operationMode) async { - if (operationMode == OperationMode.PRODUCTION) { - print("> App will start with Sentry Error Reporting"); - await SentryFlutter.init( - (options) => options.dsn = 'https://REDACTED@sentry.io/REDACTED', - appRunner: () => _start(operationMode), - ); - } else { - print("> App will start without Sentry Error Reporting when in DEBUG mode"); - - await _start(operationMode); - } -} - -Future _start(OperationMode operationMode) async { - await setupFirebase(operationMode); - await Global().init(); - - await Translate.init(); - - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - - runApp( - ProviderScope( - child: OrganizationNameApp( - packageInfo: packageInfo, - operationMode: operationMode, - ), - ), - ); -} - -Future setupFirebase(OperationMode operationMode) async { - if (operationMode != OperationMode.IDE) { - await FirebaseManager.setUpFirebase(operationMode); - } -} - -class OrganizationNameApp extends StatelessWidget { - PackageInfo packageInfo; - String versionNumber; - ForceUpdateInfo forceUpdateInfo; - OperationMode operationMode; - - OrganizationNameApp({Key key, this.operationMode, this.packageInfo}) : super(key: key); - - @override - Widget build(BuildContext context) { - versionNumber = packageInfo.version; - SystemChrome.setPreferredOrientations([ - DeviceOrientation.portraitUp, - DeviceOrientation.portraitDown, - ]); - - if (operationMode == OperationMode.IDE) { - return createMaterialApp(context); - } - - Widget _onLoad() { - return Container( - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.bottomCenter, - end: Alignment.topCenter, - colors: [OrganizationNameColor.dark_blue, OrganizationNameColor.other_blue, OrganizationNameColor.blue], - ), - ), - ); - } - - return StreamBuilder>>( - stream: FirebaseManager.getInstance().collection(FirebaseManager.FORCE_UPDATE_COLLECTION).doc(FirebaseManager.getDocumentToFetch()).snapshots(), - builder: (BuildContext context, AsyncSnapshot>> snapshot) { - - if (snapshot.connectionState == ConnectionState.waiting) { - return _onLoad(); - } - if (snapshot.hasData) { - if (snapshot.connectionState == ConnectionState.active) { - Map forceUpdateInfoMap = snapshot.data.data(); - if (forceUpdateInfoMap != null) { - forceUpdateInfo = ForceUpdateInfo(forceUpdateInfoMap); - if (forceUpdateInfo.usagePrevented(versionNumber)) { - return ForceUpdateDialog(forceUpdateInfo: forceUpdateInfo); - } - } - } - } - return createMaterialApp(context); - }, - ); - } - - Widget _startPage(BuildContext context) { - if (Global().getAuthorizationToken() != null) { - return new StartPage(); - } else { - return new LoginPage(); - } - } - - Widget createMaterialApp(BuildContext context) { - return MaterialApp( - navigatorObservers: [ - SentryNavigatorObserver(), - ], - locale: Translate.getLocale(), - localizationsDelegates: [ - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ], - title: 'Organization Name', - theme: ThemeData( - primaryColor: OrganizationNameColor.white, - primarySwatch: Colors.blue, - toggleableActiveColor: OrganizationNameColor.green, - fontFamily: 'SofiaPro', - dividerTheme: DividerThemeData( - color: OrganizationNameColor.grey, - thickness: 1.2, - space: 1.2, - ), - bottomSheetTheme: BottomSheetThemeData( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.only(topLeft: Radius.circular(12.0), topRight: Radius.circular(12.0)), - ), - ), - ), - home: _startPage(context), - ); - } -}