diff --git a/lib/src/utils/extensions.dart b/lib/src/utils/extensions.dart index 5d776fa..cd20a90 100644 --- a/lib/src/utils/extensions.dart +++ b/lib/src/utils/extensions.dart @@ -1,4 +1,4 @@ -import 'package:flutter_inappwebview/flutter_inappwebview.dart' +import 'package:flutter_inappwebview_kontext/flutter_inappwebview_kontext.dart' show ChromeSafariBrowser, WebUri, ChromeSafariBrowserSettings; import 'package:kontext_flutter_sdk/src/services/logger.dart'; import 'package:kontext_flutter_sdk/src/utils/helper_methods.dart'; diff --git a/lib/src/widgets/ad_format.dart b/lib/src/widgets/ad_format.dart index de48e52..f2e2e9d 100644 --- a/lib/src/widgets/ad_format.dart +++ b/lib/src/widgets/ad_format.dart @@ -3,7 +3,7 @@ import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:flutter_inappwebview_kontext/flutter_inappwebview_kontext.dart'; import 'package:kontext_flutter_sdk/src/models/ad_event.dart'; import 'package:kontext_flutter_sdk/src/models/message.dart'; import 'package:kontext_flutter_sdk/src/services/logger.dart'; diff --git a/lib/src/widgets/ads_provider.dart b/lib/src/widgets/ads_provider.dart index 5593e32..9f2a975 100644 --- a/lib/src/widgets/ads_provider.dart +++ b/lib/src/widgets/ads_provider.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart' show HookWidget, useState, useEffect; -import 'package:flutter_inappwebview/flutter_inappwebview.dart' +import 'package:flutter_inappwebview_kontext/flutter_inappwebview_kontext.dart' show PlatformInAppWebViewController, DebugLoggingSettings; import 'package:kontext_flutter_sdk/src/models/bid.dart'; import 'package:kontext_flutter_sdk/src/models/regulatory.dart'; diff --git a/lib/src/widgets/kontext_webview.dart b/lib/src/widgets/kontext_webview.dart index 293b396..570b9ff 100644 --- a/lib/src/widgets/kontext_webview.dart +++ b/lib/src/widgets/kontext_webview.dart @@ -1,7 +1,8 @@ import 'dart:collection' show UnmodifiableListView; import 'package:flutter/material.dart'; -import 'package:flutter_inappwebview/flutter_inappwebview.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_inappwebview_kontext/flutter_inappwebview_kontext.dart'; import 'package:kontext_flutter_sdk/src/services/logger.dart' show Logger; import 'package:kontext_flutter_sdk/src/utils/types.dart' show Json; @@ -65,7 +66,7 @@ typedef KontextWebviewBuilder = Widget Function({ required OnMessageReceived onMessageReceived, }); -class KontextWebview extends StatelessWidget { +class KontextWebview extends HookWidget { const KontextWebview({ super.key, required this.uri, @@ -81,7 +82,14 @@ class KontextWebview extends StatelessWidget { @override Widget build(BuildContext context) { + final instanceId = useMemoized(() => 'kontext-webview-${DateTime.now().millisecondsSinceEpoch}'); + + useEffect(() { + return () => OmidSessionController.stopSession(instanceId); + }, const []); + return InAppWebView( + instanceId: instanceId, initialUrlRequest: URLRequest(url: WebUri.uri(uri)), initialUserScripts: UnmodifiableListView([_earlyBridge]), initialSettings: InAppWebViewSettings( @@ -102,7 +110,15 @@ class KontextWebview extends StatelessWidget { return NavigationActionPolicy.CANCEL; }, - onWebViewCreated: (controller) { + onWebViewCreated: (controller) async { + final list = await InAppWebViewController.getAllRegisteredInstanceIds(); + final sessionStartResult = await OmidSessionController.startSession( + instanceId: instanceId, + partnerName: 'Kontext', + partnerVersion: '1.0.0', + ); + print('WebView instances: $list'); + controller.addJavaScriptHandler( handlerName: 'postMessage', callback: (args) { diff --git a/pubspec.yaml b/pubspec.yaml index 416a80a..061f193 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,7 +26,9 @@ dependencies: flutter: sdk: flutter flutter_hooks: ^0.21.2 - flutter_inappwebview: ^6.1.5 + flutter_inappwebview_kontext: ^6.1.5+1.kontext.0 +# flutter_inappwebview_kontext: +# path: ../flutter_inappwebview_kontext/flutter_inappwebview http: ^1.4.0 package_info_plus: ^8.3.0