Merge branch 'develop'
This commit is contained in:
commit
46275a7872
Binary file not shown.
|
@ -5,4 +5,4 @@
|
|||
"other": "off"
|
||||
},
|
||||
"java.configuration.updateBuildConfiguration": "automatic"
|
||||
}
|
||||
}
|
|
@ -1,2 +1,2 @@
|
|||
gradle 8.10.2
|
||||
kotlin 1.8.22
|
||||
kotlin 2.0.20
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
plugins {
|
||||
id 'com.android.application'
|
||||
id 'com.android.library' apply false
|
||||
id 'com.google.firebase.crashlytics'
|
||||
id 'org.jetbrains.kotlin.android'
|
||||
|
||||
id "kotlin-android"
|
||||
|
@ -35,6 +36,7 @@ android {
|
|||
namespace 'com.freaccess.hub'
|
||||
compileSdkVersion 34
|
||||
compileSdk 35
|
||||
// ndkVersion "25.1.8937393" // Example version
|
||||
|
||||
sourceSets {
|
||||
main.java.srcDirs += 'src/main/kotlin'
|
||||
|
@ -96,6 +98,15 @@ android {
|
|||
minifyEnabled true
|
||||
shrinkResources true
|
||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||
firebaseCrashlytics {
|
||||
mappingFileUploadEnabled true
|
||||
nativeSymbolUploadEnabled false // Disable NDK symbol upload
|
||||
unstrippedNativeLibsDir "build/intermediates/merged_native_libs/release/out/lib" // Add this
|
||||
strippedNativeLibsDir "build/intermediates/stripped_native_libs/release/out/lib"
|
||||
|
||||
// Point to your google-services.json location
|
||||
// googleServicesResourceRoot "${project.projectDir}/../../android/app"
|
||||
}
|
||||
}
|
||||
debug {
|
||||
signingConfig signingConfigs.debug
|
||||
|
@ -128,4 +139,5 @@ dependencies {
|
|||
|
||||
}
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
// id 'com.google.firebase.crashlytics'
|
|
@ -3,7 +3,7 @@
|
|||
"project_number": "187064172787",
|
||||
"firebase_url": "https://accessmoblie-da839.firebaseio.com",
|
||||
"project_id": "accessmoblie-da839",
|
||||
"storage_bucket": "accessmoblie-da839.appspot.com"
|
||||
"storage_bucket": "accessmoblie-da839.firebasestorage.app"
|
||||
},
|
||||
"client": [
|
||||
{
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.8.22'
|
||||
ext.gradle_version = '8.6.0' // Replace with the latest version
|
||||
ext.google_services_version = '4.4.2' // Replace with the latest version
|
||||
ext.kotlin_version = '2.0.20'
|
||||
ext.gradle_version = '8.8.0' // Replace with the latest version
|
||||
ext.google_services_version = '4.4.1' // Replace with the latest version
|
||||
repositories {
|
||||
google()
|
||||
mavenCentral()
|
||||
|
@ -12,6 +12,7 @@ buildscript {
|
|||
// Use a versão do Gradle que corresponde à sua configuração
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "com.google.gms:google-services:$google_services_version"
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.9'
|
||||
// Google Services plugin
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
org.gradle.jvmargs=-Xmx4608m
|
||||
android.useAndroidX=true
|
||||
android.enableJetifier=true
|
||||
android.enableR8=true
|
||||
# android.enableR8=true
|
||||
enableProguardInReleaseBuilds = true
|
||||
|
|
|
@ -18,13 +18,13 @@ pluginManagement {
|
|||
|
||||
plugins {
|
||||
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
|
||||
id 'com.android.application' version '8.6.0' apply false
|
||||
id 'com.android.library' version '8.6.0' apply false
|
||||
id 'org.jetbrains.kotlin.android' version '1.8.22' apply false
|
||||
id 'com.android.application' version '8.8.0' apply false
|
||||
id 'com.android.library' version '8.8.0' apply false
|
||||
id 'org.jetbrains.kotlin.android' version '2.0.20' apply false
|
||||
|
||||
|
||||
// START: FlutterFire Configuration
|
||||
id "com.google.gms.google-services" version "4.3.15" apply false
|
||||
id "com.google.gms.google-services" version "4.4.1" apply false
|
||||
// END: FlutterFire Configuration
|
||||
// id "org.jetbrains.kotlin.android" version "1.7.10" apply false
|
||||
// id "org.jetbrains.kotlin.android" version "1.8.10" apply false
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
import 'dart:collection';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:app_tracking_transparency/app_tracking_transparency.dart';
|
||||
import 'package:firebase_core/firebase_core.dart';
|
||||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
|
@ -8,42 +12,65 @@ import 'package:go_router/go_router.dart';
|
|||
import 'package:hub/components/molecular_components/throw_exception/throw_exception_widget.dart';
|
||||
import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||
import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
|
||||
import 'package:hub/components/templates_components/forgot_password_template_component/forgot_password_template_component_widget.dart';
|
||||
import 'package:hub/features/backend/api_requests/index.dart';
|
||||
import 'package:hub/features/local/index.dart';
|
||||
import 'package:hub/features/menu/index.dart';
|
||||
import 'package:hub/features/module/data/index.dart';
|
||||
import 'package:hub/features/module/domain/index.dart';
|
||||
import 'package:hub/features/notification/index.dart';
|
||||
import 'package:hub/features/storage/index.dart';
|
||||
import 'package:hub/flutter_flow/index.dart' as ff;
|
||||
import 'package:hub/flutter_flow/index.dart';
|
||||
import 'package:hub/initialization.dart';
|
||||
import 'package:hub/main.dart';
|
||||
import 'package:integration_test/integration_test.dart';
|
||||
import 'package:hub/pages/forgot_password_page/forgot_password_screen.dart';
|
||||
import 'package:material_symbols_icons/symbols.dart';
|
||||
import 'package:patrol_finders/patrol_finders.dart';
|
||||
import 'package:flutter_web_plugins/url_strategy.dart';
|
||||
import 'package:patrol/patrol.dart';
|
||||
|
||||
import 'app_test.dart';
|
||||
import 'fuzzer/fuzzer.dart';
|
||||
|
||||
import 'package:patrol_finders/patrol_finders.dart';
|
||||
import 'package:integration_test/integration_test.dart';
|
||||
export 'package:flutter_test/flutter_test.dart';
|
||||
export 'package:patrol/patrol.dart';
|
||||
|
||||
part 'auth_test.dart';
|
||||
|
||||
part 'common.dart';
|
||||
|
||||
part 'home_test.dart';
|
||||
|
||||
part 'locals_test.dart';
|
||||
|
||||
part 'menu_test.dart';
|
||||
|
||||
part 'module_test.dart';
|
||||
|
||||
part 'notify_test.dart';
|
||||
|
||||
part 'profile_test.dart';
|
||||
|
||||
part 'property_test.dart';
|
||||
|
||||
part 'setting_test.dart';
|
||||
|
||||
part 'storage_test.dart';
|
||||
|
||||
part 'utils_test.dart';
|
||||
|
||||
part 'welcome_test.dart';
|
||||
|
||||
late PatrolTester $;
|
||||
|
||||
void main() {
|
||||
//init integration test
|
||||
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||
// IntegrationTestWidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
setUp(() async {});
|
||||
tearDown(() async {});
|
||||
// setUp(() async {});
|
||||
// tearDown(() async {});
|
||||
|
||||
WelcomeTest.signInToSignUp();
|
||||
WelcomeTest.signUpToSignIn();
|
||||
|
@ -51,6 +78,7 @@ void main() {
|
|||
AuthenticationTest.signIn();
|
||||
AuthenticationTest.signUp();
|
||||
AuthenticationTest.signOut();
|
||||
// AuthenticationTest.recovery();
|
||||
|
||||
ModularizationTest.switchLicense();
|
||||
ModularizationTest.containLicense();
|
||||
|
@ -61,4 +89,5 @@ void main() {
|
|||
|
||||
LocalsTest.setLocal();
|
||||
LocalsTest.unlinkLocal();
|
||||
LocalsTest.attachLocal();
|
||||
}
|
||||
|
|
|
@ -182,9 +182,7 @@ class AuthenticationTest {
|
|||
|
||||
await $.waitUntilVisible($(MenuStaggeredView));
|
||||
|
||||
await $(Icons.menu_rounded) //
|
||||
.waitUntilVisible()
|
||||
.tap();
|
||||
await $(Icons.menu_rounded).waitUntilVisible().tap();
|
||||
|
||||
await $.waitUntilVisible($(MenuListView));
|
||||
|
||||
|
@ -197,7 +195,28 @@ class AuthenticationTest {
|
|||
);
|
||||
}
|
||||
|
||||
static Future<void> recovery() async {}
|
||||
static void recovery() async {
|
||||
patrol('Open url in the app', ($) async {
|
||||
await _loggedWithMultiLocalsAccount();
|
||||
await $.pumpWidget(const App());
|
||||
|
||||
await $.waitUntilVisible($(MenuStaggeredView));
|
||||
|
||||
// await $.native.pressHome();
|
||||
// final String browserId = 'com.android.chrome';
|
||||
// await $.native.openApp(appId: browserId);
|
||||
await $.native.openUrl(//
|
||||
'https://freaccess.com.br/freaccess/alterarSenha.php?email=freaccesshub@gmail.com&token=67939240e12c31.10412525');
|
||||
|
||||
await $.pumpAndSettle();
|
||||
Future.delayed(Duration(seconds: 3));
|
||||
await $.pump(Duration(seconds: 3));
|
||||
await $.pumpAndSettle();
|
||||
final PatrolFinder forgotPassword =
|
||||
await $(#ForgotPasswordScreen).waitUntilVisible();
|
||||
expect(forgotPassword, findsOneWidget);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _auth(
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
part of 'app_test.dart';
|
||||
|
||||
final _PatrolTesterConfig = PatrolTesterConfig(printLogs: true);
|
||||
final _nativeAutomatorConfig = NativeAutomatorConfig(
|
||||
findTimeout: Duration(seconds: 20), // 10 seconds is too short for some CIs
|
||||
);
|
||||
|
||||
// Future<void> createApp(PatrolTester $) async {
|
||||
// await app_main.main();
|
||||
// await $.pumpAndSettle();
|
||||
// }
|
||||
|
||||
void patrol(
|
||||
String description,
|
||||
Future<void> Function(PatrolIntegrationTester) callback, {
|
||||
bool? skip,
|
||||
List<String> tags = const [],
|
||||
NativeAutomatorConfig? nativeAutomatorConfig,
|
||||
LiveTestWidgetsFlutterBindingFramePolicy framePolicy =
|
||||
LiveTestWidgetsFlutterBindingFramePolicy.fadePointers,
|
||||
}) {
|
||||
patrolTest(
|
||||
description,
|
||||
config: _PatrolTesterConfig,
|
||||
nativeAutomatorConfig: nativeAutomatorConfig ?? _nativeAutomatorConfig,
|
||||
framePolicy: framePolicy,
|
||||
skip: skip,
|
||||
callback,
|
||||
tags: tags,
|
||||
);
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -303,73 +303,61 @@ class LocalsTest {
|
|||
|
||||
static Future attachLocal() async {
|
||||
patrolWidgetTest(
|
||||
'Selecionar um local disponível com multíplos locais disponíveis', //
|
||||
'Auto-Validação de Locais com Multiplos Locais', //
|
||||
(PatrolTester tester) async {
|
||||
$ = tester;
|
||||
await _loggedWithMultiLocalsAccount();
|
||||
$.tester.printToConsole('Locals Test - Vincular um local desvinculado');
|
||||
|
||||
await _loggedWithMultiLocalsAccount(false);
|
||||
await $.pumpWidget(const App());
|
||||
late Map<String, String> credentials;
|
||||
final PatrolFinder throwsException = $('');
|
||||
|
||||
var name = ff.randomString(7, 7, true, true, true);
|
||||
var email = '$name@example.com';
|
||||
var password = '12345678';
|
||||
credentials = {
|
||||
'nameTextFormField': name,
|
||||
'emailTextFormField': email,
|
||||
'passwordTextFormField': password
|
||||
};
|
||||
final PatrolFinder bottomSheetFinder =
|
||||
await $(BottomArrowLinkedLocalsComponentWidget) //
|
||||
.waitUntilVisible();
|
||||
expect(bottomSheetFinder, findsOneWidget);
|
||||
|
||||
await $.pumpWidget(const App());
|
||||
await _navigateToSignUp($);
|
||||
await _auth(credentials, $, throwsException);
|
||||
credentials = {
|
||||
'emailTextFormField': email,
|
||||
'passwordTextFormField': password
|
||||
};
|
||||
await _auth(credentials, $, throwsException);
|
||||
await $.pump(const Duration(milliseconds: 500));
|
||||
|
||||
final PatrolFinder listViewFinder = $(bottomSheetFinder) //
|
||||
.$(ListView);
|
||||
expect(listViewFinder, findsOneWidget);
|
||||
|
||||
await $.pump(const Duration(milliseconds: 500));
|
||||
|
||||
final PatrolFinder entriesFinder = $(listViewFinder) //
|
||||
.$(CardItemTemplateComponentWidget);
|
||||
expect(entriesFinder, findsWidgets);
|
||||
|
||||
await $.pumpAndSettle();
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.clientUUID.key, '7');
|
||||
await $.pumpAndSettle();
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
return;
|
||||
},
|
||||
);
|
||||
patrolWidgetTest(
|
||||
'Selecionar um local disponível com somente um local disponível', //
|
||||
'Auto-Validação de Locais com local unico', //
|
||||
(PatrolTester tester) async {
|
||||
$ = tester;
|
||||
await _loggedWithSomeoneLocalAccount();
|
||||
$.tester.printToConsole('Locals Test - Vincular um local desvinculado');
|
||||
|
||||
await _loggedWithSomeoneLocalAccount(false);
|
||||
await $.pumpWidget(const App());
|
||||
late Map<String, String> credentials;
|
||||
final PatrolFinder throwsException = $('');
|
||||
|
||||
var name = ff.randomString(7, 7, true, true, true);
|
||||
var email = '$name@example.com';
|
||||
var password = '12345678';
|
||||
credentials = {
|
||||
'nameTextFormField': name,
|
||||
'emailTextFormField': email,
|
||||
'passwordTextFormField': password
|
||||
};
|
||||
final PatrolFinder bottomSheetFinder =
|
||||
await $(BottomArrowLinkedLocalsComponentWidget) //
|
||||
.waitUntilVisible();
|
||||
expect(bottomSheetFinder, findsOneWidget);
|
||||
|
||||
await $.pumpWidget(const App());
|
||||
await _navigateToSignUp($);
|
||||
await _auth(credentials, $, throwsException);
|
||||
credentials = {
|
||||
'emailTextFormField': email,
|
||||
'passwordTextFormField': password
|
||||
};
|
||||
await _auth(credentials, $, throwsException);
|
||||
await $.pump(const Duration(milliseconds: 500));
|
||||
|
||||
final PatrolFinder listViewFinder = $(bottomSheetFinder) //
|
||||
.$(ListView);
|
||||
expect(listViewFinder, findsOneWidget);
|
||||
|
||||
await $.pump(const Duration(milliseconds: 500));
|
||||
|
||||
final PatrolFinder entriesFinder = $(listViewFinder) //
|
||||
.$(CardItemTemplateComponentWidget);
|
||||
expect(entriesFinder, findsWidgets);
|
||||
|
||||
await $.pumpAndSettle();
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.clientUUID.key, '7');
|
||||
await $.pumpAndSettle();
|
||||
await Future.delayed(const Duration(milliseconds: 500));
|
||||
return;
|
||||
},
|
||||
);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import 'package:patrol/src/native/contracts/contracts.dart';
|
|||
import 'package:test_api/src/backend/invoker.dart';
|
||||
|
||||
// START: GENERATED TEST IMPORTS
|
||||
import 'app_test.dart' as app_test;
|
||||
import 'app_test.dart' as __app_test;
|
||||
// END: GENERATED TEST IMPORTS
|
||||
|
||||
Future<void> main() async {
|
||||
|
@ -31,7 +31,7 @@ Future<void> main() async {
|
|||
// When running on iOS, the native side of Patrol (specifically: the
|
||||
// PATROL_INTEGRATION_TEST_IOS_RUNNER macro) makes an initial run to gather
|
||||
// the tests that it will later run (same as the Android). During that initial
|
||||
// run, it makes an RPC call to PatrolAppSevice and asks it for Dart tests.
|
||||
// run, it makes an RPC call to PatrolAppService and asks it for Dart tests.
|
||||
//
|
||||
// Once the native runner has the list of Dart tests, it dynamically creates
|
||||
// native test cases from them. On Android, this is done using the
|
||||
|
@ -59,7 +59,8 @@ Future<void> main() async {
|
|||
// Maybe somewhat counterintuitively, this callback runs *after* the calls
|
||||
// to group() below.
|
||||
final topLevelGroup = Invoker.current!.liveTest.groups.first;
|
||||
final dartTestGroup = createDartTestGroup(topLevelGroup,
|
||||
final dartTestGroup = createDartTestGroup(
|
||||
topLevelGroup,
|
||||
tags: null,
|
||||
excludeTags: null,
|
||||
);
|
||||
|
@ -69,7 +70,7 @@ Future<void> main() async {
|
|||
});
|
||||
|
||||
// START: GENERATED TEST GROUPS
|
||||
group('app_test', app_test.main);
|
||||
group('.app_test', __app_test.main);
|
||||
// END: GENERATED TEST GROUPS
|
||||
|
||||
final dartTestGroup = await testExplorationCompleter.future;
|
||||
|
|
|
@ -2,7 +2,7 @@ part of 'app_test.dart';
|
|||
|
||||
Future<void> _loggedWithMultiLocalsAccount(
|
||||
[bool forceLinkedLocal = true]) async {
|
||||
await initializeApp();
|
||||
await _init();
|
||||
await StorageHelper() //
|
||||
.set(SecureStorageKey.isLogged.value, 'true');
|
||||
await StorageHelper() //
|
||||
|
@ -21,6 +21,10 @@ Future<void> _loggedWithMultiLocalsAccount(
|
|||
if (forceLinkedLocal == true) {
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.clientUUID.key, '7');
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.ownerUUID.key, '7');
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.clientName.key, 'FRE ACCESS DEMO');
|
||||
await PhpGroup //
|
||||
.resopndeVinculo
|
||||
.call(tarefa: 'A');
|
||||
|
@ -31,7 +35,7 @@ Future<void> _loggedWithMultiLocalsAccount(
|
|||
|
||||
Future<void> _loggedWithSomeoneLocalAccount(
|
||||
[bool forceLinkedLocal = true]) async {
|
||||
await initializeApp();
|
||||
await _init();
|
||||
await StorageHelper() //
|
||||
.set(SecureStorageKey.isLogged.value, 'true');
|
||||
await StorageHelper() //
|
||||
|
@ -50,6 +54,10 @@ Future<void> _loggedWithSomeoneLocalAccount(
|
|||
if (forceLinkedLocal == true) {
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.clientUUID.key, '7');
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.ownerUUID.key, '7');
|
||||
await StorageHelper() //
|
||||
.set(ProfileStorageKey.clientName.key, 'FRE ACCESS DEMO');
|
||||
await PhpGroup //
|
||||
.resopndeVinculo
|
||||
.call(tarefa: 'A');
|
||||
|
@ -59,7 +67,7 @@ Future<void> _loggedWithSomeoneLocalAccount(
|
|||
}
|
||||
|
||||
Future<void> _unlogged() async {
|
||||
await initializeApp();
|
||||
await _init();
|
||||
await StorageHelper() //
|
||||
.set(SecureStorageKey.isLogged.value, 'false');
|
||||
await StorageHelper() //
|
||||
|
@ -78,6 +86,18 @@ Future<void> _unlogged() async {
|
|||
.set(LocalsStorageKey.isNewVersion.key, true);
|
||||
}
|
||||
|
||||
Future<void> _init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await _initializeTracking();
|
||||
await _initializeStorage();
|
||||
await _initializeFirebase();
|
||||
await _initializeNotificationService();
|
||||
_initializeUrlStrategy();
|
||||
_initializeSystemSettings();
|
||||
await _initializeFlutterFlow();
|
||||
await _initializeNav();
|
||||
}
|
||||
|
||||
Future<void> _navigateToSignIn(PatrolTester $) async {
|
||||
final signInButton = $(#toggleSignInPage).waitUntilVisible();
|
||||
await signInButton.tap();
|
||||
|
@ -91,3 +111,61 @@ Future<void> _navigateToSignUp(PatrolTester $) async {
|
|||
Future<void> _navigateBackUsingSystemGesture() async =>
|
||||
IntegrationTestWidgetsFlutterBinding.instance.keyboard
|
||||
.isLogicalKeyPressed(LogicalKeyboardKey.escape);
|
||||
|
||||
Future<void> _initializeTracking() async {
|
||||
print('Requesting tracking authorization...');
|
||||
await AppTrackingTransparency.requestTrackingAuthorization();
|
||||
print('Tracking authorization requested');
|
||||
}
|
||||
|
||||
Future<void> _initializeFirebase() async {
|
||||
print('Initializing Firebase...');
|
||||
await Firebase.initializeApp();
|
||||
print('Firebase initialized');
|
||||
}
|
||||
|
||||
Future<void> _initializeNotificationService() async {
|
||||
print('Initializing Notification Service...');
|
||||
await NotificationService.initialize(false);
|
||||
|
||||
print('Notification Service initialized');
|
||||
}
|
||||
|
||||
void _initializeUrlStrategy() {
|
||||
print('Initializing URL Strategy...');
|
||||
setUrlStrategy(PathUrlStrategy());
|
||||
print('URL Strategy initialized');
|
||||
}
|
||||
|
||||
void _initializeSystemSettings() {
|
||||
print('Initializing System Settings...');
|
||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||
if (kDebugMode) {
|
||||
print('Debug mode');
|
||||
} else {
|
||||
final crashlyticsInstance = FirebaseCrashlytics.instance;
|
||||
print('Release mode');
|
||||
if (crashlyticsInstance.isCrashlyticsCollectionEnabled) {
|
||||
FlutterError.onError = crashlyticsInstance.recordFlutterError;
|
||||
print('Crashlytics enabled');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _initializeFlutterFlow() async {
|
||||
print('Initializing FlutterFlow...');
|
||||
await FlutterFlowTheme.initialize();
|
||||
await FFLocalizations.initialize();
|
||||
print('FlutterFlow initialized');
|
||||
}
|
||||
|
||||
Future<void> _initializeNav() async {
|
||||
print('Initializing Nav...');
|
||||
GoRouter.optionURLReflectsImperativeAPIs = true;
|
||||
usePathUrlStrategy();
|
||||
print('Nav initialized');
|
||||
}
|
||||
|
||||
Future<void> _initializeStorage() async {
|
||||
await StorageHelper().init();
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ class WelcomeTest {
|
|||
$.tester.printToConsole('Welcome Test - Sign-In to Sign-Up');
|
||||
await _unlogged();
|
||||
await $.pumpWidgetAndSettle(const App());
|
||||
|
||||
await _navigateToSignIn($);
|
||||
await _navigateToSignUp($);
|
||||
},
|
||||
|
|
|
@ -396,19 +396,19 @@ EXTERNAL SOURCES:
|
|||
:path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
app_links: e7a6750a915a9e161c58d91bc610e8cd1d4d0ad0
|
||||
app_tracking_transparency: e169b653478da7bb15a6c61209015378ca73e375
|
||||
awesome_notifications: dd5518ff1c80be03d4f1c40f04da9d9cc2a37af5
|
||||
app_links: 3da4c36b46cac3bf24eb897f1a6ce80bda109874
|
||||
app_tracking_transparency: 3d84f147f67ca82d3c15355c36b1fa6b66ca7c92
|
||||
awesome_notifications: 0f432b28098d193920b11a44cfa9d2d9313a3888
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
|
||||
device_info_plus: 71ffc6ab7634ade6267c7a93088ed7e4f74e5896
|
||||
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
||||
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
||||
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
|
||||
file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
|
||||
Firebase: 9f574c08c2396885b5e7e100ed4293d956218af9
|
||||
firebase_analytics: 1a66fe8d4375eccff44671ea37897683a78b2675
|
||||
firebase_core: ceec591a66629daaee82d3321551692c4a871493
|
||||
firebase_crashlytics: e4f04180f443d5a8b56fbc0685bdbd7d90dd26f0
|
||||
firebase_messaging: 15d8b557010f3bb7b98d0302e1c7c8fbcd244425
|
||||
firebase_analytics: 2090f32a7f5364b03cdf11aa7e904f4610309563
|
||||
firebase_core: 53cecb83c72fea329b267bb0accb06a33e9f036a
|
||||
firebase_crashlytics: 4a35a15cbb0d9ba176f9bb2dfd3aa44c762c434f
|
||||
firebase_messaging: 62c8a01f1ee118754d01dd4fd83ba670980326a3
|
||||
FirebaseAnalytics: 27eb78b97880ea4a004839b9bac0b58880f5a92a
|
||||
FirebaseCore: 3cf438f431f18c12cdf2aaf64434648b63f7e383
|
||||
FirebaseCoreExtension: 30bb063476ef66cd46925243d64ad8b2c8ac3264
|
||||
|
@ -419,42 +419,42 @@ SPEC CHECKSUMS:
|
|||
FirebaseRemoteConfigInterop: c3a5c31b3c22079f41ba1dc645df889d9ce38cb9
|
||||
FirebaseSessions: 655ff17f3cc1a635cbdc2d69b953878001f9e25b
|
||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||
flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
|
||||
flutter_secure_storage_darwin: 12d2375c690785d97a4e586f15f11be5ae35d5b0
|
||||
fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
|
||||
google_mlkit_commons: 384e4e206e122b6dad430d3158205e0b2fac6789
|
||||
google_mlkit_face_detection: ff627695d8eba051db7e0f13f7b20d802df1f84c
|
||||
flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
|
||||
flutter_secure_storage_darwin: ce237a8775b39723566dc72571190a3769d70468
|
||||
fluttertoast: 76fea30fcf04176325f6864c87306927bd7d2038
|
||||
google_mlkit_commons: 92c769cc2e0a2bfdeb3c38091a36e8a9cc8c63d4
|
||||
google_mlkit_face_detection: 76f493a9ffcb1aeb0ad4abd13ea58403e092ab84
|
||||
GoogleAppMeasurement: 6e49ffac7d3f2c3ded9cc663f912a13b67bbd0de
|
||||
GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
|
||||
GoogleMLKit: eff9e23ec1d90ea4157a1ee2e32a4f610c5b3318
|
||||
GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
|
||||
GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d
|
||||
GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
|
||||
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
||||
integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
|
||||
image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
|
||||
integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
|
||||
IosAwnCore: 653786a911089012092ce831f2945cd339855a89
|
||||
local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
|
||||
local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391
|
||||
MLImage: 0ad1c5f50edd027672d8b26b0fee78a8b4a0fc56
|
||||
MLKitCommon: 07c2c33ae5640e5380beaaa6e4b9c249a205542d
|
||||
MLKitFaceDetection: 2a593db4837db503ad3426b565e7aab045cefea5
|
||||
MLKitVision: 45e79d68845a2de77e2dd4d7f07947f0ed157b0e
|
||||
nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
|
||||
OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
|
||||
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
patrol: 0564cee315ff6c86fb802b3647db05cc2d3d0624
|
||||
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
|
||||
package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
|
||||
path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
|
||||
patrol: dd82ffedfee3aba87c1d0ed2daad0b77bfb8ee1f
|
||||
permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
|
||||
PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
|
||||
PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
|
||||
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
|
||||
share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
|
||||
share_plus: 011d6fb4f9d2576b83179a3a5c5e323202cdabcf
|
||||
shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
|
||||
sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
|
||||
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
||||
Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
|
||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||
webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4
|
||||
url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
|
||||
webview_flutter_wkwebview: 44d4dee7d7056d5ad185d25b38404436d56c547c
|
||||
|
||||
PODFILE CHECKSUM: 1214504d483029dbea12c83e130a53cc7299687f
|
||||
|
||||
COCOAPODS: 1.15.2
|
||||
COCOAPODS: 1.16.2
|
||||
|
|
|
@ -216,6 +216,7 @@
|
|||
9705A1C41CF9048500538489 /* Embed Frameworks */,
|
||||
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
|
||||
DB4ADAD93A6C1B6E82A2FDA3 /* [CP] Copy Pods Resources */,
|
||||
106EFC912B39433BCC0D0CA9 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -290,6 +291,24 @@
|
|||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
106EFC912B39433BCC0D0CA9 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\"";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\n#!/bin/bash\nPATH=\"${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\"\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=\"$PODS_ROOT/FirebaseCrashlytics/upload-symbols\" --platform=ios --apple-project-path=\"${SRCROOT}\" --env-platform-name=\"${PLATFORM_NAME}\" --env-configuration=\"${CONFIGURATION}\" --env-project-dir=\"${PROJECT_DIR}\" --env-built-products-dir=\"${BUILT_PRODUCTS_DIR}\" --env-dwarf-dsym-folder-path=\"${DWARF_DSYM_FOLDER_PATH}\" --env-dwarf-dsym-file-name=\"${DWARF_DSYM_FILE_NAME}\" --env-infoplist-path=\"${INFOPLIST_PATH}\" --default-config=default\n";
|
||||
};
|
||||
35A087622D3ED1C700BEE419 /* xcode_backend build */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<key>PROJECT_ID</key>
|
||||
<string>accessmoblie-da839</string>
|
||||
<key>STORAGE_BUCKET</key>
|
||||
<string>accessmoblie-da839.appspot.com</string>
|
||||
<string>accessmoblie-da839.firebasestorage.app</string>
|
||||
<key>IS_ADS_ENABLED</key>
|
||||
<false></false>
|
||||
<key>IS_ANALYTICS_ENABLED</key>
|
||||
|
|
|
@ -58,6 +58,7 @@ class _ForgotPasswordTemplateComponentWidgetState
|
|||
LimitedFontSizeUtil.getHeaderFontSize(context);
|
||||
|
||||
return Align(
|
||||
key: ValueKey('ForgotPasswordTemplateComponentWidget'),
|
||||
alignment: const AlignmentDirectional(0.0, 1.0),
|
||||
child: SingleChildScrollView(
|
||||
child: Container(
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||
|
@ -364,8 +365,8 @@ class ProvisionalHistoryState extends State<ProvisionalHistoryPage> {
|
|||
enText: 'Name:',
|
||||
): historyItem['AGP_NOME'] ?? '',
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Data:',
|
||||
enText: 'Data:',
|
||||
ptText: 'Vencimento',
|
||||
enText: 'Expiration',
|
||||
): formatDate(historyItem['AGP_DT_VISITA']),
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Observação:',
|
||||
|
@ -398,19 +399,34 @@ class ProvisionalHistoryState extends State<ProvisionalHistoryPage> {
|
|||
enText: 'Visitor',
|
||||
): FlutterFlowTheme.of(context).alternate2,
|
||||
},
|
||||
_getStatusMap(context, historyItem['AGP_STATUS'])
|
||||
_getStatusMap(context, historyItem)
|
||||
];
|
||||
}
|
||||
|
||||
Map<String, Color> _getStatusMap(BuildContext context, String status) {
|
||||
switch (status) {
|
||||
Map<String, Color> _getStatusMap(BuildContext context, dynamic json) {
|
||||
late Map<String, Color> statusColorMap;
|
||||
log(DateTime.parse(json['AGP_DT_VISITA']).toString());
|
||||
log(DateTime.now().toString());
|
||||
final DateTime now = DateTime.now();
|
||||
final DateTime date = DateTime.parse(json['AGP_DT_VISITA']);
|
||||
final bool isExpired = now.isAfter(date);
|
||||
|
||||
final String statusMap = json['AGP_STATUS'];
|
||||
switch (statusMap) {
|
||||
case 'AT':
|
||||
return {
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Ativo',
|
||||
enText: 'Active',
|
||||
): FlutterFlowTheme.of(context).success,
|
||||
};
|
||||
return isExpired
|
||||
? {
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Vencido',
|
||||
enText: 'Expired',
|
||||
): FlutterFlowTheme.of(context).error,
|
||||
}
|
||||
: {
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Ativo',
|
||||
enText: 'Active',
|
||||
): FlutterFlowTheme.of(context).success,
|
||||
};
|
||||
case 'CO':
|
||||
return {
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import 'dart:developer';
|
||||
|
||||
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
|
@ -7,6 +8,8 @@ import 'package:hub/flutter_flow/flutter_flow_icon_button.dart';
|
|||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
||||
import 'package:hub/flutter_flow/internationalization.dart';
|
||||
import 'package:hub/shared/utils/log_util.dart';
|
||||
import 'package:stack_trace/stack_trace.dart';
|
||||
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
|
@ -130,6 +133,20 @@ class _AboutSystemPageState extends State<AboutSystemPage> {
|
|||
width: 100,
|
||||
child: Image.asset('assets/images/fre.png'),
|
||||
);
|
||||
// return GestureDetector(
|
||||
// onTap: () {
|
||||
// final exception = Exception('Crashando');
|
||||
// final stackTrace = Trace.current();
|
||||
// LogUtil.requestAPIFailed("proccessRequest.php", "", "Consulta de Pets",
|
||||
// exception, stackTrace);
|
||||
// FirebaseCrashlytics.instance.crash();
|
||||
// },
|
||||
// child: SizedBox(
|
||||
// height: 100,
|
||||
// width: 100,
|
||||
// child: Image.asset('assets/images/fre.png'),
|
||||
// ),
|
||||
// );
|
||||
}
|
||||
|
||||
Widget _buildLaunch() {
|
||||
|
|
|
@ -151,11 +151,13 @@ class LocalsRemoteDataSourceImpl implements LocalsRemoteDataSource {
|
|||
|
||||
@override
|
||||
Future<bool> checkLocals(BuildContext context) async {
|
||||
String cliUUID =
|
||||
(await StorageHelper().get(ProfileStorageKey.clientUUID.key)) ?? '';
|
||||
String cliName =
|
||||
(await StorageHelper().get(ProfileStorageKey.clientName.key)) ?? '';
|
||||
return cliUUID.isEmpty && cliName.isEmpty;
|
||||
final String? cliUUID =
|
||||
await StorageHelper().get(ProfileStorageKey.clientUUID.key);
|
||||
final String? cliName =
|
||||
await StorageHelper().get(ProfileStorageKey.clientName.key);
|
||||
final haveCli = cliUUID != null && cliUUID.isNotEmpty;
|
||||
final haveName = cliName != null && cliName.isNotEmpty;
|
||||
return haveCli && haveName;
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -56,6 +56,7 @@ class LocalsRepositoryImpl implements LocalsRepository {
|
|||
final bool haveCli = cliUUID != null && cliUUID.isNotEmpty;
|
||||
final bool haveOwner = ownerUUID != null && ownerUUID.isNotEmpty;
|
||||
if (!haveCli && !haveOwner) {
|
||||
log('No client or owner selected');
|
||||
await update(context);
|
||||
await FirebaseMessagingService().updateDeviceToken();
|
||||
}
|
||||
|
@ -64,7 +65,8 @@ class LocalsRepositoryImpl implements LocalsRepository {
|
|||
Future<bool> _handleLocal(BuildContext context) async {
|
||||
bool response = false;
|
||||
final bool isUnselected = await remoteDataSource.checkLocals(context);
|
||||
if (isUnselected) {
|
||||
if (!isUnselected) {
|
||||
log('_handleLocal -> No local selected');
|
||||
while (!response) {
|
||||
try {
|
||||
response = await remoteDataSource.processLocals(context);
|
||||
|
@ -77,6 +79,8 @@ class LocalsRepositoryImpl implements LocalsRepository {
|
|||
}
|
||||
}
|
||||
} else {
|
||||
log('_handleLocal -> Local selected');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,11 @@ class DeepLinkService {
|
|||
context: navigatorKey.currentContext!,
|
||||
builder: (context) => Padding(
|
||||
padding: MediaQuery.viewInsetsOf(context),
|
||||
child: ForgotPasswordScreen(email: email, token: token),
|
||||
child: ForgotPasswordScreen(
|
||||
key: ValueKey('ForgotPasswordScreen'),
|
||||
email: email,
|
||||
token: token,
|
||||
),
|
||||
),
|
||||
isScrollControlled: true,
|
||||
backgroundColor: FlutterFlowTheme.of(navigatorKey.currentContext!)
|
||||
|
|
|
@ -260,7 +260,7 @@ Future<void> onMessageReceived(
|
|||
}
|
||||
|
||||
class NotificationService {
|
||||
static Future<void> initialize() async {
|
||||
static Future<void> initialize([bool forceRequest = true]) async {
|
||||
await AwesomeNotifications().initialize(
|
||||
'resource://drawable/notification_icon',
|
||||
[
|
||||
|
@ -296,7 +296,8 @@ class NotificationService {
|
|||
if (isAllowed == false) {
|
||||
await StorageHelper()
|
||||
.set(LocalsStorageKey.requestOSNotification.key, true);
|
||||
await AwesomeNotifications().requestPermissionToSendNotifications();
|
||||
if (forceRequest == true)
|
||||
await AwesomeNotifications().requestPermissionToSendNotifications();
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
|
|
@ -53,7 +53,7 @@ class DefaultFirebaseOptions {
|
|||
projectId: 'accessmoblie-da839',
|
||||
authDomain: 'accessmoblie-da839.firebaseapp.com',
|
||||
databaseURL: 'https://accessmoblie-da839.firebaseio.com',
|
||||
storageBucket: 'accessmoblie-da839.appspot.com',
|
||||
storageBucket: 'accessmoblie-da839.firebasestorage.app',
|
||||
measurementId: 'G-L4BQGX2WLZ',
|
||||
);
|
||||
|
||||
|
@ -63,7 +63,7 @@ class DefaultFirebaseOptions {
|
|||
messagingSenderId: '187064172787',
|
||||
projectId: 'accessmoblie-da839',
|
||||
databaseURL: 'https://accessmoblie-da839.firebaseio.com',
|
||||
storageBucket: 'accessmoblie-da839.appspot.com',
|
||||
storageBucket: 'accessmoblie-da839.firebasestorage.app',
|
||||
);
|
||||
|
||||
static const FirebaseOptions ios = FirebaseOptions(
|
||||
|
@ -72,7 +72,7 @@ class DefaultFirebaseOptions {
|
|||
messagingSenderId: '187064172787',
|
||||
projectId: 'accessmoblie-da839',
|
||||
databaseURL: 'https://accessmoblie-da839.firebaseio.com',
|
||||
storageBucket: 'accessmoblie-da839.appspot.com',
|
||||
storageBucket: 'accessmoblie-da839.firebasestorage.app',
|
||||
androidClientId:
|
||||
'187064172787-7et0qu5p2qtmisvqgndn3kfi1b7u9ifl.apps.googleusercontent.com',
|
||||
iosClientId:
|
||||
|
|
|
@ -152,7 +152,7 @@ GoRouter createRouter(AppStateNotifier appStateNotifier) {
|
|||
params.getParam('token', ParamType.String);
|
||||
|
||||
return ForgotPasswordScreen(
|
||||
key: UniqueKey(),
|
||||
key: ValueKey('ForgotPasswordScreen'),
|
||||
email: email,
|
||||
token: token,
|
||||
);
|
||||
|
|
|
@ -50,18 +50,32 @@ void _initializeUrlStrategy() {
|
|||
print('URL Strategy initialized');
|
||||
}
|
||||
|
||||
void _initializeSystemSettings() {
|
||||
Future<void> _initializeSystemSettings() async {
|
||||
print('Initializing System Settings...');
|
||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||
final crashlyticsInstance = FirebaseCrashlytics.instance;
|
||||
|
||||
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||
if (kDebugMode) {
|
||||
//kDebugMode
|
||||
print('Debug mode');
|
||||
} else {
|
||||
final crashlyticsInstance = FirebaseCrashlytics.instance;
|
||||
print('Release mode');
|
||||
if (crashlyticsInstance.isCrashlyticsCollectionEnabled) {
|
||||
FlutterError.onError = crashlyticsInstance.recordFlutterError;
|
||||
print('Crashlytics enabled');
|
||||
bool unsentReports =
|
||||
await FirebaseCrashlytics.instance.checkForUnsentReports();
|
||||
if (unsentReports) {
|
||||
// Existem relatórios não enviados
|
||||
await crashlyticsInstance.sendUnsentReports();
|
||||
print('Existem relatórios de falhas não enviados.');
|
||||
} else {
|
||||
// Não existem relatórios não enviados
|
||||
print('Todos os relatórios de falhas foram enviados.');
|
||||
}
|
||||
} else {
|
||||
print('Release mode');
|
||||
|
||||
await crashlyticsInstance.setCrashlyticsCollectionEnabled(true);
|
||||
// if (crashlyticsInstance.isCrashlyticsCollectionEnabled) {
|
||||
FlutterError.onError = await crashlyticsInstance.recordFlutterError;
|
||||
print('Crashlytics enabled');
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -181,7 +181,8 @@ class _AppState extends State<App> {
|
|||
);
|
||||
|
||||
_setupFirebaseMessaging();
|
||||
if (TestUtil.isInTest) DeepLinkService().ensureInitialization();
|
||||
// if (TestUtil.isInTest) //
|
||||
DeepLinkService().ensureInitialization();
|
||||
}
|
||||
|
||||
@override
|
||||
|
|
|
@ -116,6 +116,7 @@ class _ForgotPasswordScreenState extends State<ForgotPasswordScreen>
|
|||
},
|
||||
),
|
||||
title: Text(
|
||||
key: ValueKey('ForgotPasswordText'),
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Recuperar Senha',
|
||||
enText: 'Recover Password',
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hub/components/templates_components/card_item_template_component/card_item_template_component_widget.dart';
|
||||
import 'package:hub/features/backend/index.dart';
|
||||
|
@ -196,6 +198,8 @@ class _VisitHistoryWidgetState extends State<VisitHistoryWidget>
|
|||
}
|
||||
|
||||
Widget _item(BuildContext context, dynamic visitaWrapItem) {
|
||||
log(DateTime.now().toString());
|
||||
log(visitaWrapItem['VAW_DTFIM'].toString());
|
||||
return CardItemTemplateComponentWidget(
|
||||
imagePath:
|
||||
'https://freaccess.com.br/freaccess/getImage.php?devUUID=$devUUID&userUUID=$userUUID&cliID=$cliUUID&atividade=getFoto&Documento=${visitaWrapItem['VTE_DOCUMENTO'] ?? ''}&tipo=E',
|
||||
|
@ -218,10 +222,19 @@ class _VisitHistoryWidgetState extends State<VisitHistoryWidget>
|
|||
statusHashMap: [
|
||||
if (Status.getStatus(visitaWrapItem['VAW_STATUS']) == StatusEnum.active)
|
||||
{
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Ativo',
|
||||
enText: 'Active',
|
||||
): FlutterFlowTheme.of(context).warning,
|
||||
if (visitaWrapItem['VAW_DTFIM'] != '' &&
|
||||
visitaWrapItem['VAW_DTFIM'] != null)
|
||||
if (DateTime.now().isAfter(
|
||||
DateTime.parse(visitaWrapItem['VAW_DTFIM'] as String)))
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Vencido',
|
||||
enText: 'Expired',
|
||||
): FlutterFlowTheme.of(context).error
|
||||
else
|
||||
FFLocalizations.of(context).getVariableText(
|
||||
ptText: 'Ativo',
|
||||
enText: 'Active',
|
||||
): FlutterFlowTheme.of(context).warning,
|
||||
},
|
||||
if (Status.getStatus(visitaWrapItem['VAW_STATUS']) ==
|
||||
StatusEnum.finished)
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
|
134
pubspec.lock
134
pubspec.lock
|
@ -114,10 +114,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: barcode
|
||||
sha256: ab180ce22c6555d77d45f0178a523669db67f95856e3378259ef2ffeb43e6003
|
||||
sha256: "7b6729c37e3b7f34233e2318d866e8c48ddb46c1f7ad01ff7bb2a8de1da2b9f4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.8"
|
||||
version: "2.2.9"
|
||||
barcode_widget:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -146,50 +146,62 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: build
|
||||
sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
|
||||
sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
|
||||
sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.1"
|
||||
version: "2.4.2"
|
||||
version: "2.4.2"
|
||||
build_config:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_config
|
||||
sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
|
||||
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
|
||||
sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.1"
|
||||
version: "1.1.2"
|
||||
version: "1.1.2"
|
||||
build_daemon:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_daemon
|
||||
sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
|
||||
sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948"
|
||||
sha256: "294a2edaf4814a378725bfe6358210196f5ea37af89ecd81bfa32960113d4948"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.0.3"
|
||||
version: "4.0.3"
|
||||
build_resolvers:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_resolvers
|
||||
sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
|
||||
sha256: "99d3980049739a985cf9b21f30881f46db3ebc62c5b8d5e60e27440876b1ba1e"
|
||||
sha256: "99d3980049739a985cf9b21f30881f46db3ebc62c5b8d5e60e27440876b1ba1e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.3"
|
||||
version: "2.4.3"
|
||||
build_runner:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
name: build_runner
|
||||
sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
|
||||
sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573"
|
||||
sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.13"
|
||||
version: "2.4.14"
|
||||
version: "2.4.14"
|
||||
build_runner_core:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: build_runner_core
|
||||
sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
|
||||
sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
|
||||
sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.3.2"
|
||||
version: "8.0.0"
|
||||
version: "8.0.0"
|
||||
built_collection:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -330,10 +342,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: dart_style
|
||||
sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
|
||||
sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.7"
|
||||
version: "2.3.8"
|
||||
device_info_plus:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -824,18 +836,20 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: glob
|
||||
sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63"
|
||||
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
|
||||
sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.3"
|
||||
version: "2.1.3"
|
||||
go_router:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: go_router
|
||||
sha256: "7c2d40b59890a929824f30d442e810116caf5088482629c894b9e4478c67472d"
|
||||
sha256: "9b736a9fa879d8ad6df7932cbdcc58237c173ab004ef90d8377923d7ad731eaa"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "14.6.3"
|
||||
version: "14.7.2"
|
||||
google_fonts:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -896,10 +910,12 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: http_parser
|
||||
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
|
||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
||||
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.2"
|
||||
version: "4.1.2"
|
||||
version: "4.1.2"
|
||||
image:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
@ -952,10 +968,12 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_macos
|
||||
sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62"
|
||||
sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1"
|
||||
sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.1+1"
|
||||
version: "0.2.1+2"
|
||||
version: "0.2.1+2"
|
||||
image_picker_platform_interface:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1021,10 +1039,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: json_path
|
||||
sha256: "7a06bbb1cfad390b20fb7a2ca5e67d9ba59633879c6d71142b80fbf61c3b66f6"
|
||||
sha256: a3a06eb005f2e93d0df7f263cdf76bbd02c7602f5c4bed9be94fcca4c36be03e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.4"
|
||||
version: "0.7.5"
|
||||
json_serializable:
|
||||
dependency: "direct dev"
|
||||
description:
|
||||
|
@ -1061,10 +1079,12 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: lints
|
||||
sha256: "3315600f3fb3b135be672bf4a178c55f274bebe368325ae18462c89ac1e3b413"
|
||||
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
|
||||
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.0"
|
||||
version: "5.1.1"
|
||||
version: "5.1.1"
|
||||
local_auth:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1181,10 +1201,12 @@ packages:
|
|||
dependency: "direct dev"
|
||||
description:
|
||||
name: mockito
|
||||
sha256: "6841eed20a7befac0ce07df8116c8b8233ed1f4486a7647c7fc5a02ae6163917"
|
||||
sha256: f99d8d072e249f719a5531735d146d8cf04c580d93920b04de75bef6dfb2daf6
|
||||
sha256: f99d8d072e249f719a5531735d146d8cf04c580d93920b04de75bef6dfb2daf6
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.4.4"
|
||||
version: "5.4.5"
|
||||
version: "5.4.5"
|
||||
nested:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1221,10 +1243,10 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: package_info_plus
|
||||
sha256: "739e0a5c3c4055152520fa321d0645ee98e932718b4c8efeeb51451968fe0790"
|
||||
sha256: b15fad91c4d3d1f2b48c053dd41cb82da007c27407dc9ab5f9aa59881d0e39d4
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "8.1.3"
|
||||
version: "8.1.4"
|
||||
package_info_plus_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1461,10 +1483,12 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: pubspec_parse
|
||||
sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
|
||||
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
|
||||
sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.0"
|
||||
version: "1.5.0"
|
||||
version: "1.5.0"
|
||||
qr:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1533,18 +1557,20 @@ packages:
|
|||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences
|
||||
sha256: a752ce92ea7540fc35a0d19722816e04d0e72828a4200e83a98cf1a1eb524c9a
|
||||
sha256: c59819dacc6669a1165d54d2735a9543f136f9b3cec94ca65cea6ab8dffc422e
|
||||
sha256: c59819dacc6669a1165d54d2735a9543f136f9b3cec94ca65cea6ab8dffc422e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.5"
|
||||
version: "2.4.0"
|
||||
version: "2.4.0"
|
||||
shared_preferences_android:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: "138b7bbbc7f59c56236e426c37afb8f78cbc57b094ac64c440e0bb90e380a4f5"
|
||||
sha256: "650584dcc0a39856f369782874e562efd002a9c94aec032412c9eb81419cce1f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.2"
|
||||
version: "2.4.4"
|
||||
shared_preferences_foundation:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
|
@ -1589,10 +1615,12 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: shelf
|
||||
sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
|
||||
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
|
||||
sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.4.1"
|
||||
version: "1.4.2"
|
||||
version: "1.4.2"
|
||||
shelf_packages_handler:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1874,10 +1902,12 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_web
|
||||
sha256: "772638d3b34c779ede05ba3d38af34657a05ac55b06279ea6edd409e323dca8e"
|
||||
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9"
|
||||
sha256: "3ba963161bd0fe395917ba881d320b9c4f6dd3c4a233da62ab18a5025c85f1e9"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3"
|
||||
version: "2.4.0"
|
||||
version: "2.4.0"
|
||||
url_launcher_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1898,10 +1928,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics
|
||||
sha256: "27d5fefe86fb9aace4a9f8375b56b3c292b64d8c04510df230f849850d912cb7"
|
||||
sha256: "7ed22c21d7fdcc88dd6ba7860384af438cd220b251ad65dfc142ab722fabef61"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.15"
|
||||
version: "1.1.16"
|
||||
vector_graphics_codec:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -1962,10 +1992,12 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: web_socket_channel
|
||||
sha256: "9f187088ed104edd8662ca07af4b124465893caf063ba29758f97af57e61da8f"
|
||||
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
|
||||
sha256: "0b8e2457400d8a859b7b2030786835a28a8e80836ef64402abef392ff4f1d0e5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.1"
|
||||
version: "3.0.2"
|
||||
version: "3.0.2"
|
||||
webdriver:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -2010,10 +2042,10 @@ packages:
|
|||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_wkwebview
|
||||
sha256: "4adc14ea9a770cc9e2c8f1ac734536bd40e82615bd0fa6b94be10982de656cc7"
|
||||
sha256: "8e0593559bfecd35eb1757d6907ed6b995a41ef82607d6113df897c2805ce6be"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.17.0"
|
||||
version: "3.18.0"
|
||||
win32:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
|
@ -2055,5 +2087,7 @@ packages:
|
|||
source: hosted
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.5.0 <4.0.0"
|
||||
flutter: ">=3.24.0"
|
||||
dart: ">=3.6.0 <4.0.0"
|
||||
flutter: ">=3.27.0"
|
||||
dart: ">=3.6.0 <4.0.0"
|
||||
flutter: ">=3.27.0"
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
flutter clean
|
||||
flutter pub get
|
||||
patrol test --target integration_test/app_test.dart --verbose
|
|
@ -0,0 +1,3 @@
|
|||
flutter clean
|
||||
flutter pub get
|
||||
patrol test --target integration_test/app_test.dart
|
Loading…
Reference in New Issue