WD:deeplink changes.
parent
68eab7639c
commit
bdcda02b26
@ -0,0 +1,100 @@
|
||||
import 'package:diplomaticquarterapp/config/shared_pref_kay.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
|
||||
import 'package:diplomaticquarterapp/uitl/penguin_method_channel.dart';
|
||||
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../pages/BookAppointment/Search.dart';
|
||||
import 'app-permissions.dart';
|
||||
|
||||
enum DeepLinkNavigation {
|
||||
APPOINTMENT("/appointment", false),
|
||||
LIVE_CARE("/lifecare", true),
|
||||
NAVIGATE("/navigate", false);
|
||||
|
||||
final String name;
|
||||
final bool isLoginRequired;
|
||||
|
||||
const DeepLinkNavigation(this.name, this.isLoginRequired);
|
||||
}
|
||||
|
||||
class DeepLinkHandler {
|
||||
final projectID = "projectID";
|
||||
final clinicId = "clinicId";
|
||||
|
||||
DeepLinkNavigation? navigationType;
|
||||
Uri? uri;
|
||||
|
||||
DeepLinkHandler._();
|
||||
|
||||
static final DeepLinkHandler _instance = DeepLinkHandler._();
|
||||
|
||||
static DeepLinkHandler get instance => _instance;
|
||||
|
||||
void handleDeepLinkAndNavigation(
|
||||
NavigatorState? currentState, Uri uri, BuildContext context) async {
|
||||
var url = uri.toString().replaceFirst(
|
||||
"https://hmg.com/Pages/PageNotFoundError.aspx?requestUrl=", "");
|
||||
|
||||
uri = Uri.parse(url);
|
||||
this.uri = uri;
|
||||
print(
|
||||
"the uri contains ${uri.path.toLowerCase() == DeepLinkNavigation.NAVIGATE.name}");
|
||||
print("the uri.path ${uri.path}");
|
||||
if (uri.path.toLowerCase() == DeepLinkNavigation.NAVIGATE.name) {
|
||||
await Future.delayed(Duration(seconds: 1));
|
||||
navigationType = DeepLinkNavigation.NAVIGATE;
|
||||
var queryParam = uri.queryParameters;
|
||||
print("the query params are $queryParam");
|
||||
initPenguinSDK(
|
||||
queryParam[projectID] ?? "", queryParam[clinicId] ?? "", context);
|
||||
removeDeepLinkData();
|
||||
return;
|
||||
}
|
||||
if (uri.path.toLowerCase() == DeepLinkNavigation.APPOINTMENT.name) {
|
||||
navigationType = DeepLinkNavigation.NAVIGATE;
|
||||
currentState?.push(FadePage(page: Search()));
|
||||
removeDeepLinkData();
|
||||
return;
|
||||
}
|
||||
if (uri.path.toLowerCase() == DeepLinkNavigation.LIVE_CARE.name) {
|
||||
var viewModel = Provider.of(context);
|
||||
if (viewModel.isLogin) {
|
||||
currentState?.push(FadePage(page: Search()));
|
||||
removeDeepLinkData();
|
||||
return;
|
||||
} else {}
|
||||
}
|
||||
}
|
||||
|
||||
void removeDeepLinkData() {
|
||||
navigationType = null;
|
||||
uri = null;
|
||||
}
|
||||
|
||||
initPenguinSDK(
|
||||
String projectId, String clinicID, BuildContext context) async {
|
||||
AppSharedPreferences sharedPref = AppSharedPreferences();
|
||||
NavigationClinicDetails data = NavigationClinicDetails();
|
||||
data.clinicId = clinicID;
|
||||
|
||||
data.projectId = projectId;
|
||||
final bool permited = await AppPermission.askPenguinPermissions();
|
||||
if (!permited) {
|
||||
Map<Permission, PermissionStatus> statuses = await [
|
||||
Permission.location,
|
||||
Permission.bluetooth,
|
||||
Permission.bluetoothConnect,
|
||||
Permission.bluetoothScan,
|
||||
Permission.activityRecognition,
|
||||
].request().whenComplete(() async {
|
||||
final currentLanguage =
|
||||
await sharedPref.getStringWithDefaultValue(APP_LANGUAGE, 'ar');
|
||||
PenguinMethodChannel()
|
||||
.launch("penguin", currentLanguage, "", details: data);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue