From 1389249862149df3caf9b500753f6f73f385da11 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Sun, 23 Nov 2025 22:20:08 +0800 Subject: [PATCH 01/11] Add Dio interceptor for capturing network events with Posthog --- .../network_performance/dio_interceptor.dart | 92 +++++++++++++++++++ pubspec.yaml | 1 + 2 files changed, 93 insertions(+) create mode 100644 lib/src/replay/network_performance/dio_interceptor.dart diff --git a/lib/src/replay/network_performance/dio_interceptor.dart b/lib/src/replay/network_performance/dio_interceptor.dart new file mode 100644 index 0000000..ed9af2e --- /dev/null +++ b/lib/src/replay/network_performance/dio_interceptor.dart @@ -0,0 +1,92 @@ +import 'package:dio/dio.dart'; +import 'package:posthog_flutter/posthog_flutter.dart'; + +class PosthogDioInterceptor extends Interceptor { + @override + Future onResponse( + Response response, + ResponseInterceptorHandler handler, + ) async { + await _captureNetworkEvent( + response: response, + ); + super.onResponse(response, handler); + } + + @override + Future onError( + DioException err, + ErrorInterceptorHandler handler, + ) async { + final Response? response = err.response; + if (response != null) { + await _captureNetworkEvent(response: response); + } + super.onError(err, handler); + } + + Future _captureNetworkEvent({ + required Response response, + }) async { + final String url = response.requestOptions.uri.toString(); + final String method = response.requestOptions.method; + final int statusCode = response.statusCode ?? 0; + final Object? publishableRequest = _tryTransformDataToPublishableObject( + data: response.requestOptions.data, + ); + final Object? publishableResponse = _tryTransformDataToPublishableObject( + data: response.data, + ); + final Map snapshotData = { + 'type': 6, + 'data': { + 'plugin': 'rrweb/network@1', + 'payload': { + 'url': url, + 'method': method, + 'status_code': statusCode, + if (publishableRequest != null) 'request': publishableRequest, + if (publishableResponse != null) 'response': publishableResponse, + }, + }, + 'timestamp': DateTime.now().millisecondsSinceEpoch, + }; + await Posthog().capture( + eventName: r'$snapshot', + properties: { + r'$snapshot_source': 'mobile', + r'$snapshot_data': snapshotData, + }, + ); + } + + Object? _tryTransformDataToPublishableObject({required dynamic data}) { + if (data == null) { + return null; + } + + if (data is Map || + data is String || + data is num || + data is bool || + data is Iterable) { + return data; + } + + if (data is FormData) { + return >>{ + 'fields': data.fields, + 'files': data.files + .map( + (MapEntry e) => MapEntry( + e.key, + e.value.filename ?? 'unknown', + ), + ) + .toList(growable: false), + }; + } + + return data.toString(); + } +} diff --git a/pubspec.yaml b/pubspec.yaml index af351f0..d6db0a2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,6 +19,7 @@ dependencies: # plugin_platform_interface depends on meta anyway meta: ^1.3.0 stack_trace: ^1.12.0 + dio: ^5.9.0 dev_dependencies: flutter_lints: ^5.0.0 From bbe3b7d59e80d6267ed4453f08a1122b0b6ea7fb Mon Sep 17 00:00:00 2001 From: TabooSun Date: Mon, 24 Nov 2025 20:09:37 +0800 Subject: [PATCH 02/11] Extract PostHog Dio interceptor into a standalone package --- .gitignore | 2 +- lib/posthog_flutter.dart | 1 + packages/posthog_dio_interceptor/.gitignore | 7 +++ packages/posthog_dio_interceptor/CHANGELOG.md | 3 ++ packages/posthog_dio_interceptor/README.md | 39 +++++++++++++++ .../analysis_options.yaml | 18 +++++++ .../lib/posthog_dio_interceptor.dart | 6 +++ .../lib/src}/dio_interceptor.dart | 50 +++++++++++++------ packages/posthog_dio_interceptor/pubspec.yaml | 21 ++++++++ pubspec.yaml | 1 - 10 files changed, 131 insertions(+), 17 deletions(-) create mode 100644 packages/posthog_dio_interceptor/.gitignore create mode 100644 packages/posthog_dio_interceptor/CHANGELOG.md create mode 100644 packages/posthog_dio_interceptor/README.md create mode 100644 packages/posthog_dio_interceptor/analysis_options.yaml create mode 100644 packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart rename {lib/src/replay/network_performance => packages/posthog_dio_interceptor/lib/src}/dio_interceptor.dart (63%) create mode 100644 packages/posthog_dio_interceptor/pubspec.yaml diff --git a/.gitignore b/.gitignore index c41c2fd..5afc586 100644 --- a/.gitignore +++ b/.gitignore @@ -461,7 +461,7 @@ PublishScripts/ # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* +#**/[Pp]ackages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed diff --git a/lib/posthog_flutter.dart b/lib/posthog_flutter.dart index 521b5fd..1552712 100644 --- a/lib/posthog_flutter.dart +++ b/lib/posthog_flutter.dart @@ -5,3 +5,4 @@ export 'src/posthog_config.dart'; export 'src/posthog_observer.dart'; export 'src/posthog_widget.dart'; export 'src/replay/mask/posthog_mask_widget.dart'; +export 'src/replay/native_communicator.dart'; diff --git a/packages/posthog_dio_interceptor/.gitignore b/packages/posthog_dio_interceptor/.gitignore new file mode 100644 index 0000000..3cceda5 --- /dev/null +++ b/packages/posthog_dio_interceptor/.gitignore @@ -0,0 +1,7 @@ +# https://dart.dev/guides/libraries/private-files +# Created by `dart pub` +.dart_tool/ + +# Avoid committing pubspec.lock for library packages; see +# https://dart.dev/guides/libraries/private-files#pubspeclock. +pubspec.lock diff --git a/packages/posthog_dio_interceptor/CHANGELOG.md b/packages/posthog_dio_interceptor/CHANGELOG.md new file mode 100644 index 0000000..effe43c --- /dev/null +++ b/packages/posthog_dio_interceptor/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 + +- Initial version. diff --git a/packages/posthog_dio_interceptor/README.md b/packages/posthog_dio_interceptor/README.md new file mode 100644 index 0000000..8831761 --- /dev/null +++ b/packages/posthog_dio_interceptor/README.md @@ -0,0 +1,39 @@ + + +TODO: Put a short description of the package here that helps potential users +know whether this package might be useful for them. + +## Features + +TODO: List what your package can do. Maybe include images, gifs, or videos. + +## Getting started + +TODO: List prerequisites and provide or point to information on how to +start using the package. + +## Usage + +TODO: Include short and useful examples for package users. Add longer examples +to `/example` folder. + +```dart +const like = 'sample'; +``` + +## Additional information + +TODO: Tell users more about the package: where to find more information, how to +contribute to the package, how to file issues, what response they can expect +from the package authors, and more. diff --git a/packages/posthog_dio_interceptor/analysis_options.yaml b/packages/posthog_dio_interceptor/analysis_options.yaml new file mode 100644 index 0000000..7120410 --- /dev/null +++ b/packages/posthog_dio_interceptor/analysis_options.yaml @@ -0,0 +1,18 @@ +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +linter: + rules: + unnecessary_library_name: false \ No newline at end of file diff --git a/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart new file mode 100644 index 0000000..81b347e --- /dev/null +++ b/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart @@ -0,0 +1,6 @@ +/// Support for doing something awesome. +/// +/// More dartdocs go here. +library; + +export 'src/dio_interceptor.dart'; \ No newline at end of file diff --git a/lib/src/replay/network_performance/dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart similarity index 63% rename from lib/src/replay/network_performance/dio_interceptor.dart rename to packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart index ed9af2e..2811683 100644 --- a/lib/src/replay/network_performance/dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart @@ -1,15 +1,27 @@ import 'package:dio/dio.dart'; import 'package:posthog_flutter/posthog_flutter.dart'; -class PosthogDioInterceptor extends Interceptor { +/// A Dio interceptor that captures network events and sends them to PostHog. +class PostHogDioInterceptor extends Interceptor { + final NativeCommunicator _nativeCommunicator = NativeCommunicator(); + final bool attachPayloads; + + PostHogDioInterceptor({ + required this.attachPayloads, + }); + @override Future onResponse( Response response, ResponseInterceptorHandler handler, ) async { - await _captureNetworkEvent( - response: response, - ); + final isSessionReplayActive = + await _nativeCommunicator.isSessionReplayActive(); + if (isSessionReplayActive) { + _captureNetworkEvent( + response: response, + ); + } super.onResponse(response, handler); } @@ -18,25 +30,33 @@ class PosthogDioInterceptor extends Interceptor { DioException err, ErrorInterceptorHandler handler, ) async { - final Response? response = err.response; - if (response != null) { - await _captureNetworkEvent(response: response); + final isSessionReplayActive = + await _nativeCommunicator.isSessionReplayActive(); + if (isSessionReplayActive) { + final Response? response = err.response; + if (response != null) { + _captureNetworkEvent(response: response); + } } super.onError(err, handler); } - Future _captureNetworkEvent({ + void _captureNetworkEvent({ required Response response, }) async { final String url = response.requestOptions.uri.toString(); final String method = response.requestOptions.method; final int statusCode = response.statusCode ?? 0; - final Object? publishableRequest = _tryTransformDataToPublishableObject( - data: response.requestOptions.data, - ); - final Object? publishableResponse = _tryTransformDataToPublishableObject( - data: response.data, - ); + final Object? publishableRequest = attachPayloads + ? _tryTransformDataToPublishableObject( + data: response.requestOptions.data, + ) + : null; + final Object? publishableResponse = attachPayloads + ? _tryTransformDataToPublishableObject( + data: response.data, + ) + : null; final Map snapshotData = { 'type': 6, 'data': { @@ -51,7 +71,7 @@ class PosthogDioInterceptor extends Interceptor { }, 'timestamp': DateTime.now().millisecondsSinceEpoch, }; - await Posthog().capture( + Posthog().capture( eventName: r'$snapshot', properties: { r'$snapshot_source': 'mobile', diff --git a/packages/posthog_dio_interceptor/pubspec.yaml b/packages/posthog_dio_interceptor/pubspec.yaml new file mode 100644 index 0000000..ee6041d --- /dev/null +++ b/packages/posthog_dio_interceptor/pubspec.yaml @@ -0,0 +1,21 @@ +name: posthog_dio_interceptor +description: A starting point for Dart libraries or applications. +version: 1.0.0 +# repository: https://github.com/my_org/my_repo + +environment: + sdk: '>=3.4.0 <4.0.0' + flutter: '>=3.22.0' + +# Add regular dependencies here. +dependencies: + dio: ^5.9.0 + posthog_flutter: ^5.9.0 + +dependency_overrides: + posthog_flutter: + path: ../.. + +dev_dependencies: + lints: ^6.0.0 + test: ^1.25.6 diff --git a/pubspec.yaml b/pubspec.yaml index d6db0a2..af351f0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -19,7 +19,6 @@ dependencies: # plugin_platform_interface depends on meta anyway meta: ^1.3.0 stack_trace: ^1.12.0 - dio: ^5.9.0 dev_dependencies: flutter_lints: ^5.0.0 From 5479dd94c78ebb4688422849f1e7ff2dd394c08b Mon Sep 17 00:00:00 2001 From: TabooSun Date: Mon, 24 Nov 2025 21:29:37 +0800 Subject: [PATCH 03/11] Enhance Dio interceptor to handle large payloads and offload JSON serialization to separate isolates --- .../lib/src/dio_interceptor.dart | 122 +++++++++++++++--- 1 file changed, 102 insertions(+), 20 deletions(-) diff --git a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart index 2811683..ee6042a 100644 --- a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart @@ -1,4 +1,7 @@ +import 'dart:convert'; + import 'package:dio/dio.dart'; +import 'package:flutter/foundation.dart'; import 'package:posthog_flutter/posthog_flutter.dart'; /// A Dio interceptor that captures network events and sends them to PostHog. @@ -6,8 +9,10 @@ class PostHogDioInterceptor extends Interceptor { final NativeCommunicator _nativeCommunicator = NativeCommunicator(); final bool attachPayloads; + static const int _oneMbInBytes = 1024 * 1024; + PostHogDioInterceptor({ - required this.attachPayloads, + this.attachPayloads = false, }); @override @@ -15,14 +20,15 @@ class PostHogDioInterceptor extends Interceptor { Response response, ResponseInterceptorHandler handler, ) async { + super.onResponse(response, handler); + final isSessionReplayActive = await _nativeCommunicator.isSessionReplayActive(); if (isSessionReplayActive) { - _captureNetworkEvent( + await _captureNetworkEvent( response: response, ); } - super.onResponse(response, handler); } @override @@ -30,33 +36,60 @@ class PostHogDioInterceptor extends Interceptor { DioException err, ErrorInterceptorHandler handler, ) async { + super.onError(err, handler); + final isSessionReplayActive = await _nativeCommunicator.isSessionReplayActive(); if (isSessionReplayActive) { final Response? response = err.response; if (response != null) { - _captureNetworkEvent(response: response); + await _captureNetworkEvent(response: response); } } - super.onError(err, handler); } - void _captureNetworkEvent({ + Future _captureNetworkEvent({ required Response response, }) async { final String url = response.requestOptions.uri.toString(); final String method = response.requestOptions.method; final int statusCode = response.statusCode ?? 0; - final Object? publishableRequest = attachPayloads - ? _tryTransformDataToPublishableObject( - data: response.requestOptions.data, - ) - : null; - final Object? publishableResponse = attachPayloads - ? _tryTransformDataToPublishableObject( - data: response.data, - ) - : null; + final [ + (Object? publishableRequest, bool requestExceededLimit), + (Object? publishableResponse, bool responseExceededLimit), + ] = await Future.wait([ + if (attachPayloads) + _tryTransformDataToPublishableObject( + data: response.requestOptions.data, + ).then( + (value) async { + final hasExceededLimit = await _hasExceededSizeLimit( + data: response.requestOptions.data, + header: response.requestOptions.headers, + ); + return ( + value, + hasExceededLimit, + ); + }, + ), + if (attachPayloads) + _tryTransformDataToPublishableObject( + data: response.data, + ).then( + (value) async { + final hasExceededLimit = await _hasExceededSizeLimit( + data: response.data, + header: response.headers.map, + ); + return ( + value, + hasExceededLimit, + ); + }, + ), + ]); + final Map snapshotData = { 'type': 6, 'data': { @@ -65,8 +98,10 @@ class PostHogDioInterceptor extends Interceptor { 'url': url, 'method': method, 'status_code': statusCode, - if (publishableRequest != null) 'request': publishableRequest, - if (publishableResponse != null) 'response': publishableResponse, + if (publishableRequest != null && !requestExceededLimit) + 'request': publishableRequest, + if (publishableResponse != null && !responseExceededLimit) + 'response': publishableResponse, }, }, 'timestamp': DateTime.now().millisecondsSinceEpoch, @@ -80,7 +115,48 @@ class PostHogDioInterceptor extends Interceptor { ); } - Object? _tryTransformDataToPublishableObject({required dynamic data}) { + Future _hasExceededSizeLimit({ + required dynamic data, + required Map header, + }) async { + final contentLengthHeader = header['content-length']; + final contentLength = + _deriveContentLength(contentLengthHeader); + if (contentLength != null) { + return contentLength > _oneMbInBytes; + } + + if (data == null) { + return false; + } + + if (data is num || data is bool) { + return false; + } + + try { + final encodedData = + await compute((data) => utf8.encode(jsonEncode(data)), data); + return encodedData.length > _oneMbInBytes; + } catch (e) { + return false; + } + } + + int? _deriveContentLength(dynamic contentLengthHeader) { + if (contentLengthHeader == null) { + return null; + } + + if (contentLengthHeader is Iterable) { + return int.tryParse(contentLengthHeader.first); + } + + return int.tryParse(contentLengthHeader.toString()); + } + + Future _tryTransformDataToPublishableObject( + {required dynamic data}) async { if (data == null) { return null; } @@ -107,6 +183,12 @@ class PostHogDioInterceptor extends Interceptor { }; } - return data.toString(); + try { + // Use compute here to offload JSON serialization to a separate isolate, this is to avoid jank on the main thread for large payloads. + final json = await compute((data) => jsonDecode(jsonEncode(data)), data); + return json; + } catch (e) { + return '[unserializable data]'; + } } } From eecf16ffa0ecd758e29b8b124e81dc0d0bbc1cc7 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Mon, 24 Nov 2025 22:19:27 +0800 Subject: [PATCH 04/11] Downgrade `posthog_flutter` dependency to version ^5.0.0 in pubspec.yaml --- packages/posthog_dio_interceptor/pubspec.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/posthog_dio_interceptor/pubspec.yaml b/packages/posthog_dio_interceptor/pubspec.yaml index ee6041d..09b2492 100644 --- a/packages/posthog_dio_interceptor/pubspec.yaml +++ b/packages/posthog_dio_interceptor/pubspec.yaml @@ -10,11 +10,7 @@ environment: # Add regular dependencies here. dependencies: dio: ^5.9.0 - posthog_flutter: ^5.9.0 - -dependency_overrides: - posthog_flutter: - path: ../.. + posthog_flutter: ^5.0.0 dev_dependencies: lints: ^6.0.0 From 094a4a655ea1b3e4beb1e51037a187e1cd388e88 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Mon, 24 Nov 2025 22:19:49 +0800 Subject: [PATCH 05/11] Downgrade `dio` dependency to version ^5.0.0 in pubspec.yaml --- packages/posthog_dio_interceptor/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/posthog_dio_interceptor/pubspec.yaml b/packages/posthog_dio_interceptor/pubspec.yaml index 09b2492..ce8636f 100644 --- a/packages/posthog_dio_interceptor/pubspec.yaml +++ b/packages/posthog_dio_interceptor/pubspec.yaml @@ -9,7 +9,7 @@ environment: # Add regular dependencies here. dependencies: - dio: ^5.9.0 + dio: ^5.0.0 posthog_flutter: ^5.0.0 dev_dependencies: From 8b5b07219cf570756a8744d5667d38b043175b82 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Mon, 24 Nov 2025 22:43:46 +0800 Subject: [PATCH 06/11] Refactor Dio interceptor to replace `_hasExceededSizeLimit` with `_calculateSizeLimit` and improve payload size validation logic --- .../lib/src/dio_interceptor.dart | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart index ee6042a..ae97031 100644 --- a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart @@ -55,21 +55,21 @@ class PostHogDioInterceptor extends Interceptor { final String method = response.requestOptions.method; final int statusCode = response.statusCode ?? 0; final [ - (Object? publishableRequest, bool requestExceededLimit), - (Object? publishableResponse, bool responseExceededLimit), + (Object? publishableRequest, int requestSizeLimit), + (Object? publishableResponse, int responseSizeLimit), ] = await Future.wait([ if (attachPayloads) _tryTransformDataToPublishableObject( data: response.requestOptions.data, ).then( (value) async { - final hasExceededLimit = await _hasExceededSizeLimit( + final sizeLimit = await _calculateSizeLimit( data: response.requestOptions.data, header: response.requestOptions.headers, ); return ( value, - hasExceededLimit, + sizeLimit, ); }, ), @@ -78,13 +78,13 @@ class PostHogDioInterceptor extends Interceptor { data: response.data, ).then( (value) async { - final hasExceededLimit = await _hasExceededSizeLimit( + final sizeLimit = await _calculateSizeLimit( data: response.data, header: response.headers.map, ); return ( value, - hasExceededLimit, + sizeLimit, ); }, ), @@ -98,10 +98,10 @@ class PostHogDioInterceptor extends Interceptor { 'url': url, 'method': method, 'status_code': statusCode, - if (publishableRequest != null && !requestExceededLimit) - 'request': publishableRequest, - if (publishableResponse != null && !responseExceededLimit) - 'response': publishableResponse, + if (requestSizeLimit + responseSizeLimit <= _oneMbInBytes) ...{ + if (publishableRequest != null) 'request': publishableRequest, + if (publishableResponse != null) 'response': publishableResponse, + } }, }, 'timestamp': DateTime.now().millisecondsSinceEpoch, @@ -115,31 +115,35 @@ class PostHogDioInterceptor extends Interceptor { ); } - Future _hasExceededSizeLimit({ + Future _calculateSizeLimit({ required dynamic data, required Map header, }) async { final contentLengthHeader = header['content-length']; - final contentLength = - _deriveContentLength(contentLengthHeader); + final contentLength = _deriveContentLength(contentLengthHeader); if (contentLength != null) { - return contentLength > _oneMbInBytes; + return contentLength; } if (data == null) { - return false; + return 0; } - if (data is num || data is bool) { - return false; + if (data is bool) { + return 4; + } + + if (data is num) { + return 8; } try { final encodedData = await compute((data) => utf8.encode(jsonEncode(data)), data); - return encodedData.length > _oneMbInBytes; + return encodedData.length; } catch (e) { - return false; + // Since we couldn't serialize the data, assume it exceeds the limit. + return _oneMbInBytes + 1; } } From 09afba8ffe20824c45e76788a1ea52ece5b7bc86 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Mon, 24 Nov 2025 22:59:05 +0800 Subject: [PATCH 07/11] Integrate session replay check into `Posthog` and replace `NativeCommunicator` with `Posthog` in Dio interceptor --- lib/posthog_flutter.dart | 1 - lib/src/posthog.dart | 8 +++++++- .../posthog_dio_interceptor/lib/src/dio_interceptor.dart | 6 +++--- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/lib/posthog_flutter.dart b/lib/posthog_flutter.dart index 1552712..521b5fd 100644 --- a/lib/posthog_flutter.dart +++ b/lib/posthog_flutter.dart @@ -5,4 +5,3 @@ export 'src/posthog_config.dart'; export 'src/posthog_observer.dart'; export 'src/posthog_widget.dart'; export 'src/replay/mask/posthog_mask_widget.dart'; -export 'src/replay/native_communicator.dart'; diff --git a/lib/src/posthog.dart b/lib/src/posthog.dart index ffa6a45..0a8c9c1 100644 --- a/lib/src/posthog.dart +++ b/lib/src/posthog.dart @@ -1,6 +1,7 @@ import 'package:meta/meta.dart'; - import 'package:posthog_flutter/src/error_tracking/posthog_error_tracking_autocapture_integration.dart'; +import 'package:posthog_flutter/src/replay/native_communicator.dart'; + import 'posthog_config.dart'; import 'posthog_flutter_platform_interface.dart'; import 'posthog_observer.dart'; @@ -13,6 +14,8 @@ class Posthog { PostHogConfig? _config; + final NativeCommunicator _nativeCommunicator = NativeCommunicator(); + factory Posthog() { return _instance; } @@ -189,5 +192,8 @@ class Posthog { Future getSessionId() => _posthog.getSessionId(); + Future isSessionReplayActive() => + _nativeCommunicator.isSessionReplayActive(); + Posthog._internal(); } diff --git a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart index ae97031..f8d9fbe 100644 --- a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart @@ -6,7 +6,7 @@ import 'package:posthog_flutter/posthog_flutter.dart'; /// A Dio interceptor that captures network events and sends them to PostHog. class PostHogDioInterceptor extends Interceptor { - final NativeCommunicator _nativeCommunicator = NativeCommunicator(); + final Posthog _posthog = Posthog(); final bool attachPayloads; static const int _oneMbInBytes = 1024 * 1024; @@ -23,7 +23,7 @@ class PostHogDioInterceptor extends Interceptor { super.onResponse(response, handler); final isSessionReplayActive = - await _nativeCommunicator.isSessionReplayActive(); + await _posthog.isSessionReplayActive(); if (isSessionReplayActive) { await _captureNetworkEvent( response: response, @@ -39,7 +39,7 @@ class PostHogDioInterceptor extends Interceptor { super.onError(err, handler); final isSessionReplayActive = - await _nativeCommunicator.isSessionReplayActive(); + await _posthog.isSessionReplayActive(); if (isSessionReplayActive) { final Response? response = err.response; if (response != null) { From 9b410ec54d04576ef710cc56fcc22c8658c1fc66 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Tue, 25 Nov 2025 10:00:10 +0800 Subject: [PATCH 08/11] Refactor Dio interceptor to streamline session replay checks and add `_callApiWithDio` example to showcase usage --- example/lib/main.dart | 16 ++++++++++++++++ example/pubspec.yaml | 3 +++ .../lib/src/dio_interceptor.dart | 6 ++---- packages/posthog_dio_interceptor/pubspec.yaml | 5 +++++ 4 files changed, 26 insertions(+), 4 deletions(-) diff --git a/example/lib/main.dart b/example/lib/main.dart index d868f8d..8aa37fc 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -451,6 +451,18 @@ class InitialScreenState extends State { child: Text("reloadFeatureFlags")), ), const Divider(), + const Padding( + padding: EdgeInsets.all(8.0), + child: Text( + "Network Performance", + style: TextStyle(fontWeight: FontWeight.bold), + ), + ), + ElevatedButton( + onPressed: _callApiWithDio, + child: Text("Call API with Dio"), + ), + const Divider(), const Padding( padding: EdgeInsets.all(8.0), child: Text( @@ -466,6 +478,10 @@ class InitialScreenState extends State { ), ); } + + void _callApiWithDio() { + Dio() + } } class SecondRoute extends StatefulWidget { diff --git a/example/pubspec.yaml b/example/pubspec.yaml index e8a8abf..3659002 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -30,6 +30,9 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.3 + dio: ^5.9.0 + posthog_dio_interceptor: + path: ../packages/posthog_dio_interceptor dev_dependencies: diff --git a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart index f8d9fbe..7b15c0e 100644 --- a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart @@ -22,8 +22,7 @@ class PostHogDioInterceptor extends Interceptor { ) async { super.onResponse(response, handler); - final isSessionReplayActive = - await _posthog.isSessionReplayActive(); + final isSessionReplayActive = await _posthog.isSessionReplayActive(); if (isSessionReplayActive) { await _captureNetworkEvent( response: response, @@ -38,8 +37,7 @@ class PostHogDioInterceptor extends Interceptor { ) async { super.onError(err, handler); - final isSessionReplayActive = - await _posthog.isSessionReplayActive(); + final isSessionReplayActive = await _posthog.isSessionReplayActive(); if (isSessionReplayActive) { final Response? response = err.response; if (response != null) { diff --git a/packages/posthog_dio_interceptor/pubspec.yaml b/packages/posthog_dio_interceptor/pubspec.yaml index ce8636f..5304d25 100644 --- a/packages/posthog_dio_interceptor/pubspec.yaml +++ b/packages/posthog_dio_interceptor/pubspec.yaml @@ -9,9 +9,14 @@ environment: # Add regular dependencies here. dependencies: + flutter: + sdk: flutter dio: ^5.0.0 posthog_flutter: ^5.0.0 +dependency_overrides: + posthog_flutter: + path: ../.. dev_dependencies: lints: ^6.0.0 test: ^1.25.6 From 812c9cef7c1aee97662d351c872462bacac321e1 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Tue, 25 Nov 2025 14:32:14 +0800 Subject: [PATCH 09/11] Restructure package --- .../app/src/profile/AndroidManifest.xml | 7 -- .../lib/src/dio_interceptor.dart | 64 ++++++++++-------- packages/posthog_dio_interceptor/pubspec.yaml | 2 +- .../posthog_flutter/analysis_options.yaml | 0 .../posthog_flutter/android}/.gitignore | 0 .../posthog_flutter/android}/build.gradle | 0 .../android}/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../posthog_flutter/android}/settings.gradle | 0 .../android}/src/main/AndroidManifest.xml | 0 .../flutter/PostHogDisplaySurveyExt.kt | 0 .../flutter/PostHogFlutterSurveysDelegate.kt | 0 .../com/posthog/flutter/PostHogVersion.kt | 0 .../posthog/flutter/PosthogFlutterPlugin.kt | 0 .../com/posthog/flutter/SnapshotSender.kt | 0 .../flutter/PosthogFlutterPluginTest.kt | 0 .../posthog_flutter/example}/.gitignore | 0 .../posthog_flutter/example}/.metadata | 0 .../posthog_flutter/example}/README.md | 0 .../example}/analysis_options.yaml | 0 .../example}/android/.gitignore | 0 .../example}/android/app/build.gradle | 0 .../android/app/src/main/AndroidManifest.xml | 0 .../com/example/flutter/MainActivity.kt | 0 .../res/drawable-v21/launch_background.xml | 0 .../main/res/drawable/launch_background.xml | 0 .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin .../app/src/main/res/values-night/styles.xml | 0 .../app/src/main/res/values/styles.xml | 0 .../app/src/profile}/AndroidManifest.xml | 0 .../example}/android/build.gradle | 0 .../example}/android/gradle.properties | 0 .../gradle/wrapper/gradle-wrapper.properties | 0 .../example}/android/settings.gradle | 0 .../example}/assets/posthog_logo.png | Bin .../example}/assets/training_posthog.png | Bin .../posthog_flutter/example}/ios/.gitignore | 0 .../ios/Flutter/AppFrameworkInfo.plist | 0 .../example}/ios/Flutter/Debug.xcconfig | 0 .../example}/ios/Flutter/Release.xcconfig | 0 .../posthog_flutter/example}/ios/Podfile | 0 .../ios/Runner.xcodeproj/project.pbxproj | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 0 .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/WorkspaceSettings.xcsettings | 0 .../example}/ios/Runner/AppDelegate.h | 0 .../example}/ios/Runner/AppDelegate.m | 0 .../example}/ios/Runner/AppDelegate.swift | 0 .../AppIcon.appiconset/Contents.json | 0 .../Icon-App-1024x1024@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin .../Icon-App-83.5x83.5@2x.png | Bin .../LaunchImage.imageset/Contents.json | 0 .../LaunchImage.imageset/LaunchImage.png | Bin .../LaunchImage.imageset/LaunchImage@2x.png | Bin .../LaunchImage.imageset/LaunchImage@3x.png | Bin .../LaunchImage.imageset/README.md | 0 .../Runner/Base.lproj/LaunchScreen.storyboard | 0 .../ios/Runner/Base.lproj/Main.storyboard | 0 .../example}/ios/Runner/Info.plist | 0 .../ios/Runner/Runner-Bridging-Header.h | 0 .../example}/ios/Runner/main.m | 0 .../ios/RunnerTests/RunnerTests.swift | 0 .../posthog_flutter/example}/lib/main.dart | 37 ++++++++-- .../posthog_flutter/example}/macos/.gitignore | 0 .../macos/Flutter/Flutter-Debug.xcconfig | 0 .../macos/Flutter/Flutter-Release.xcconfig | 0 .../Flutter/GeneratedPluginRegistrant.swift | 0 .../posthog_flutter/example}/macos/Podfile | 0 .../macos/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/xcschemes/Runner.xcscheme | 3 +- .../contents.xcworkspacedata | 0 .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../example}/macos/Runner/AppDelegate.swift | 6 +- .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/app_icon_1024.png | Bin .../AppIcon.appiconset/app_icon_128.png | Bin .../AppIcon.appiconset/app_icon_16.png | Bin .../AppIcon.appiconset/app_icon_256.png | Bin .../AppIcon.appiconset/app_icon_32.png | Bin .../AppIcon.appiconset/app_icon_512.png | Bin .../AppIcon.appiconset/app_icon_64.png | Bin .../macos/Runner/Base.lproj/MainMenu.xib | 0 .../macos/Runner/Configs/AppInfo.xcconfig | 0 .../macos/Runner/Configs/Debug.xcconfig | 0 .../macos/Runner/Configs/Release.xcconfig | 0 .../macos/Runner/Configs/Warnings.xcconfig | 0 .../macos/Runner/DebugProfile.entitlements | 0 .../example}/macos/Runner/Info.plist | 0 .../macos/Runner/MainFlutterWindow.swift | 0 .../macos/Runner/Release.entitlements | 0 .../posthog_flutter/example}/pubspec.yaml | 10 ++- .../posthog_flutter/example}/web/favicon.png | Bin .../example}/web/icons/Icon-192.png | Bin .../example}/web/icons/Icon-512.png | Bin .../example}/web/icons/Icon-maskable-192.png | Bin .../example}/web/icons/Icon-maskable-512.png | Bin .../posthog_flutter/example}/web/index.html | 0 .../example}/web/manifest.json | 0 .../posthog_flutter/ios}/.gitignore | 0 .../posthog_flutter/ios}/Assets/.gitkeep | 0 .../Classes/PostHogDisplaySurvey+Dict.swift | 0 .../ios}/Classes/PostHogFlutterVersion.swift | 0 .../ios}/Classes/PosthogFlutterPlugin.swift | 0 .../ios}/Resources/PrivacyInfo.xcprivacy | 0 .../ios}/posthog_flutter.podspec | 0 .../posthog_flutter/lib}/posthog_flutter.dart | 0 .../lib}/posthog_flutter_web.dart | 0 .../dart_exception_processor.dart | 0 .../error_tracking/isolate_handler_io.dart | 0 .../error_tracking/isolate_handler_web.dart | 0 ...rror_tracking_autocapture_integration.dart | 0 .../src/error_tracking/posthog_exception.dart | 0 .../utils/_io_isolate_utils.dart | 0 .../utils/_web_isolate_utils.dart | 0 .../error_tracking/utils/isolate_utils.dart | 0 .../posthog_flutter/lib}/src/posthog.dart | 0 .../lib}/src/posthog_config.dart | 0 .../lib}/src/posthog_flutter_io.dart | 0 .../posthog_flutter_platform_interface.dart | 0 .../lib}/src/posthog_flutter_web_handler.dart | 0 .../lib}/src/posthog_observer.dart | 0 .../lib}/src/posthog_widget.dart | 0 .../lib}/src/replay/change_detector.dart | 0 .../replay/element_parsers/element_data.dart | 0 .../element_parsers/element_data_factory.dart | 0 .../element_object_parser.dart | 0 .../element_parsers/element_parser.dart | 0 .../element_parser_factory.dart | 0 .../element_parsers_const.dart | 0 .../image_element/position_calculator.dart | 0 .../image_element/render_image_parser.dart | 0 .../element_parsers/image_element/scaler.dart | 0 .../root_element_provider.dart | 0 .../lib}/src/replay/image_extension.dart | 0 .../src/replay/mask/image_mask_painter.dart | 0 .../replay/mask/posthog_mask_controller.dart | 0 .../src/replay/mask/posthog_mask_widget.dart | 0 .../replay/mask/widget_elements_decipher.dart | 0 .../lib}/src/replay/native_communicator.dart | 0 .../screenshot/screenshot_capturer.dart | 0 .../replay/screenshot/snapshot_manager.dart | 0 .../lib}/src/replay/size_extension.dart | 0 .../lib}/src/replay/vendor/equality.dart | 0 .../posthog_display_choice_question.dart | 0 .../models/posthog_display_link_question.dart | 0 .../models/posthog_display_open_question.dart | 0 .../posthog_display_rating_question.dart | 0 .../models/posthog_display_survey.dart | 0 .../posthog_display_survey_appearance.dart | 0 .../posthog_display_survey_question.dart | 0 .../posthog_display_survey_rating_type.dart | 0 ...thog_display_survey_text_content_type.dart | 0 .../models/posthog_survey_question_type.dart | 0 .../src/surveys/models/survey_appearance.dart | 0 .../src/surveys/models/survey_callbacks.dart | 0 .../lib}/src/surveys/survey_service.dart | 0 .../src/surveys/widgets/choice_question.dart | 0 .../surveys/widgets/confirmation_message.dart | 0 .../src/surveys/widgets/link_question.dart | 0 .../surveys/widgets/number_rating_button.dart | 0 .../surveys/widgets/open_text_question.dart | 0 .../src/surveys/widgets/question_header.dart | 0 .../src/surveys/widgets/rating_icons.dart | 0 .../src/surveys/widgets/rating_question.dart | 0 .../surveys/widgets/survey_bottom_sheet.dart | 0 .../src/surveys/widgets/survey_button.dart | 0 .../surveys/widgets/survey_choice_button.dart | 0 .../lib}/src/util/logging.dart | 0 .../lib}/src/util/platform_io_real.dart | 0 .../lib}/src/util/platform_io_stub.dart | 0 .../lib}/src/utils/property_normalizer.dart | 0 .../Classes/PostHogFlutterVersion.swift | 0 .../macos}/Classes/PosthogFlutterPlugin.swift | 0 .../macos}/Resources/PrivacyInfo.xcprivacy | 0 .../macos}/posthog_flutter.podspec | 0 .../posthog_flutter/pubspec.yaml | 0 .../test}/dart_exception_processor_test.dart | 0 .../test}/posthog_flutter_io_test.dart | 0 ...sthog_flutter_platform_interface_fake.dart | 0 .../test}/posthog_observer_test.dart | 0 .../posthog_flutter/test}/posthog_test.dart | 0 .../test}/property_normalizer_test.dart | 0 204 files changed, 84 insertions(+), 47 deletions(-) delete mode 100644 example/android/app/src/profile/AndroidManifest.xml rename analysis_options.yaml => packages/posthog_flutter/analysis_options.yaml (100%) rename {android => packages/posthog_flutter/android}/.gitignore (100%) rename {android => packages/posthog_flutter/android}/build.gradle (100%) rename {android => packages/posthog_flutter/android}/gradle.properties (100%) rename {android => packages/posthog_flutter/android}/gradle/wrapper/gradle-wrapper.properties (100%) rename {android => packages/posthog_flutter/android}/settings.gradle (100%) rename {android => packages/posthog_flutter/android}/src/main/AndroidManifest.xml (100%) rename {android => packages/posthog_flutter/android}/src/main/kotlin/com/posthog/flutter/PostHogDisplaySurveyExt.kt (100%) rename {android => packages/posthog_flutter/android}/src/main/kotlin/com/posthog/flutter/PostHogFlutterSurveysDelegate.kt (100%) rename {android => packages/posthog_flutter/android}/src/main/kotlin/com/posthog/flutter/PostHogVersion.kt (100%) rename {android => packages/posthog_flutter/android}/src/main/kotlin/com/posthog/flutter/PosthogFlutterPlugin.kt (100%) rename {android => packages/posthog_flutter/android}/src/main/kotlin/com/posthog/flutter/SnapshotSender.kt (100%) rename {android => packages/posthog_flutter/android}/src/test/kotlin/com/posthog/flutter/PosthogFlutterPluginTest.kt (100%) rename {example => packages/posthog_flutter/example}/.gitignore (100%) rename {example => packages/posthog_flutter/example}/.metadata (100%) rename {example => packages/posthog_flutter/example}/README.md (100%) rename {example => packages/posthog_flutter/example}/analysis_options.yaml (100%) rename {example => packages/posthog_flutter/example}/android/.gitignore (100%) rename {example => packages/posthog_flutter/example}/android/app/build.gradle (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/AndroidManifest.xml (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/kotlin/com/example/flutter/MainActivity.kt (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/drawable-v21/launch_background.xml (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/drawable/launch_background.xml (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/mipmap-hdpi/ic_launcher.png (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/mipmap-mdpi/ic_launcher.png (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/values-night/styles.xml (100%) rename {example => packages/posthog_flutter/example}/android/app/src/main/res/values/styles.xml (100%) rename {example/android/app/src/debug => packages/posthog_flutter/example/android/app/src/profile}/AndroidManifest.xml (100%) rename {example => packages/posthog_flutter/example}/android/build.gradle (100%) rename {example => packages/posthog_flutter/example}/android/gradle.properties (100%) rename {example => packages/posthog_flutter/example}/android/gradle/wrapper/gradle-wrapper.properties (100%) rename {example => packages/posthog_flutter/example}/android/settings.gradle (100%) rename {example => packages/posthog_flutter/example}/assets/posthog_logo.png (100%) rename {example => packages/posthog_flutter/example}/assets/training_posthog.png (100%) rename {example => packages/posthog_flutter/example}/ios/.gitignore (100%) rename {example => packages/posthog_flutter/example}/ios/Flutter/AppFrameworkInfo.plist (100%) rename {example => packages/posthog_flutter/example}/ios/Flutter/Debug.xcconfig (100%) rename {example => packages/posthog_flutter/example}/ios/Flutter/Release.xcconfig (100%) rename {example => packages/posthog_flutter/example}/ios/Podfile (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcodeproj/project.pbxproj (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {example => packages/posthog_flutter/example}/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/AppDelegate.h (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/AppDelegate.m (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/AppDelegate.swift (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Base.lproj/LaunchScreen.storyboard (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Base.lproj/Main.storyboard (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Info.plist (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/Runner-Bridging-Header.h (100%) rename {example => packages/posthog_flutter/example}/ios/Runner/main.m (100%) rename {example => packages/posthog_flutter/example}/ios/RunnerTests/RunnerTests.swift (100%) rename {example => packages/posthog_flutter/example}/lib/main.dart (94%) rename {example => packages/posthog_flutter/example}/macos/.gitignore (100%) rename {example => packages/posthog_flutter/example}/macos/Flutter/Flutter-Debug.xcconfig (100%) rename {example => packages/posthog_flutter/example}/macos/Flutter/Flutter-Release.xcconfig (100%) rename {example => packages/posthog_flutter/example}/macos/Flutter/GeneratedPluginRegistrant.swift (100%) rename {example => packages/posthog_flutter/example}/macos/Podfile (100%) rename {example => packages/posthog_flutter/example}/macos/Runner.xcodeproj/project.pbxproj (99%) rename {example => packages/posthog_flutter/example}/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {example => packages/posthog_flutter/example}/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (98%) rename {example => packages/posthog_flutter/example}/macos/Runner.xcworkspace/contents.xcworkspacedata (100%) rename {example => packages/posthog_flutter/example}/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/AppDelegate.swift (62%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Base.lproj/MainMenu.xib (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Configs/AppInfo.xcconfig (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Configs/Debug.xcconfig (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Configs/Release.xcconfig (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Configs/Warnings.xcconfig (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/DebugProfile.entitlements (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Info.plist (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/MainFlutterWindow.swift (100%) rename {example => packages/posthog_flutter/example}/macos/Runner/Release.entitlements (100%) rename {example => packages/posthog_flutter/example}/pubspec.yaml (94%) rename {example => packages/posthog_flutter/example}/web/favicon.png (100%) rename {example => packages/posthog_flutter/example}/web/icons/Icon-192.png (100%) rename {example => packages/posthog_flutter/example}/web/icons/Icon-512.png (100%) rename {example => packages/posthog_flutter/example}/web/icons/Icon-maskable-192.png (100%) rename {example => packages/posthog_flutter/example}/web/icons/Icon-maskable-512.png (100%) rename {example => packages/posthog_flutter/example}/web/index.html (100%) rename {example => packages/posthog_flutter/example}/web/manifest.json (100%) rename {ios => packages/posthog_flutter/ios}/.gitignore (100%) rename {ios => packages/posthog_flutter/ios}/Assets/.gitkeep (100%) rename {ios => packages/posthog_flutter/ios}/Classes/PostHogDisplaySurvey+Dict.swift (100%) rename {ios => packages/posthog_flutter/ios}/Classes/PostHogFlutterVersion.swift (100%) rename {ios => packages/posthog_flutter/ios}/Classes/PosthogFlutterPlugin.swift (100%) rename {ios => packages/posthog_flutter/ios}/Resources/PrivacyInfo.xcprivacy (100%) rename {ios => packages/posthog_flutter/ios}/posthog_flutter.podspec (100%) rename {lib => packages/posthog_flutter/lib}/posthog_flutter.dart (100%) rename {lib => packages/posthog_flutter/lib}/posthog_flutter_web.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/dart_exception_processor.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/isolate_handler_io.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/isolate_handler_web.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/posthog_error_tracking_autocapture_integration.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/posthog_exception.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/utils/_io_isolate_utils.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/utils/_web_isolate_utils.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/error_tracking/utils/isolate_utils.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog_config.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog_flutter_io.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog_flutter_platform_interface.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog_flutter_web_handler.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog_observer.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/posthog_widget.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/change_detector.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/element_data.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/element_data_factory.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/element_object_parser.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/element_parser.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/element_parser_factory.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/element_parsers_const.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/image_element/position_calculator.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/image_element/render_image_parser.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/image_element/scaler.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/element_parsers/root_element_provider.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/image_extension.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/mask/image_mask_painter.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/mask/posthog_mask_controller.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/mask/posthog_mask_widget.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/mask/widget_elements_decipher.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/native_communicator.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/screenshot/screenshot_capturer.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/screenshot/snapshot_manager.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/size_extension.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/replay/vendor/equality.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_choice_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_link_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_open_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_rating_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_survey.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_survey_appearance.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_survey_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_survey_rating_type.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_display_survey_text_content_type.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/posthog_survey_question_type.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/survey_appearance.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/models/survey_callbacks.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/survey_service.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/choice_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/confirmation_message.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/link_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/number_rating_button.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/open_text_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/question_header.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/rating_icons.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/rating_question.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/survey_bottom_sheet.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/survey_button.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/surveys/widgets/survey_choice_button.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/util/logging.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/util/platform_io_real.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/util/platform_io_stub.dart (100%) rename {lib => packages/posthog_flutter/lib}/src/utils/property_normalizer.dart (100%) rename {macos => packages/posthog_flutter/macos}/Classes/PostHogFlutterVersion.swift (100%) rename {macos => packages/posthog_flutter/macos}/Classes/PosthogFlutterPlugin.swift (100%) rename {macos => packages/posthog_flutter/macos}/Resources/PrivacyInfo.xcprivacy (100%) rename {macos => packages/posthog_flutter/macos}/posthog_flutter.podspec (100%) rename pubspec.yaml => packages/posthog_flutter/pubspec.yaml (100%) rename {test => packages/posthog_flutter/test}/dart_exception_processor_test.dart (100%) rename {test => packages/posthog_flutter/test}/posthog_flutter_io_test.dart (100%) rename {test => packages/posthog_flutter/test}/posthog_flutter_platform_interface_fake.dart (100%) rename {test => packages/posthog_flutter/test}/posthog_observer_test.dart (100%) rename {test => packages/posthog_flutter/test}/posthog_test.dart (100%) rename {test => packages/posthog_flutter/test}/property_normalizer_test.dart (100%) diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml deleted file mode 100644 index 399f698..0000000 --- a/example/android/app/src/profile/AndroidManifest.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart index 7b15c0e..8eb2097 100644 --- a/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/src/dio_interceptor.dart @@ -55,38 +55,41 @@ class PostHogDioInterceptor extends Interceptor { final [ (Object? publishableRequest, int requestSizeLimit), (Object? publishableResponse, int responseSizeLimit), - ] = await Future.wait([ - if (attachPayloads) - _tryTransformDataToPublishableObject( - data: response.requestOptions.data, - ).then( - (value) async { - final sizeLimit = await _calculateSizeLimit( + ] = attachPayloads + ? await Future.wait([ + _tryTransformDataToPublishableObject( data: response.requestOptions.data, - header: response.requestOptions.headers, - ); - return ( - value, - sizeLimit, - ); - }, - ), - if (attachPayloads) - _tryTransformDataToPublishableObject( - data: response.data, - ).then( - (value) async { - final sizeLimit = await _calculateSizeLimit( + ).then( + (value) async { + final sizeLimit = await _calculateSizeLimit( + data: response.requestOptions.data, + header: response.requestOptions.headers, + ); + return ( + value, + sizeLimit, + ); + }, + ), + _tryTransformDataToPublishableObject( data: response.data, - header: response.headers.map, - ); - return ( - value, - sizeLimit, - ); - }, - ), - ]); + ).then( + (value) async { + final sizeLimit = await _calculateSizeLimit( + data: response.data, + header: response.headers.map, + ); + return ( + value, + sizeLimit, + ); + }, + ), + ]) + : [ + (null, 0), + (null, 0), + ]; final Map snapshotData = { 'type': 6, @@ -166,6 +169,7 @@ class PostHogDioInterceptor extends Interceptor { if (data is Map || data is String || data is num || + data is BigInt || data is bool || data is Iterable) { return data; diff --git a/packages/posthog_dio_interceptor/pubspec.yaml b/packages/posthog_dio_interceptor/pubspec.yaml index 5304d25..f84c813 100644 --- a/packages/posthog_dio_interceptor/pubspec.yaml +++ b/packages/posthog_dio_interceptor/pubspec.yaml @@ -16,7 +16,7 @@ dependencies: dependency_overrides: posthog_flutter: - path: ../.. + path: ../posthog_flutter dev_dependencies: lints: ^6.0.0 test: ^1.25.6 diff --git a/analysis_options.yaml b/packages/posthog_flutter/analysis_options.yaml similarity index 100% rename from analysis_options.yaml rename to packages/posthog_flutter/analysis_options.yaml diff --git a/android/.gitignore b/packages/posthog_flutter/android/.gitignore similarity index 100% rename from android/.gitignore rename to packages/posthog_flutter/android/.gitignore diff --git a/android/build.gradle b/packages/posthog_flutter/android/build.gradle similarity index 100% rename from android/build.gradle rename to packages/posthog_flutter/android/build.gradle diff --git a/android/gradle.properties b/packages/posthog_flutter/android/gradle.properties similarity index 100% rename from android/gradle.properties rename to packages/posthog_flutter/android/gradle.properties diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/packages/posthog_flutter/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from android/gradle/wrapper/gradle-wrapper.properties rename to packages/posthog_flutter/android/gradle/wrapper/gradle-wrapper.properties diff --git a/android/settings.gradle b/packages/posthog_flutter/android/settings.gradle similarity index 100% rename from android/settings.gradle rename to packages/posthog_flutter/android/settings.gradle diff --git a/android/src/main/AndroidManifest.xml b/packages/posthog_flutter/android/src/main/AndroidManifest.xml similarity index 100% rename from android/src/main/AndroidManifest.xml rename to packages/posthog_flutter/android/src/main/AndroidManifest.xml diff --git a/android/src/main/kotlin/com/posthog/flutter/PostHogDisplaySurveyExt.kt b/packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PostHogDisplaySurveyExt.kt similarity index 100% rename from android/src/main/kotlin/com/posthog/flutter/PostHogDisplaySurveyExt.kt rename to packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PostHogDisplaySurveyExt.kt diff --git a/android/src/main/kotlin/com/posthog/flutter/PostHogFlutterSurveysDelegate.kt b/packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PostHogFlutterSurveysDelegate.kt similarity index 100% rename from android/src/main/kotlin/com/posthog/flutter/PostHogFlutterSurveysDelegate.kt rename to packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PostHogFlutterSurveysDelegate.kt diff --git a/android/src/main/kotlin/com/posthog/flutter/PostHogVersion.kt b/packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PostHogVersion.kt similarity index 100% rename from android/src/main/kotlin/com/posthog/flutter/PostHogVersion.kt rename to packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PostHogVersion.kt diff --git a/android/src/main/kotlin/com/posthog/flutter/PosthogFlutterPlugin.kt b/packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PosthogFlutterPlugin.kt similarity index 100% rename from android/src/main/kotlin/com/posthog/flutter/PosthogFlutterPlugin.kt rename to packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/PosthogFlutterPlugin.kt diff --git a/android/src/main/kotlin/com/posthog/flutter/SnapshotSender.kt b/packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/SnapshotSender.kt similarity index 100% rename from android/src/main/kotlin/com/posthog/flutter/SnapshotSender.kt rename to packages/posthog_flutter/android/src/main/kotlin/com/posthog/flutter/SnapshotSender.kt diff --git a/android/src/test/kotlin/com/posthog/flutter/PosthogFlutterPluginTest.kt b/packages/posthog_flutter/android/src/test/kotlin/com/posthog/flutter/PosthogFlutterPluginTest.kt similarity index 100% rename from android/src/test/kotlin/com/posthog/flutter/PosthogFlutterPluginTest.kt rename to packages/posthog_flutter/android/src/test/kotlin/com/posthog/flutter/PosthogFlutterPluginTest.kt diff --git a/example/.gitignore b/packages/posthog_flutter/example/.gitignore similarity index 100% rename from example/.gitignore rename to packages/posthog_flutter/example/.gitignore diff --git a/example/.metadata b/packages/posthog_flutter/example/.metadata similarity index 100% rename from example/.metadata rename to packages/posthog_flutter/example/.metadata diff --git a/example/README.md b/packages/posthog_flutter/example/README.md similarity index 100% rename from example/README.md rename to packages/posthog_flutter/example/README.md diff --git a/example/analysis_options.yaml b/packages/posthog_flutter/example/analysis_options.yaml similarity index 100% rename from example/analysis_options.yaml rename to packages/posthog_flutter/example/analysis_options.yaml diff --git a/example/android/.gitignore b/packages/posthog_flutter/example/android/.gitignore similarity index 100% rename from example/android/.gitignore rename to packages/posthog_flutter/example/android/.gitignore diff --git a/example/android/app/build.gradle b/packages/posthog_flutter/example/android/app/build.gradle similarity index 100% rename from example/android/app/build.gradle rename to packages/posthog_flutter/example/android/app/build.gradle diff --git a/example/android/app/src/main/AndroidManifest.xml b/packages/posthog_flutter/example/android/app/src/main/AndroidManifest.xml similarity index 100% rename from example/android/app/src/main/AndroidManifest.xml rename to packages/posthog_flutter/example/android/app/src/main/AndroidManifest.xml diff --git a/example/android/app/src/main/kotlin/com/example/flutter/MainActivity.kt b/packages/posthog_flutter/example/android/app/src/main/kotlin/com/example/flutter/MainActivity.kt similarity index 100% rename from example/android/app/src/main/kotlin/com/example/flutter/MainActivity.kt rename to packages/posthog_flutter/example/android/app/src/main/kotlin/com/example/flutter/MainActivity.kt diff --git a/example/android/app/src/main/res/drawable-v21/launch_background.xml b/packages/posthog_flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml similarity index 100% rename from example/android/app/src/main/res/drawable-v21/launch_background.xml rename to packages/posthog_flutter/example/android/app/src/main/res/drawable-v21/launch_background.xml diff --git a/example/android/app/src/main/res/drawable/launch_background.xml b/packages/posthog_flutter/example/android/app/src/main/res/drawable/launch_background.xml similarity index 100% rename from example/android/app/src/main/res/drawable/launch_background.xml rename to packages/posthog_flutter/example/android/app/src/main/res/drawable/launch_background.xml diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/packages/posthog_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to packages/posthog_flutter/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/packages/posthog_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to packages/posthog_flutter/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/packages/posthog_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to packages/posthog_flutter/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/packages/posthog_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to packages/posthog_flutter/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/packages/posthog_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to packages/posthog_flutter/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/values-night/styles.xml b/packages/posthog_flutter/example/android/app/src/main/res/values-night/styles.xml similarity index 100% rename from example/android/app/src/main/res/values-night/styles.xml rename to packages/posthog_flutter/example/android/app/src/main/res/values-night/styles.xml diff --git a/example/android/app/src/main/res/values/styles.xml b/packages/posthog_flutter/example/android/app/src/main/res/values/styles.xml similarity index 100% rename from example/android/app/src/main/res/values/styles.xml rename to packages/posthog_flutter/example/android/app/src/main/res/values/styles.xml diff --git a/example/android/app/src/debug/AndroidManifest.xml b/packages/posthog_flutter/example/android/app/src/profile/AndroidManifest.xml similarity index 100% rename from example/android/app/src/debug/AndroidManifest.xml rename to packages/posthog_flutter/example/android/app/src/profile/AndroidManifest.xml diff --git a/example/android/build.gradle b/packages/posthog_flutter/example/android/build.gradle similarity index 100% rename from example/android/build.gradle rename to packages/posthog_flutter/example/android/build.gradle diff --git a/example/android/gradle.properties b/packages/posthog_flutter/example/android/gradle.properties similarity index 100% rename from example/android/gradle.properties rename to packages/posthog_flutter/example/android/gradle.properties diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/packages/posthog_flutter/example/android/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from example/android/gradle/wrapper/gradle-wrapper.properties rename to packages/posthog_flutter/example/android/gradle/wrapper/gradle-wrapper.properties diff --git a/example/android/settings.gradle b/packages/posthog_flutter/example/android/settings.gradle similarity index 100% rename from example/android/settings.gradle rename to packages/posthog_flutter/example/android/settings.gradle diff --git a/example/assets/posthog_logo.png b/packages/posthog_flutter/example/assets/posthog_logo.png similarity index 100% rename from example/assets/posthog_logo.png rename to packages/posthog_flutter/example/assets/posthog_logo.png diff --git a/example/assets/training_posthog.png b/packages/posthog_flutter/example/assets/training_posthog.png similarity index 100% rename from example/assets/training_posthog.png rename to packages/posthog_flutter/example/assets/training_posthog.png diff --git a/example/ios/.gitignore b/packages/posthog_flutter/example/ios/.gitignore similarity index 100% rename from example/ios/.gitignore rename to packages/posthog_flutter/example/ios/.gitignore diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/packages/posthog_flutter/example/ios/Flutter/AppFrameworkInfo.plist similarity index 100% rename from example/ios/Flutter/AppFrameworkInfo.plist rename to packages/posthog_flutter/example/ios/Flutter/AppFrameworkInfo.plist diff --git a/example/ios/Flutter/Debug.xcconfig b/packages/posthog_flutter/example/ios/Flutter/Debug.xcconfig similarity index 100% rename from example/ios/Flutter/Debug.xcconfig rename to packages/posthog_flutter/example/ios/Flutter/Debug.xcconfig diff --git a/example/ios/Flutter/Release.xcconfig b/packages/posthog_flutter/example/ios/Flutter/Release.xcconfig similarity index 100% rename from example/ios/Flutter/Release.xcconfig rename to packages/posthog_flutter/example/ios/Flutter/Release.xcconfig diff --git a/example/ios/Podfile b/packages/posthog_flutter/example/ios/Podfile similarity index 100% rename from example/ios/Podfile rename to packages/posthog_flutter/example/ios/Podfile diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/packages/posthog_flutter/example/ios/Runner.xcodeproj/project.pbxproj similarity index 100% rename from example/ios/Runner.xcodeproj/project.pbxproj rename to packages/posthog_flutter/example/ios/Runner.xcodeproj/project.pbxproj diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/posthog_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to packages/posthog_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/posthog_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/posthog_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/posthog_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to packages/posthog_flutter/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/posthog_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 100% rename from example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to packages/posthog_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme diff --git a/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/posthog_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/ios/Runner.xcworkspace/contents.xcworkspacedata rename to packages/posthog_flutter/example/ios/Runner.xcworkspace/contents.xcworkspacedata diff --git a/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/posthog_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/posthog_flutter/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/posthog_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings similarity index 100% rename from example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings rename to packages/posthog_flutter/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings diff --git a/example/ios/Runner/AppDelegate.h b/packages/posthog_flutter/example/ios/Runner/AppDelegate.h similarity index 100% rename from example/ios/Runner/AppDelegate.h rename to packages/posthog_flutter/example/ios/Runner/AppDelegate.h diff --git a/example/ios/Runner/AppDelegate.m b/packages/posthog_flutter/example/ios/Runner/AppDelegate.m similarity index 100% rename from example/ios/Runner/AppDelegate.m rename to packages/posthog_flutter/example/ios/Runner/AppDelegate.m diff --git a/example/ios/Runner/AppDelegate.swift b/packages/posthog_flutter/example/ios/Runner/AppDelegate.swift similarity index 100% rename from example/ios/Runner/AppDelegate.swift rename to packages/posthog_flutter/example/ios/Runner/AppDelegate.swift diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png diff --git a/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png diff --git a/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md similarity index 100% rename from example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md rename to packages/posthog_flutter/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md diff --git a/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/posthog_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from example/ios/Runner/Base.lproj/LaunchScreen.storyboard rename to packages/posthog_flutter/example/ios/Runner/Base.lproj/LaunchScreen.storyboard diff --git a/example/ios/Runner/Base.lproj/Main.storyboard b/packages/posthog_flutter/example/ios/Runner/Base.lproj/Main.storyboard similarity index 100% rename from example/ios/Runner/Base.lproj/Main.storyboard rename to packages/posthog_flutter/example/ios/Runner/Base.lproj/Main.storyboard diff --git a/example/ios/Runner/Info.plist b/packages/posthog_flutter/example/ios/Runner/Info.plist similarity index 100% rename from example/ios/Runner/Info.plist rename to packages/posthog_flutter/example/ios/Runner/Info.plist diff --git a/example/ios/Runner/Runner-Bridging-Header.h b/packages/posthog_flutter/example/ios/Runner/Runner-Bridging-Header.h similarity index 100% rename from example/ios/Runner/Runner-Bridging-Header.h rename to packages/posthog_flutter/example/ios/Runner/Runner-Bridging-Header.h diff --git a/example/ios/Runner/main.m b/packages/posthog_flutter/example/ios/Runner/main.m similarity index 100% rename from example/ios/Runner/main.m rename to packages/posthog_flutter/example/ios/Runner/main.m diff --git a/example/ios/RunnerTests/RunnerTests.swift b/packages/posthog_flutter/example/ios/RunnerTests/RunnerTests.swift similarity index 100% rename from example/ios/RunnerTests/RunnerTests.swift rename to packages/posthog_flutter/example/ios/RunnerTests/RunnerTests.swift diff --git a/example/lib/main.dart b/packages/posthog_flutter/example/lib/main.dart similarity index 94% rename from example/lib/main.dart rename to packages/posthog_flutter/example/lib/main.dart index 8aa37fc..4559f7e 100644 --- a/example/lib/main.dart +++ b/packages/posthog_flutter/example/lib/main.dart @@ -1,6 +1,8 @@ import 'dart:async'; +import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; +import 'package:posthog_dio_interceptor/posthog_dio_interceptor.dart'; import 'package:posthog_flutter/posthog_flutter.dart'; Future main() async { @@ -459,8 +461,12 @@ class InitialScreenState extends State { ), ), ElevatedButton( - onPressed: _callApiWithDio, - child: Text("Call API with Dio"), + onPressed: _callPostApiWithDio, + child: const Text("Call POST API with Dio"), + ), + ElevatedButton( + onPressed: _callGetApiWithDio, + child: const Text("Call GET API with Dio"), ), const Divider(), const Padding( @@ -479,8 +485,31 @@ class InitialScreenState extends State { ); } - void _callApiWithDio() { - Dio() + void _callGetApiWithDio() async { + final dio = Dio() + ..interceptors.add(PostHogDioInterceptor(attachPayloads: true)); + final response = await dio.get('https://httpbin.org/get'); + setState(() { + _result = response.data; + }); + } + + Future _callPostApiWithDio() async { + final dio = Dio() + ..interceptors.add(PostHogDioInterceptor(attachPayloads: true)); + await dio.post('https://httpbin.org/post', data: { + 'key': 'value', + }); + if (!mounted) { + return; + } + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('API call successful! Check PostHog.'), + backgroundColor: Colors.green, + duration: Duration(seconds: 3), + ), + ); } } diff --git a/example/macos/.gitignore b/packages/posthog_flutter/example/macos/.gitignore similarity index 100% rename from example/macos/.gitignore rename to packages/posthog_flutter/example/macos/.gitignore diff --git a/example/macos/Flutter/Flutter-Debug.xcconfig b/packages/posthog_flutter/example/macos/Flutter/Flutter-Debug.xcconfig similarity index 100% rename from example/macos/Flutter/Flutter-Debug.xcconfig rename to packages/posthog_flutter/example/macos/Flutter/Flutter-Debug.xcconfig diff --git a/example/macos/Flutter/Flutter-Release.xcconfig b/packages/posthog_flutter/example/macos/Flutter/Flutter-Release.xcconfig similarity index 100% rename from example/macos/Flutter/Flutter-Release.xcconfig rename to packages/posthog_flutter/example/macos/Flutter/Flutter-Release.xcconfig diff --git a/example/macos/Flutter/GeneratedPluginRegistrant.swift b/packages/posthog_flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift similarity index 100% rename from example/macos/Flutter/GeneratedPluginRegistrant.swift rename to packages/posthog_flutter/example/macos/Flutter/GeneratedPluginRegistrant.swift diff --git a/example/macos/Podfile b/packages/posthog_flutter/example/macos/Podfile similarity index 100% rename from example/macos/Podfile rename to packages/posthog_flutter/example/macos/Podfile diff --git a/example/macos/Runner.xcodeproj/project.pbxproj b/packages/posthog_flutter/example/macos/Runner.xcodeproj/project.pbxproj similarity index 99% rename from example/macos/Runner.xcodeproj/project.pbxproj rename to packages/posthog_flutter/example/macos/Runner.xcodeproj/project.pbxproj index 9d2fde4..d440392 100644 --- a/example/macos/Runner.xcodeproj/project.pbxproj +++ b/packages/posthog_flutter/example/macos/Runner.xcodeproj/project.pbxproj @@ -259,7 +259,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { diff --git a/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/posthog_flutter/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/posthog_flutter/example/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/posthog_flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme similarity index 98% rename from example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme rename to packages/posthog_flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 397f3d3..ac78810 100644 --- a/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/posthog_flutter/example/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ diff --git a/example/macos/Runner.xcworkspace/contents.xcworkspacedata b/packages/posthog_flutter/example/macos/Runner.xcworkspace/contents.xcworkspacedata similarity index 100% rename from example/macos/Runner.xcworkspace/contents.xcworkspacedata rename to packages/posthog_flutter/example/macos/Runner.xcworkspace/contents.xcworkspacedata diff --git a/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/posthog_flutter/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to packages/posthog_flutter/example/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/macos/Runner/AppDelegate.swift b/packages/posthog_flutter/example/macos/Runner/AppDelegate.swift similarity index 62% rename from example/macos/Runner/AppDelegate.swift rename to packages/posthog_flutter/example/macos/Runner/AppDelegate.swift index d53ef64..b3c1761 100644 --- a/example/macos/Runner/AppDelegate.swift +++ b/packages/posthog_flutter/example/macos/Runner/AppDelegate.swift @@ -1,9 +1,13 @@ import Cocoa import FlutterMacOS -@NSApplicationMain +@main class AppDelegate: FlutterAppDelegate { override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { return true } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } } diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png diff --git a/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png similarity index 100% rename from example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png rename to packages/posthog_flutter/example/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png diff --git a/example/macos/Runner/Base.lproj/MainMenu.xib b/packages/posthog_flutter/example/macos/Runner/Base.lproj/MainMenu.xib similarity index 100% rename from example/macos/Runner/Base.lproj/MainMenu.xib rename to packages/posthog_flutter/example/macos/Runner/Base.lproj/MainMenu.xib diff --git a/example/macos/Runner/Configs/AppInfo.xcconfig b/packages/posthog_flutter/example/macos/Runner/Configs/AppInfo.xcconfig similarity index 100% rename from example/macos/Runner/Configs/AppInfo.xcconfig rename to packages/posthog_flutter/example/macos/Runner/Configs/AppInfo.xcconfig diff --git a/example/macos/Runner/Configs/Debug.xcconfig b/packages/posthog_flutter/example/macos/Runner/Configs/Debug.xcconfig similarity index 100% rename from example/macos/Runner/Configs/Debug.xcconfig rename to packages/posthog_flutter/example/macos/Runner/Configs/Debug.xcconfig diff --git a/example/macos/Runner/Configs/Release.xcconfig b/packages/posthog_flutter/example/macos/Runner/Configs/Release.xcconfig similarity index 100% rename from example/macos/Runner/Configs/Release.xcconfig rename to packages/posthog_flutter/example/macos/Runner/Configs/Release.xcconfig diff --git a/example/macos/Runner/Configs/Warnings.xcconfig b/packages/posthog_flutter/example/macos/Runner/Configs/Warnings.xcconfig similarity index 100% rename from example/macos/Runner/Configs/Warnings.xcconfig rename to packages/posthog_flutter/example/macos/Runner/Configs/Warnings.xcconfig diff --git a/example/macos/Runner/DebugProfile.entitlements b/packages/posthog_flutter/example/macos/Runner/DebugProfile.entitlements similarity index 100% rename from example/macos/Runner/DebugProfile.entitlements rename to packages/posthog_flutter/example/macos/Runner/DebugProfile.entitlements diff --git a/example/macos/Runner/Info.plist b/packages/posthog_flutter/example/macos/Runner/Info.plist similarity index 100% rename from example/macos/Runner/Info.plist rename to packages/posthog_flutter/example/macos/Runner/Info.plist diff --git a/example/macos/Runner/MainFlutterWindow.swift b/packages/posthog_flutter/example/macos/Runner/MainFlutterWindow.swift similarity index 100% rename from example/macos/Runner/MainFlutterWindow.swift rename to packages/posthog_flutter/example/macos/Runner/MainFlutterWindow.swift diff --git a/example/macos/Runner/Release.entitlements b/packages/posthog_flutter/example/macos/Runner/Release.entitlements similarity index 100% rename from example/macos/Runner/Release.entitlements rename to packages/posthog_flutter/example/macos/Runner/Release.entitlements diff --git a/example/pubspec.yaml b/packages/posthog_flutter/example/pubspec.yaml similarity index 94% rename from example/pubspec.yaml rename to packages/posthog_flutter/example/pubspec.yaml index 3659002..d6f3909 100644 --- a/example/pubspec.yaml +++ b/packages/posthog_flutter/example/pubspec.yaml @@ -25,14 +25,20 @@ dependencies: # See https://dart.dev/tools/pub/dependencies#version-constraints # The example app is bundled with the plugin so we use a path dependency on # the parent directory to use the current plugin's version. - path: ../ + path: ../../posthog_flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.3 dio: ^5.9.0 posthog_dio_interceptor: - path: ../packages/posthog_dio_interceptor + path: ../../posthog_dio_interceptor + +dependency_overrides: + posthog_flutter: + path: ../../posthog_flutter + posthog_dio_interceptor: + path: ../../posthog_dio_interceptor dev_dependencies: diff --git a/example/web/favicon.png b/packages/posthog_flutter/example/web/favicon.png similarity index 100% rename from example/web/favicon.png rename to packages/posthog_flutter/example/web/favicon.png diff --git a/example/web/icons/Icon-192.png b/packages/posthog_flutter/example/web/icons/Icon-192.png similarity index 100% rename from example/web/icons/Icon-192.png rename to packages/posthog_flutter/example/web/icons/Icon-192.png diff --git a/example/web/icons/Icon-512.png b/packages/posthog_flutter/example/web/icons/Icon-512.png similarity index 100% rename from example/web/icons/Icon-512.png rename to packages/posthog_flutter/example/web/icons/Icon-512.png diff --git a/example/web/icons/Icon-maskable-192.png b/packages/posthog_flutter/example/web/icons/Icon-maskable-192.png similarity index 100% rename from example/web/icons/Icon-maskable-192.png rename to packages/posthog_flutter/example/web/icons/Icon-maskable-192.png diff --git a/example/web/icons/Icon-maskable-512.png b/packages/posthog_flutter/example/web/icons/Icon-maskable-512.png similarity index 100% rename from example/web/icons/Icon-maskable-512.png rename to packages/posthog_flutter/example/web/icons/Icon-maskable-512.png diff --git a/example/web/index.html b/packages/posthog_flutter/example/web/index.html similarity index 100% rename from example/web/index.html rename to packages/posthog_flutter/example/web/index.html diff --git a/example/web/manifest.json b/packages/posthog_flutter/example/web/manifest.json similarity index 100% rename from example/web/manifest.json rename to packages/posthog_flutter/example/web/manifest.json diff --git a/ios/.gitignore b/packages/posthog_flutter/ios/.gitignore similarity index 100% rename from ios/.gitignore rename to packages/posthog_flutter/ios/.gitignore diff --git a/ios/Assets/.gitkeep b/packages/posthog_flutter/ios/Assets/.gitkeep similarity index 100% rename from ios/Assets/.gitkeep rename to packages/posthog_flutter/ios/Assets/.gitkeep diff --git a/ios/Classes/PostHogDisplaySurvey+Dict.swift b/packages/posthog_flutter/ios/Classes/PostHogDisplaySurvey+Dict.swift similarity index 100% rename from ios/Classes/PostHogDisplaySurvey+Dict.swift rename to packages/posthog_flutter/ios/Classes/PostHogDisplaySurvey+Dict.swift diff --git a/ios/Classes/PostHogFlutterVersion.swift b/packages/posthog_flutter/ios/Classes/PostHogFlutterVersion.swift similarity index 100% rename from ios/Classes/PostHogFlutterVersion.swift rename to packages/posthog_flutter/ios/Classes/PostHogFlutterVersion.swift diff --git a/ios/Classes/PosthogFlutterPlugin.swift b/packages/posthog_flutter/ios/Classes/PosthogFlutterPlugin.swift similarity index 100% rename from ios/Classes/PosthogFlutterPlugin.swift rename to packages/posthog_flutter/ios/Classes/PosthogFlutterPlugin.swift diff --git a/ios/Resources/PrivacyInfo.xcprivacy b/packages/posthog_flutter/ios/Resources/PrivacyInfo.xcprivacy similarity index 100% rename from ios/Resources/PrivacyInfo.xcprivacy rename to packages/posthog_flutter/ios/Resources/PrivacyInfo.xcprivacy diff --git a/ios/posthog_flutter.podspec b/packages/posthog_flutter/ios/posthog_flutter.podspec similarity index 100% rename from ios/posthog_flutter.podspec rename to packages/posthog_flutter/ios/posthog_flutter.podspec diff --git a/lib/posthog_flutter.dart b/packages/posthog_flutter/lib/posthog_flutter.dart similarity index 100% rename from lib/posthog_flutter.dart rename to packages/posthog_flutter/lib/posthog_flutter.dart diff --git a/lib/posthog_flutter_web.dart b/packages/posthog_flutter/lib/posthog_flutter_web.dart similarity index 100% rename from lib/posthog_flutter_web.dart rename to packages/posthog_flutter/lib/posthog_flutter_web.dart diff --git a/lib/src/error_tracking/dart_exception_processor.dart b/packages/posthog_flutter/lib/src/error_tracking/dart_exception_processor.dart similarity index 100% rename from lib/src/error_tracking/dart_exception_processor.dart rename to packages/posthog_flutter/lib/src/error_tracking/dart_exception_processor.dart diff --git a/lib/src/error_tracking/isolate_handler_io.dart b/packages/posthog_flutter/lib/src/error_tracking/isolate_handler_io.dart similarity index 100% rename from lib/src/error_tracking/isolate_handler_io.dart rename to packages/posthog_flutter/lib/src/error_tracking/isolate_handler_io.dart diff --git a/lib/src/error_tracking/isolate_handler_web.dart b/packages/posthog_flutter/lib/src/error_tracking/isolate_handler_web.dart similarity index 100% rename from lib/src/error_tracking/isolate_handler_web.dart rename to packages/posthog_flutter/lib/src/error_tracking/isolate_handler_web.dart diff --git a/lib/src/error_tracking/posthog_error_tracking_autocapture_integration.dart b/packages/posthog_flutter/lib/src/error_tracking/posthog_error_tracking_autocapture_integration.dart similarity index 100% rename from lib/src/error_tracking/posthog_error_tracking_autocapture_integration.dart rename to packages/posthog_flutter/lib/src/error_tracking/posthog_error_tracking_autocapture_integration.dart diff --git a/lib/src/error_tracking/posthog_exception.dart b/packages/posthog_flutter/lib/src/error_tracking/posthog_exception.dart similarity index 100% rename from lib/src/error_tracking/posthog_exception.dart rename to packages/posthog_flutter/lib/src/error_tracking/posthog_exception.dart diff --git a/lib/src/error_tracking/utils/_io_isolate_utils.dart b/packages/posthog_flutter/lib/src/error_tracking/utils/_io_isolate_utils.dart similarity index 100% rename from lib/src/error_tracking/utils/_io_isolate_utils.dart rename to packages/posthog_flutter/lib/src/error_tracking/utils/_io_isolate_utils.dart diff --git a/lib/src/error_tracking/utils/_web_isolate_utils.dart b/packages/posthog_flutter/lib/src/error_tracking/utils/_web_isolate_utils.dart similarity index 100% rename from lib/src/error_tracking/utils/_web_isolate_utils.dart rename to packages/posthog_flutter/lib/src/error_tracking/utils/_web_isolate_utils.dart diff --git a/lib/src/error_tracking/utils/isolate_utils.dart b/packages/posthog_flutter/lib/src/error_tracking/utils/isolate_utils.dart similarity index 100% rename from lib/src/error_tracking/utils/isolate_utils.dart rename to packages/posthog_flutter/lib/src/error_tracking/utils/isolate_utils.dart diff --git a/lib/src/posthog.dart b/packages/posthog_flutter/lib/src/posthog.dart similarity index 100% rename from lib/src/posthog.dart rename to packages/posthog_flutter/lib/src/posthog.dart diff --git a/lib/src/posthog_config.dart b/packages/posthog_flutter/lib/src/posthog_config.dart similarity index 100% rename from lib/src/posthog_config.dart rename to packages/posthog_flutter/lib/src/posthog_config.dart diff --git a/lib/src/posthog_flutter_io.dart b/packages/posthog_flutter/lib/src/posthog_flutter_io.dart similarity index 100% rename from lib/src/posthog_flutter_io.dart rename to packages/posthog_flutter/lib/src/posthog_flutter_io.dart diff --git a/lib/src/posthog_flutter_platform_interface.dart b/packages/posthog_flutter/lib/src/posthog_flutter_platform_interface.dart similarity index 100% rename from lib/src/posthog_flutter_platform_interface.dart rename to packages/posthog_flutter/lib/src/posthog_flutter_platform_interface.dart diff --git a/lib/src/posthog_flutter_web_handler.dart b/packages/posthog_flutter/lib/src/posthog_flutter_web_handler.dart similarity index 100% rename from lib/src/posthog_flutter_web_handler.dart rename to packages/posthog_flutter/lib/src/posthog_flutter_web_handler.dart diff --git a/lib/src/posthog_observer.dart b/packages/posthog_flutter/lib/src/posthog_observer.dart similarity index 100% rename from lib/src/posthog_observer.dart rename to packages/posthog_flutter/lib/src/posthog_observer.dart diff --git a/lib/src/posthog_widget.dart b/packages/posthog_flutter/lib/src/posthog_widget.dart similarity index 100% rename from lib/src/posthog_widget.dart rename to packages/posthog_flutter/lib/src/posthog_widget.dart diff --git a/lib/src/replay/change_detector.dart b/packages/posthog_flutter/lib/src/replay/change_detector.dart similarity index 100% rename from lib/src/replay/change_detector.dart rename to packages/posthog_flutter/lib/src/replay/change_detector.dart diff --git a/lib/src/replay/element_parsers/element_data.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/element_data.dart similarity index 100% rename from lib/src/replay/element_parsers/element_data.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/element_data.dart diff --git a/lib/src/replay/element_parsers/element_data_factory.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/element_data_factory.dart similarity index 100% rename from lib/src/replay/element_parsers/element_data_factory.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/element_data_factory.dart diff --git a/lib/src/replay/element_parsers/element_object_parser.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/element_object_parser.dart similarity index 100% rename from lib/src/replay/element_parsers/element_object_parser.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/element_object_parser.dart diff --git a/lib/src/replay/element_parsers/element_parser.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/element_parser.dart similarity index 100% rename from lib/src/replay/element_parsers/element_parser.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/element_parser.dart diff --git a/lib/src/replay/element_parsers/element_parser_factory.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/element_parser_factory.dart similarity index 100% rename from lib/src/replay/element_parsers/element_parser_factory.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/element_parser_factory.dart diff --git a/lib/src/replay/element_parsers/element_parsers_const.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/element_parsers_const.dart similarity index 100% rename from lib/src/replay/element_parsers/element_parsers_const.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/element_parsers_const.dart diff --git a/lib/src/replay/element_parsers/image_element/position_calculator.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/image_element/position_calculator.dart similarity index 100% rename from lib/src/replay/element_parsers/image_element/position_calculator.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/image_element/position_calculator.dart diff --git a/lib/src/replay/element_parsers/image_element/render_image_parser.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/image_element/render_image_parser.dart similarity index 100% rename from lib/src/replay/element_parsers/image_element/render_image_parser.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/image_element/render_image_parser.dart diff --git a/lib/src/replay/element_parsers/image_element/scaler.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/image_element/scaler.dart similarity index 100% rename from lib/src/replay/element_parsers/image_element/scaler.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/image_element/scaler.dart diff --git a/lib/src/replay/element_parsers/root_element_provider.dart b/packages/posthog_flutter/lib/src/replay/element_parsers/root_element_provider.dart similarity index 100% rename from lib/src/replay/element_parsers/root_element_provider.dart rename to packages/posthog_flutter/lib/src/replay/element_parsers/root_element_provider.dart diff --git a/lib/src/replay/image_extension.dart b/packages/posthog_flutter/lib/src/replay/image_extension.dart similarity index 100% rename from lib/src/replay/image_extension.dart rename to packages/posthog_flutter/lib/src/replay/image_extension.dart diff --git a/lib/src/replay/mask/image_mask_painter.dart b/packages/posthog_flutter/lib/src/replay/mask/image_mask_painter.dart similarity index 100% rename from lib/src/replay/mask/image_mask_painter.dart rename to packages/posthog_flutter/lib/src/replay/mask/image_mask_painter.dart diff --git a/lib/src/replay/mask/posthog_mask_controller.dart b/packages/posthog_flutter/lib/src/replay/mask/posthog_mask_controller.dart similarity index 100% rename from lib/src/replay/mask/posthog_mask_controller.dart rename to packages/posthog_flutter/lib/src/replay/mask/posthog_mask_controller.dart diff --git a/lib/src/replay/mask/posthog_mask_widget.dart b/packages/posthog_flutter/lib/src/replay/mask/posthog_mask_widget.dart similarity index 100% rename from lib/src/replay/mask/posthog_mask_widget.dart rename to packages/posthog_flutter/lib/src/replay/mask/posthog_mask_widget.dart diff --git a/lib/src/replay/mask/widget_elements_decipher.dart b/packages/posthog_flutter/lib/src/replay/mask/widget_elements_decipher.dart similarity index 100% rename from lib/src/replay/mask/widget_elements_decipher.dart rename to packages/posthog_flutter/lib/src/replay/mask/widget_elements_decipher.dart diff --git a/lib/src/replay/native_communicator.dart b/packages/posthog_flutter/lib/src/replay/native_communicator.dart similarity index 100% rename from lib/src/replay/native_communicator.dart rename to packages/posthog_flutter/lib/src/replay/native_communicator.dart diff --git a/lib/src/replay/screenshot/screenshot_capturer.dart b/packages/posthog_flutter/lib/src/replay/screenshot/screenshot_capturer.dart similarity index 100% rename from lib/src/replay/screenshot/screenshot_capturer.dart rename to packages/posthog_flutter/lib/src/replay/screenshot/screenshot_capturer.dart diff --git a/lib/src/replay/screenshot/snapshot_manager.dart b/packages/posthog_flutter/lib/src/replay/screenshot/snapshot_manager.dart similarity index 100% rename from lib/src/replay/screenshot/snapshot_manager.dart rename to packages/posthog_flutter/lib/src/replay/screenshot/snapshot_manager.dart diff --git a/lib/src/replay/size_extension.dart b/packages/posthog_flutter/lib/src/replay/size_extension.dart similarity index 100% rename from lib/src/replay/size_extension.dart rename to packages/posthog_flutter/lib/src/replay/size_extension.dart diff --git a/lib/src/replay/vendor/equality.dart b/packages/posthog_flutter/lib/src/replay/vendor/equality.dart similarity index 100% rename from lib/src/replay/vendor/equality.dart rename to packages/posthog_flutter/lib/src/replay/vendor/equality.dart diff --git a/lib/src/surveys/models/posthog_display_choice_question.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_choice_question.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_choice_question.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_choice_question.dart diff --git a/lib/src/surveys/models/posthog_display_link_question.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_link_question.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_link_question.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_link_question.dart diff --git a/lib/src/surveys/models/posthog_display_open_question.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_open_question.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_open_question.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_open_question.dart diff --git a/lib/src/surveys/models/posthog_display_rating_question.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_rating_question.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_rating_question.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_rating_question.dart diff --git a/lib/src/surveys/models/posthog_display_survey.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_survey.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey.dart diff --git a/lib/src/surveys/models/posthog_display_survey_appearance.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_appearance.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_survey_appearance.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_appearance.dart diff --git a/lib/src/surveys/models/posthog_display_survey_question.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_question.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_survey_question.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_question.dart diff --git a/lib/src/surveys/models/posthog_display_survey_rating_type.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_rating_type.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_survey_rating_type.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_rating_type.dart diff --git a/lib/src/surveys/models/posthog_display_survey_text_content_type.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_text_content_type.dart similarity index 100% rename from lib/src/surveys/models/posthog_display_survey_text_content_type.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_display_survey_text_content_type.dart diff --git a/lib/src/surveys/models/posthog_survey_question_type.dart b/packages/posthog_flutter/lib/src/surveys/models/posthog_survey_question_type.dart similarity index 100% rename from lib/src/surveys/models/posthog_survey_question_type.dart rename to packages/posthog_flutter/lib/src/surveys/models/posthog_survey_question_type.dart diff --git a/lib/src/surveys/models/survey_appearance.dart b/packages/posthog_flutter/lib/src/surveys/models/survey_appearance.dart similarity index 100% rename from lib/src/surveys/models/survey_appearance.dart rename to packages/posthog_flutter/lib/src/surveys/models/survey_appearance.dart diff --git a/lib/src/surveys/models/survey_callbacks.dart b/packages/posthog_flutter/lib/src/surveys/models/survey_callbacks.dart similarity index 100% rename from lib/src/surveys/models/survey_callbacks.dart rename to packages/posthog_flutter/lib/src/surveys/models/survey_callbacks.dart diff --git a/lib/src/surveys/survey_service.dart b/packages/posthog_flutter/lib/src/surveys/survey_service.dart similarity index 100% rename from lib/src/surveys/survey_service.dart rename to packages/posthog_flutter/lib/src/surveys/survey_service.dart diff --git a/lib/src/surveys/widgets/choice_question.dart b/packages/posthog_flutter/lib/src/surveys/widgets/choice_question.dart similarity index 100% rename from lib/src/surveys/widgets/choice_question.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/choice_question.dart diff --git a/lib/src/surveys/widgets/confirmation_message.dart b/packages/posthog_flutter/lib/src/surveys/widgets/confirmation_message.dart similarity index 100% rename from lib/src/surveys/widgets/confirmation_message.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/confirmation_message.dart diff --git a/lib/src/surveys/widgets/link_question.dart b/packages/posthog_flutter/lib/src/surveys/widgets/link_question.dart similarity index 100% rename from lib/src/surveys/widgets/link_question.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/link_question.dart diff --git a/lib/src/surveys/widgets/number_rating_button.dart b/packages/posthog_flutter/lib/src/surveys/widgets/number_rating_button.dart similarity index 100% rename from lib/src/surveys/widgets/number_rating_button.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/number_rating_button.dart diff --git a/lib/src/surveys/widgets/open_text_question.dart b/packages/posthog_flutter/lib/src/surveys/widgets/open_text_question.dart similarity index 100% rename from lib/src/surveys/widgets/open_text_question.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/open_text_question.dart diff --git a/lib/src/surveys/widgets/question_header.dart b/packages/posthog_flutter/lib/src/surveys/widgets/question_header.dart similarity index 100% rename from lib/src/surveys/widgets/question_header.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/question_header.dart diff --git a/lib/src/surveys/widgets/rating_icons.dart b/packages/posthog_flutter/lib/src/surveys/widgets/rating_icons.dart similarity index 100% rename from lib/src/surveys/widgets/rating_icons.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/rating_icons.dart diff --git a/lib/src/surveys/widgets/rating_question.dart b/packages/posthog_flutter/lib/src/surveys/widgets/rating_question.dart similarity index 100% rename from lib/src/surveys/widgets/rating_question.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/rating_question.dart diff --git a/lib/src/surveys/widgets/survey_bottom_sheet.dart b/packages/posthog_flutter/lib/src/surveys/widgets/survey_bottom_sheet.dart similarity index 100% rename from lib/src/surveys/widgets/survey_bottom_sheet.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/survey_bottom_sheet.dart diff --git a/lib/src/surveys/widgets/survey_button.dart b/packages/posthog_flutter/lib/src/surveys/widgets/survey_button.dart similarity index 100% rename from lib/src/surveys/widgets/survey_button.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/survey_button.dart diff --git a/lib/src/surveys/widgets/survey_choice_button.dart b/packages/posthog_flutter/lib/src/surveys/widgets/survey_choice_button.dart similarity index 100% rename from lib/src/surveys/widgets/survey_choice_button.dart rename to packages/posthog_flutter/lib/src/surveys/widgets/survey_choice_button.dart diff --git a/lib/src/util/logging.dart b/packages/posthog_flutter/lib/src/util/logging.dart similarity index 100% rename from lib/src/util/logging.dart rename to packages/posthog_flutter/lib/src/util/logging.dart diff --git a/lib/src/util/platform_io_real.dart b/packages/posthog_flutter/lib/src/util/platform_io_real.dart similarity index 100% rename from lib/src/util/platform_io_real.dart rename to packages/posthog_flutter/lib/src/util/platform_io_real.dart diff --git a/lib/src/util/platform_io_stub.dart b/packages/posthog_flutter/lib/src/util/platform_io_stub.dart similarity index 100% rename from lib/src/util/platform_io_stub.dart rename to packages/posthog_flutter/lib/src/util/platform_io_stub.dart diff --git a/lib/src/utils/property_normalizer.dart b/packages/posthog_flutter/lib/src/utils/property_normalizer.dart similarity index 100% rename from lib/src/utils/property_normalizer.dart rename to packages/posthog_flutter/lib/src/utils/property_normalizer.dart diff --git a/macos/Classes/PostHogFlutterVersion.swift b/packages/posthog_flutter/macos/Classes/PostHogFlutterVersion.swift similarity index 100% rename from macos/Classes/PostHogFlutterVersion.swift rename to packages/posthog_flutter/macos/Classes/PostHogFlutterVersion.swift diff --git a/macos/Classes/PosthogFlutterPlugin.swift b/packages/posthog_flutter/macos/Classes/PosthogFlutterPlugin.swift similarity index 100% rename from macos/Classes/PosthogFlutterPlugin.swift rename to packages/posthog_flutter/macos/Classes/PosthogFlutterPlugin.swift diff --git a/macos/Resources/PrivacyInfo.xcprivacy b/packages/posthog_flutter/macos/Resources/PrivacyInfo.xcprivacy similarity index 100% rename from macos/Resources/PrivacyInfo.xcprivacy rename to packages/posthog_flutter/macos/Resources/PrivacyInfo.xcprivacy diff --git a/macos/posthog_flutter.podspec b/packages/posthog_flutter/macos/posthog_flutter.podspec similarity index 100% rename from macos/posthog_flutter.podspec rename to packages/posthog_flutter/macos/posthog_flutter.podspec diff --git a/pubspec.yaml b/packages/posthog_flutter/pubspec.yaml similarity index 100% rename from pubspec.yaml rename to packages/posthog_flutter/pubspec.yaml diff --git a/test/dart_exception_processor_test.dart b/packages/posthog_flutter/test/dart_exception_processor_test.dart similarity index 100% rename from test/dart_exception_processor_test.dart rename to packages/posthog_flutter/test/dart_exception_processor_test.dart diff --git a/test/posthog_flutter_io_test.dart b/packages/posthog_flutter/test/posthog_flutter_io_test.dart similarity index 100% rename from test/posthog_flutter_io_test.dart rename to packages/posthog_flutter/test/posthog_flutter_io_test.dart diff --git a/test/posthog_flutter_platform_interface_fake.dart b/packages/posthog_flutter/test/posthog_flutter_platform_interface_fake.dart similarity index 100% rename from test/posthog_flutter_platform_interface_fake.dart rename to packages/posthog_flutter/test/posthog_flutter_platform_interface_fake.dart diff --git a/test/posthog_observer_test.dart b/packages/posthog_flutter/test/posthog_observer_test.dart similarity index 100% rename from test/posthog_observer_test.dart rename to packages/posthog_flutter/test/posthog_observer_test.dart diff --git a/test/posthog_test.dart b/packages/posthog_flutter/test/posthog_test.dart similarity index 100% rename from test/posthog_test.dart rename to packages/posthog_flutter/test/posthog_test.dart diff --git a/test/property_normalizer_test.dart b/packages/posthog_flutter/test/property_normalizer_test.dart similarity index 100% rename from test/property_normalizer_test.dart rename to packages/posthog_flutter/test/property_normalizer_test.dart From ce70f826a8845074ba653476e40cbef1447ed694 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Tue, 25 Nov 2025 15:16:41 +0800 Subject: [PATCH 10/11] Update CI configuration to set working directory for Posthog Flutter package --- .github/workflows/ci-dio-interceptor.yml | 43 +++++++++++++++++++ .github/workflows/ci.yml | 26 ++++++++--- .github/workflows/publish-dio-interceptor.yml | 28 ++++++++++++ .github/workflows/publish.yml | 8 +++- Makefile | 2 +- .../lib/posthog_dio_interceptor.dart | 2 +- 6 files changed, 98 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/ci-dio-interceptor.yml create mode 100644 .github/workflows/publish-dio-interceptor.yml diff --git a/.github/workflows/ci-dio-interceptor.yml b/.github/workflows/ci-dio-interceptor.yml new file mode 100644 index 0000000..f62e139 --- /dev/null +++ b/.github/workflows/ci-dio-interceptor.yml @@ -0,0 +1,43 @@ +name: CI - Dio Interceptor + +on: + push: + branches: + - main + paths: + - "packages/posthog_dio_interceptor/**" + - ".github/workflows/ci-dio-interceptor.yml" + pull_request: + paths: + - "packages/posthog_dio_interceptor/**" + - ".github/workflows/ci-dio-interceptor.yml" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - uses: dart-lang/setup-dart@v1 + with: + sdk: stable + + - name: Install dependencies + run: | + dart pub get + working-directory: ./packages/posthog_dio_interceptor + + - name: Check format + run: | + dart format --set-exit-if-changed ./ + working-directory: ./packages/posthog_dio_interceptor + + - name: Analyze + run: | + dart analyze . + working-directory: ./packages/posthog_dio_interceptor + + - name: Run tests + run: | + dart test + working-directory: ./packages/posthog_dio_interceptor diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b903a59..3fd8b8b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,9 +3,17 @@ on: push: branches: - main + paths: + - "packages/posthog_flutter/**" + - ".github/workflows/ci.yml" + - "Makefile" + - "ktlint-baseline.xml" pull_request: - paths-ignore: - - "**/*.md" + paths: + - "packages/posthog_flutter/**" + - ".github/workflows/ci.yml" + - "Makefile" + - "ktlint-baseline.xml" # Publish using custom workflow jobs: @@ -35,6 +43,7 @@ jobs: flutter pub get cd example flutter pub get + working-directory: ./packages/posthog_flutter - name: SDK format check run: | @@ -43,22 +52,25 @@ jobs: make analyzeDart make formatKotlin make formatSwift + working-directory: ./packages/posthog_flutter - name: Test - run: flutter test + run: | + flutter test + working-directory: ./packages/posthog_flutter - name: Build iOS - working-directory: ./example + working-directory: ./packages/posthog_flutter/example run: flutter build ios --simulator --no-codesign - name: Build macOS - working-directory: ./example + working-directory: ./packages/posthog_flutter/example run: flutter build macos - name: Build Android - working-directory: ./example + working-directory: ./packages/posthog_flutter/example run: flutter build apk - name: Build Web - working-directory: ./example + working-directory: ./packages/posthog_flutter/example run: flutter build web diff --git a/.github/workflows/publish-dio-interceptor.yml b/.github/workflows/publish-dio-interceptor.yml new file mode 100644 index 0000000..6008391 --- /dev/null +++ b/.github/workflows/publish-dio-interceptor.yml @@ -0,0 +1,28 @@ +name: Publish Dio Interceptor to pub.dev + +on: + push: + tags: + - 'dio-v[0-9]+.[0-9]+.[0-9]+*' # tag pattern for dio interceptor: eg 'dio-v1.0.0' + +jobs: + publish: + permissions: + id-token: write # Required for authentication using OIDC + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - uses: dart-lang/setup-dart@v1 + with: + sdk: stable + + - name: Install dependencies + run: | + dart pub get + working-directory: ./packages/posthog_dio_interceptor + + - name: Publish + run: | + dart pub publish --force + working-directory: ./packages/posthog_dio_interceptor diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 36a5826..43c2d58 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -20,6 +20,10 @@ jobs: with: channel: 'stable' - name: Install dependencies - run: flutter pub get + run: | + flutter pub get + working-directory: ./packages/posthog_flutter - name: Publish - run: flutter pub publish --force + run: | + flutter pub publish --force + working-directory: ./packages/posthog_flutter diff --git a/Makefile b/Makefile index 5a0475c..766a1f8 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ formatKotlin: # swiftlint ios/Classes --fix conflicts with swiftformat formatSwift: - swiftformat ios/Classes --swiftversion 5.3 + swiftformat packages/posthog_flutter/ios/Classes --swiftversion 5.3 formatDart: dart format . diff --git a/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart b/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart index 81b347e..4b2fc60 100644 --- a/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart +++ b/packages/posthog_dio_interceptor/lib/posthog_dio_interceptor.dart @@ -3,4 +3,4 @@ /// More dartdocs go here. library; -export 'src/dio_interceptor.dart'; \ No newline at end of file +export 'src/dio_interceptor.dart'; From 18cb2f7f1b40169f27c9ca48af3f2a39ba67b067 Mon Sep 17 00:00:00 2001 From: TabooSun Date: Fri, 19 Dec 2025 21:26:47 +0800 Subject: [PATCH 11/11] Update `.gitignore` to correctly ignore `Packages` folder --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5afc586..94bb00a 100644 --- a/.gitignore +++ b/.gitignore @@ -461,7 +461,7 @@ PublishScripts/ # NuGet Symbol Packages *.snupkg # The packages folder can be ignored because of Package Restore -#**/[Pp]ackages/* +**/Packages/* # except build/, which is used as an MSBuild target. !**/[Pp]ackages/build/ # Uncomment if necessary however generally it will be regenerated when needed