WD:deeplink changes.

dev_v3.13.6_deep_link
taha.alam 8 months ago committed by Syed Taha Alam
parent 68eab7639c
commit bdcda02b26

@ -146,7 +146,7 @@
tools:node="merge"> tools:node="merge">
<meta-data <meta-data
android:name="flutter_deeplinking_enabled" android:name="flutter_deeplinking_enabled"
android:value="false" /> android:value="true" />
<!-- <!--
Specifies an Android theme to apply to this Activity as soon as Specifies an Android theme to apply to this Activity as soon as
@ -181,7 +181,7 @@
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<data <data
android:host="hmg.com" android:host="www.hmg.com"
android:scheme="http" /> android:scheme="http" />
<data android:scheme="https" /> <data android:scheme="https" />
</intent-filter> </intent-filter>

@ -708,6 +708,7 @@ var applePayMerchantId = "merchant.com.hmgwebservices";
class AppGlobal { class AppGlobal {
static var context; static var context;
static var projectViewModelContext;
AppSharedPreferences sharedPref = AppSharedPreferences(); AppSharedPreferences sharedPref = AppSharedPreferences();

@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/search_provider.dart';
import 'package:diplomaticquarterapp/theme/theme_notifier.dart'; import 'package:diplomaticquarterapp/theme/theme_notifier.dart';
import 'package:diplomaticquarterapp/theme/theme_value.dart'; import 'package:diplomaticquarterapp/theme/theme_value.dart';
import 'package:diplomaticquarterapp/uitl/DeepLinkHandler.dart';
import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart'; import 'package:diplomaticquarterapp/uitl/PlatformBridge.dart';
import 'package:diplomaticquarterapp/uitl/navigation_service.dart'; import 'package:diplomaticquarterapp/uitl/navigation_service.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
@ -112,7 +113,8 @@ class _MyApp extends State<MyApp> {
void openAppLink(Uri uri) { void openAppLink(Uri uri) {
print("the uri is $uri"); print("the uri is $uri");
// locator<NavigationService>().navigatorKey.currentState?.pushNamed(uri.fragment); DeepLinkHandler.instance.handleDeepLinkAndNavigation(
locator<NavigationService>().navigatorKey.currentState, uri, context);
} }
@override @override
@ -171,7 +173,8 @@ class _MyApp extends State<MyApp> {
], ],
child: Consumer<ProjectViewModel>( child: Consumer<ProjectViewModel>(
builder: (context, projectProvider, child) => MaterialApp( builder: (context, projectProvider, child) => MaterialApp(
builder: (_, mchild) { builder: (context, mchild) {
AppGlobal.projectViewModelContext = context;
return MediaQuery( return MediaQuery(
data: MediaQuery.of(context).copyWith( data: MediaQuery.of(context).copyWith(
textScaler: TextScaler.linear(1.0), textScaler: TextScaler.linear(1.0),

@ -41,10 +41,8 @@ import 'package:diplomaticquarterapp/uitl/penguin_method_channel.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/uitl/utils_new.dart'; import 'package:diplomaticquarterapp/uitl/utils_new.dart';
import 'package:diplomaticquarterapp/vital_signs/vital_sign.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/covid_consent_dialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/location_selection_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/location_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/radio_selection_dialog.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart'; import 'package:flutter_svg/flutter_svg.dart';
@ -220,7 +218,7 @@ class ServicesView extends StatelessWidget {
].request().whenComplete(() { ].request().whenComplete(() {
PenguinMethodChannel().launch("penguin", projectViewModel.isArabic ? "ar" : "en", projectViewModel.authenticatedUserObject.user.patientID.toString()); PenguinMethodChannel().launch("penguin", projectViewModel.isArabic ? "ar" : "en", projectViewModel.authenticatedUserObject.user.patientID.toString());
}); });
} // }
} }
handleHomePageServices(HmgServices hmgServices, BuildContext context) { handleHomePageServices(HmgServices hmgServices, BuildContext context) {

@ -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…
Cancel
Save