alexeyinkin commented on code in PR #24957:
URL: https://github.com/apache/beam/pull/24957#discussion_r1102769307


##########
playground/frontend/lib/components/playground_run_or_cancel_button.dart:
##########
@@ -20,38 +20,38 @@ import 'package:flutter/widgets.dart';
 import 'package:playground_components/playground_components.dart';
 import 'package:provider/provider.dart';
 
-import '../modules/analytics/analytics_service.dart';
-import '../utils/analytics_utils.dart';
-
 class PlaygroundRunOrCancelButton extends StatelessWidget {
   const PlaygroundRunOrCancelButton();
 
   @override
   Widget build(BuildContext context) {
     return Consumer<PlaygroundController>(
-      builder: (context, playgroundController, child) {
-        final analyticsService = AnalyticsService.get(context);
-        final stopwatch = Stopwatch();
-        final exampleName = getAnalyticsExampleName(playgroundController);
-
-        return RunOrCancelButton(
-          playgroundController: playgroundController,
-          beforeCancel: () {
-            final exampleName = getAnalyticsExampleName(playgroundController);
-            analyticsService.trackClickCancelRunEvent(exampleName);
-          },
-          beforeRun: () {
-            stopwatch.start();
-            analyticsService.trackClickRunEvent(exampleName);
-          },
-          onComplete: () {
-            analyticsService.trackRunTimeEvent(
-              exampleName,
-              stopwatch.elapsedMilliseconds,
-            );
-          },
-        );
-      }
+      builder: (context, playgroundController, child) => RunOrCancelButton(
+        playgroundController: playgroundController,
+        beforeCancel: (runner) {
+          PlaygroundComponents.analyticsService.sendUnawaited(

Review Comment:
   ToB and Playground have different events. We will have to implement bridge 
with ToB and Playground interfaces for abstractions and abstract + Google for 
implementations. Then we gain methods with named parameters which is a bit 
simpler interface than constructing events, except that we anyway have to 
construct events to store them and to manipulate their properties as a map.
   
   So I prefer constructing event objects here.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to