Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions packages/cli_tools/lib/src/analytics/analytics.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,23 +19,44 @@ class MixPanelAnalytics implements Analytics {
static const _defaultTimeout = Duration(seconds: 2);

final String _uniqueUserId;
final String _endpoint;
final String _projectToken;
final String _version;

final Uri _endpoint;
final Duration _timeout;

MixPanelAnalytics({
required final String uniqueUserId,
required final String projectToken,
required final String version,
final String endpoint = _defaultEndpoint,
final String? endpoint,
final Duration timeout = _defaultTimeout,
final bool disableIpTracking = false,
}) : _uniqueUserId = uniqueUserId,
_projectToken = projectToken,
_version = version,
_endpoint = endpoint,
_endpoint = _buildEndpoint(
endpoint ?? _defaultEndpoint,
disableIpTracking,
),
_timeout = timeout;

static Uri _buildEndpoint(
final String baseEndpoint,
final bool disableIpTracking,
) {
final uri = Uri.parse(baseEndpoint);
final ipValue = disableIpTracking ? '0' : '1';

final updatedUri = uri.replace(
queryParameters: {
...uri.queryParameters,
'ip': ipValue,
},
);
return updatedUri;
}

@override
void cleanUp() {}

Expand Down Expand Up @@ -71,7 +92,7 @@ class MixPanelAnalytics implements Analytics {
Future<void> _quietPost(final String payload) async {
try {
await http.post(
Uri.parse(_endpoint),
_endpoint,
body: 'data=$payload',
headers: {
'Accept': 'text/plain',
Expand Down