WIP
This commit is contained in:
parent
2ac27d7db7
commit
e557601a90
|
@ -48,11 +48,8 @@
|
||||||
android:resource="@drawable/launch_background"
|
android:resource="@drawable/launch_background"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<intent-filter>
|
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<!-- <meta-data android:name="flutter_deeplinking_enabled" android:value="true" /> -->
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
|
||||||
</intent-filter>
|
|
||||||
<!-- <meta-data android:name="flutter_deeplinking_enabled" android:value="true" />
|
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
@ -68,14 +65,14 @@
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
|
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
|
||||||
<category android:name="android.intent.category.DEFAULT" />
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
</intent-filter> -->
|
</intent-filter>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<!-- <meta-data
|
<!-- <meta-data
|
||||||
android:name="com.google.firebase.messaging.default_notification_icon"
|
android:name="com.google.firebase.messaging.notification_icon"
|
||||||
android:resource="@drawable/notification_icon" /> -->
|
android:resource="@drawable/notification_icon" /> -->
|
||||||
|
|
||||||
<!-- Don't delete the meta-data below.
|
<!-- Don't delete the meta-data below.
|
||||||
|
|
|
@ -31,28 +31,28 @@ class FirebaseMessagingService {
|
||||||
Future<void> initNotifications() async {
|
Future<void> initNotifications() async {
|
||||||
await _firebaseMessaging.requestPermission();
|
await _firebaseMessaging.requestPermission();
|
||||||
|
|
||||||
_refreshToken();
|
_firebaseMessaging.onTokenRefresh.listen((token) => updateDeviceToken);
|
||||||
|
|
||||||
_firebaseMessaging.setAutoInitEnabled(false);
|
_firebaseMessaging.setAutoInitEnabled(false);
|
||||||
_firebaseMessaging.pluginConstants;
|
_firebaseMessaging.pluginConstants;
|
||||||
|
|
||||||
FirebaseMessaging.onBackgroundMessage(handleMessage);
|
// FirebaseMessaging.onBackgroundMessage(handleMessage);
|
||||||
|
|
||||||
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
// FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
||||||
handleMessage(message);
|
// handleMessage(message);
|
||||||
});
|
// });
|
||||||
|
|
||||||
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
|
// FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
|
||||||
log('A Message was opened: $message');
|
// log('A Message was opened: $message');
|
||||||
});
|
// });
|
||||||
|
|
||||||
FirebaseMessaging.instance
|
// FirebaseMessaging.instance
|
||||||
.getInitialMessage()
|
// .getInitialMessage()
|
||||||
.then((RemoteMessage? message) {
|
// .then((RemoteMessage? message) {
|
||||||
if (message != null) {
|
// if (message != null) {
|
||||||
log('A Message was opened: $message');
|
// log('A Message was opened: $message');
|
||||||
}
|
// }
|
||||||
});
|
// });
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> updateDeviceToken() async {
|
Future<void> updateDeviceToken() async {
|
||||||
|
@ -79,8 +79,4 @@ class FirebaseMessagingService {
|
||||||
LogUtil.requestAPIFailed("updToken.php", "", "Atualizar Token", e, s);
|
LogUtil.requestAPIFailed("updToken.php", "", "Atualizar Token", e, s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _refreshToken() {
|
|
||||||
_firebaseMessaging.onTokenRefresh.listen((token) => updateDeviceToken);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,12 +12,12 @@ import 'package:flutter_web_plugins/url_strategy.dart';
|
||||||
import 'package:hub/backend/api_requests/api_calls.dart';
|
import 'package:hub/backend/api_requests/api_calls.dart';
|
||||||
import 'package:hub/backend/api_requests/api_manager.dart';
|
import 'package:hub/backend/api_requests/api_manager.dart';
|
||||||
import 'package:hub/backend/notifications/firebase_messaging_service.dart';
|
import 'package:hub/backend/notifications/firebase_messaging_service.dart';
|
||||||
|
import 'package:hub/shared/utils/log_util.dart';
|
||||||
import 'package:hub/backend/notifications/notification_service.dart';
|
import 'package:hub/backend/notifications/notification_service.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
||||||
import 'package:hub/flutter_flow/internationalization.dart';
|
import 'package:hub/flutter_flow/internationalization.dart';
|
||||||
import 'package:hub/flutter_flow/nav/nav.dart';
|
import 'package:hub/flutter_flow/nav/nav.dart';
|
||||||
import 'package:hub/shared/utils/log_util.dart';
|
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:responsive_framework/responsive_framework.dart';
|
import 'package:responsive_framework/responsive_framework.dart';
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ Future<void> initializeApp() async {
|
||||||
await appState.initializePersistedState();
|
await appState.initializePersistedState();
|
||||||
|
|
||||||
await Firebase.initializeApp();
|
await Firebase.initializeApp();
|
||||||
// await NotificationService.initialize();
|
await NotificationService.initialize();
|
||||||
|
|
||||||
setUrlStrategy(const PathUrlStrategy());
|
setUrlStrategy(const PathUrlStrategy());
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
|
@ -82,32 +82,6 @@ class _AppState extends State<App> {
|
||||||
late AppStateNotifier _appStateNotifier;
|
late AppStateNotifier _appStateNotifier;
|
||||||
late GoRouter _router;
|
late GoRouter _router;
|
||||||
bool displaySplashImage = true;
|
bool displaySplashImage = true;
|
||||||
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging.instance;
|
|
||||||
|
|
||||||
Future<void> updateDeviceToken() async {
|
|
||||||
try {
|
|
||||||
final String? deviceToken = await _firebaseMessaging.getToken();
|
|
||||||
|
|
||||||
if (deviceToken != null) {
|
|
||||||
AppState().token = deviceToken;
|
|
||||||
|
|
||||||
final ApiCallResponse? response = await PhpGroup.updToken.call(
|
|
||||||
token: AppState().token,
|
|
||||||
devid: AppState().devUUID,
|
|
||||||
useruuid: AppState().userUUID);
|
|
||||||
|
|
||||||
if (PhpGroup.updToken.error((response?.jsonBody ?? '')) == false) {
|
|
||||||
log('Token Atualizado com Sucesso!');
|
|
||||||
} else {
|
|
||||||
log('Falha ao Atualizar Token: ${response?.jsonBody}');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
log('Falha ao Pegar Token do Firebase');
|
|
||||||
}
|
|
||||||
} catch (e, s) {
|
|
||||||
LogUtil.requestAPIFailed("updToken.php", "", "Atualizar Token", e, s);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -121,9 +95,6 @@ class _AppState extends State<App> {
|
||||||
Future.delayed(const Duration(milliseconds: 1000),
|
Future.delayed(const Duration(milliseconds: 1000),
|
||||||
() => setState(() => _appStateNotifier.stopShowingSplashImage()));
|
() => setState(() => _appStateNotifier.stopShowingSplashImage()));
|
||||||
|
|
||||||
_firebaseMessaging.requestPermission();
|
|
||||||
// _firebaseMessaging.pluginConstants;
|
|
||||||
|
|
||||||
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
|
||||||
log('Received message: ${message.toMap()}');
|
log('Received message: ${message.toMap()}');
|
||||||
});
|
});
|
||||||
|
@ -131,20 +102,12 @@ class _AppState extends State<App> {
|
||||||
log('Message opened: ${message.notification?.body}');
|
log('Message opened: ${message.notification?.body}');
|
||||||
});
|
});
|
||||||
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
|
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
|
||||||
|
|
||||||
FirebaseMessaging.instance.getInitialMessage().then((message) {
|
FirebaseMessaging.instance.getInitialMessage().then((message) {
|
||||||
if (message != null) {
|
if (message != null) {
|
||||||
log('Initial message: ${message.notification?.body}');
|
log('Initial message: ${message.notification?.body}');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
_firebaseMessaging.onTokenRefresh.listen((token) => updateDeviceToken);
|
|
||||||
|
|
||||||
getToken();
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> getToken() async {
|
|
||||||
String? token = await _firebaseMessaging.getToken();
|
|
||||||
log('Token: $token');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -2,12 +2,14 @@ import 'dart:async';
|
||||||
import 'dart:developer';
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:firebase_messaging/firebase_messaging.dart';
|
import 'package:firebase_messaging/firebase_messaging.dart';
|
||||||
|
import 'package:hub/backend/notifications/notification_service.dart';
|
||||||
|
import 'package:hub/shared/utils/log_util.dart';
|
||||||
|
|
||||||
import 'package:flutter/gestures.dart';
|
import 'package:flutter/gestures.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:google_fonts/google_fonts.dart';
|
import 'package:google_fonts/google_fonts.dart';
|
||||||
import 'package:hub/backend/api_requests/api_calls.dart';
|
import 'package:hub/backend/api_requests/api_calls.dart';
|
||||||
import 'package:hub/backend/notifications/firebase_messaging_service.dart';
|
import 'package:hub/backend/notifications/firebase_messaging_service.dart';
|
||||||
import 'package:hub/backend/notifications/notification_service.dart';
|
|
||||||
import 'package:hub/backend/schema/enums/enums.dart';
|
import 'package:hub/backend/schema/enums/enums.dart';
|
||||||
import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
import 'package:hub/components/organism_components/bottom_arrow_linked_locals_component/bottom_arrow_linked_locals_component_widget.dart';
|
||||||
import 'package:hub/components/organism_components/local_profile_component/local_profile_component_widget.dart';
|
import 'package:hub/components/organism_components/local_profile_component/local_profile_component_widget.dart';
|
||||||
|
@ -17,7 +19,6 @@ import 'package:hub/flutter_flow/flutter_flow_theme.dart';
|
||||||
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
import 'package:hub/flutter_flow/flutter_flow_util.dart';
|
||||||
import 'package:hub/pages/home_page/home_page_model.dart';
|
import 'package:hub/pages/home_page/home_page_model.dart';
|
||||||
import 'package:hub/shared/utils/dialog_util.dart';
|
import 'package:hub/shared/utils/dialog_util.dart';
|
||||||
import 'package:hub/shared/utils/log_util.dart';
|
|
||||||
import 'package:hub/shared/widgets/drawer_widget/drawer_widget.dart';
|
import 'package:hub/shared/widgets/drawer_widget/drawer_widget.dart';
|
||||||
|
|
||||||
class HomePageWidget extends StatefulWidget {
|
class HomePageWidget extends StatefulWidget {
|
||||||
|
@ -37,77 +38,6 @@ class _HomePageWidgetState extends State<HomePageWidget> {
|
||||||
LocalProfileComponentWidget(showBottomSheet: showModalSelectLocal);
|
LocalProfileComponentWidget(showBottomSheet: showModalSelectLocal);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> processData() async {
|
|
||||||
try {
|
|
||||||
var response = await PhpGroup.getDadosCall.call(
|
|
||||||
devUUID: AppState().devUUID,
|
|
||||||
userUUID: AppState().userUUID,
|
|
||||||
cliUUID: AppState().cliUUID,
|
|
||||||
atividade: 'getDados',
|
|
||||||
);
|
|
||||||
|
|
||||||
final error = response.jsonBody['error'];
|
|
||||||
final errorMsg = response.jsonBody['error_msg'];
|
|
||||||
|
|
||||||
if (error == false) {
|
|
||||||
AppState().whatsapp = response.jsonBody['whatsapp'] ?? false;
|
|
||||||
AppState().provisional = response.jsonBody['provisional'] ?? false;
|
|
||||||
AppState().name = response.jsonBody['visitado']['VDO_NOME'];
|
|
||||||
safeSetState(() {});
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DialogUtil.warningDefault(context).whenComplete(() => processLocals());
|
|
||||||
safeSetState(() {});
|
|
||||||
return;
|
|
||||||
} catch (e, s) {
|
|
||||||
DialogUtil.warningDefault(context).whenComplete(() => processLocals());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> processLocals() async {
|
|
||||||
try {
|
|
||||||
var response = await PhpGroup.getLocalsCall.call(
|
|
||||||
devUUID: AppState().devUUID,
|
|
||||||
userUUID: AppState().userUUID,
|
|
||||||
);
|
|
||||||
|
|
||||||
List<dynamic> locals = response.jsonBody['locais'] ?? [];
|
|
||||||
|
|
||||||
final activeLocals =
|
|
||||||
locals.where((local) => local['CLU_STATUS'] == 'A').toList();
|
|
||||||
|
|
||||||
if (activeLocals.isEmpty || AppState().cliUUID.isEmpty) {
|
|
||||||
await showModalSelectLocal();
|
|
||||||
} else {
|
|
||||||
await processData();
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
await showModalSelectLocal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> showModalSelectLocal() async {
|
|
||||||
await showModalBottomSheet(
|
|
||||||
isScrollControlled: true,
|
|
||||||
backgroundColor: Colors.transparent,
|
|
||||||
enableDrag: false,
|
|
||||||
isDismissible: false,
|
|
||||||
context: context,
|
|
||||||
builder: (context) => Padding(
|
|
||||||
padding: MediaQuery.viewInsetsOf(context),
|
|
||||||
child: const BottomArrowLinkedLocalsComponentWidget(),
|
|
||||||
),
|
|
||||||
).then((_) async {
|
|
||||||
_model.updatePage(() => safeSetState(() {
|
|
||||||
_localProfileComponentWidget = LocalProfileComponentWidget(
|
|
||||||
showBottomSheet: showModalSelectLocal);
|
|
||||||
}));
|
|
||||||
|
|
||||||
await processData();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
@ -121,6 +51,8 @@ class _HomePageWidgetState extends State<HomePageWidget> {
|
||||||
_model = createModel(context, () => HomePageModel());
|
_model = createModel(context, () => HomePageModel());
|
||||||
_model.updateOnChange = true;
|
_model.updateOnChange = true;
|
||||||
|
|
||||||
|
FirebaseMessagingService().updateDeviceToken();
|
||||||
|
|
||||||
() async {
|
() async {
|
||||||
if (AppState().cliUUID.isEmpty) {
|
if (AppState().cliUUID.isEmpty) {
|
||||||
await processLocals();
|
await processLocals();
|
||||||
|
@ -251,4 +183,75 @@ class _HomePageWidgetState extends State<HomePageWidget> {
|
||||||
child: _localProfileComponentWidget,
|
child: _localProfileComponentWidget,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> processData() async {
|
||||||
|
try {
|
||||||
|
var response = await PhpGroup.getDadosCall.call(
|
||||||
|
devUUID: AppState().devUUID,
|
||||||
|
userUUID: AppState().userUUID,
|
||||||
|
cliUUID: AppState().cliUUID,
|
||||||
|
atividade: 'getDados',
|
||||||
|
);
|
||||||
|
|
||||||
|
final error = response.jsonBody['error'];
|
||||||
|
final errorMsg = response.jsonBody['error_msg'];
|
||||||
|
|
||||||
|
if (error == false) {
|
||||||
|
AppState().whatsapp = response.jsonBody['whatsapp'] ?? false;
|
||||||
|
AppState().provisional = response.jsonBody['provisional'] ?? false;
|
||||||
|
AppState().name = response.jsonBody['visitado']['VDO_NOME'];
|
||||||
|
safeSetState(() {});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DialogUtil.warningDefault(context).whenComplete(() => processLocals());
|
||||||
|
safeSetState(() {});
|
||||||
|
return;
|
||||||
|
} catch (e, s) {
|
||||||
|
DialogUtil.warningDefault(context).whenComplete(() => processLocals());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> processLocals() async {
|
||||||
|
try {
|
||||||
|
var response = await PhpGroup.getLocalsCall.call(
|
||||||
|
devUUID: AppState().devUUID,
|
||||||
|
userUUID: AppState().userUUID,
|
||||||
|
);
|
||||||
|
|
||||||
|
List<dynamic> locals = response.jsonBody['locais'] ?? [];
|
||||||
|
|
||||||
|
final activeLocals =
|
||||||
|
locals.where((local) => local['CLU_STATUS'] == 'A').toList();
|
||||||
|
|
||||||
|
if (activeLocals.isEmpty || AppState().cliUUID.isEmpty) {
|
||||||
|
await showModalSelectLocal();
|
||||||
|
} else {
|
||||||
|
await processData();
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
await showModalSelectLocal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> showModalSelectLocal() async {
|
||||||
|
await showModalBottomSheet(
|
||||||
|
isScrollControlled: true,
|
||||||
|
backgroundColor: Colors.transparent,
|
||||||
|
enableDrag: false,
|
||||||
|
isDismissible: false,
|
||||||
|
context: context,
|
||||||
|
builder: (context) => Padding(
|
||||||
|
padding: MediaQuery.viewInsetsOf(context),
|
||||||
|
child: const BottomArrowLinkedLocalsComponentWidget(),
|
||||||
|
),
|
||||||
|
).then((_) async {
|
||||||
|
_model.updatePage(() => safeSetState(() {
|
||||||
|
_localProfileComponentWidget = LocalProfileComponentWidget(
|
||||||
|
showBottomSheet: showModalSelectLocal);
|
||||||
|
}));
|
||||||
|
|
||||||
|
await processData();
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue