Skip to content

Commit

Permalink
fix: pr changes
Browse files Browse the repository at this point in the history
  • Loading branch information
slightfoot committed Jan 16, 2025
1 parent 886ce93 commit f968e0d
Show file tree
Hide file tree
Showing 15 changed files with 87 additions and 357 deletions.
10 changes: 5 additions & 5 deletions packages/clerk_auth/lib/src/clerk_api/telemetry.dart
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,6 @@ class Telemetry with Logging {
Uri.parse('https://clerk-telemetry.com/v1/event');
static const _telemetryPeriod = Duration(seconds: 27);

/// [terminate] the telemetry object
void terminate() {
_timer?.cancel();
}

/// Are we telemetricising?
bool get isEnabled => _sendTelemetryData && _instanceType.isDevelopment;

Expand All @@ -53,6 +48,11 @@ class Telemetry with Logging {
}
}

/// [terminate] the telemetry object
void terminate() {
_timer?.cancel();
}

/// Send a telemetry event to the backend.
///
Future<void> send(
Expand Down
256 changes: 0 additions & 256 deletions packages/clerk_flutter/lib/src/clerk_auth_provider.dart

This file was deleted.

72 changes: 32 additions & 40 deletions packages/clerk_flutter/lib/src/utils/clerk_telemetry.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,61 +6,53 @@ import 'package:flutter/material.dart';
/// An abstract class overriding state which allows telemetry
/// events to be generated as widgets are mounted and disposed
///
abstract class TelemetricState<T extends StatefulWidget> extends State<T> {
mixin ClerkTelemetryStateMixin<T extends StatefulWidget> on State<T> {
static const _equalityChecker = DeepCollectionEquality();

Map<String, dynamic>? _telemetryData;
ClerkAuthProvider? _telemetryAuth;
clerk.Telemetry? _telemetry;

/// Get the [ClerkAuthState] with which to make the telemetry report
/// to the back end
clerk.Telemetry get telemetry {
return _telemetry ??= ClerkAuth.of(context, listen: false).telemetry;
}

/// The payload of widget metadata that will be sent to telemetry
Map<String, dynamic> telemetryPayload(ClerkAuthProvider auth, T widget) =>
const {};
Map<String, dynamic> get telemetryPayload => const {};

Map<String, dynamic> _telemetryPayload(ClerkAuthProvider auth, T widget) {
Map<String, dynamic> _generateTelemetryPayload() {
return {
'component': widget.toString(),
...telemetryPayload(auth, widget),
...telemetryPayload,
};
}

/// Get the [ClerkAuthProvider] with which to make the telemetry report
/// to the back end
ClerkAuthProvider? get telemetryAuth =>
_telemetryAuth ??= ClerkAuth.of(context, listen: false);

void _reportTelemetry(void Function(ClerkAuthProvider) callback) {
if (telemetryAuth case final auth? when auth.telemetry.isEnabled) {
callback(auth);
}
}

@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_telemetryData is Map<String, dynamic>) {
if (telemetry.isEnabled) {
// this is an update or a rebuild
_reportTelemetry((auth) async {
final data = _telemetryPayload(auth, widget);
if (_telemetryData is Map<String, dynamic>) {
final data = _generateTelemetryPayload();
if (_equalityChecker.equals(data, _telemetryData) == false) {
_telemetryData = data;
await auth.telemetry.sendComponentUpdated(payload: data);
telemetry.sendComponentUpdated(data);
}
});
} else {
}
// this is the first widget build
_reportTelemetry((auth) async {
_telemetryData = _telemetryPayload(auth, widget);
await auth.telemetry.sendComponentMounted(payload: _telemetryData!);
});
else {
final data = _telemetryData = _generateTelemetryPayload();
telemetry.sendComponentMounted(data);
}
}
}

@override
void dispose() {
_reportTelemetry((auth) async {
_telemetryData = _telemetryPayload(auth, widget);
await auth.telemetry.sendComponentDismounted(payload: _telemetryData!);
});
if (telemetry.isEnabled) {
telemetry.sendComponentDismounted(_generateTelemetryPayload());
}
super.dispose();
}
}
Expand All @@ -70,21 +62,21 @@ extension on clerk.Telemetry {
static const _componentUpdated = 'COMPONENT UPDATED';
static const _componentDismounted = 'COMPONENT DISMOUNTED';

Future<void> sendComponentMounted({
required Map<String, dynamic> payload,
}) async {
Future<void> sendComponentMounted(
Map<String, dynamic> payload,
) async {
await send(_componentMounted, payload: payload);
}

Future<void> sendComponentUpdated({
required Map<String, dynamic> payload,
}) async {
Future<void> sendComponentUpdated(
Map<String, dynamic> payload,
) async {
await send(_componentUpdated, payload: payload);
}

Future<void> sendComponentDismounted({
required Map<String, dynamic> payload,
}) async {
Future<void> sendComponentDismounted(
Map<String, dynamic> payload,
) async {
await send(_componentDismounted, payload: payload);
}
}
Loading

0 comments on commit f968e0d

Please sign in to comment.