Skip to content
This repository was archived by the owner on Jan 2, 2024. It is now read-only.

Commit e61c22e

Browse files
committed
Refactor
1 parent 0142475 commit e61c22e

13 files changed

+73
-60
lines changed

README.md

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Add the directive somewhere after initializing/configuring GA. The POST request
6161

6262
If you don't use Axios, you have to implement this call by yourself.
6363

64-
## Broadcast Events to Google Analytics
64+
## Broadcast events to Google Analytics
6565

6666
Add the `ShouldBroadcastToAnalytics` interface to your event and you're ready! You don't have to manually bind any listeners.
6767

@@ -73,7 +73,7 @@ namespace App\Events;
7373
use App\Order;
7474
use Illuminate\Foundation\Events\Dispatchable;
7575
use Illuminate\Queue\SerializesModels;
76-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
76+
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
7777

7878
class OrderWasPaid implements ShouldBroadcastToAnalytics
7979
{
@@ -88,6 +88,36 @@ class OrderWasPaid implements ShouldBroadcastToAnalytics
8888
}
8989
```
9090

91+
## Handle framework and 3rd-party events
92+
93+
If you want to handle events where you can't add the `ShouldBroadcastToAnalytics` interface, you can manually register them in your `EventServiceProvider` using the `DispatchAnalyticsJob` listener.
94+
95+
```php
96+
<?php
97+
98+
namespace App\Providers;
99+
100+
use Illuminate\Auth\Events\Registered;
101+
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
102+
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
103+
use ProtoneMedia\AnalyticsEventTracking\Listeners\DispatchAnalyticsJob;
104+
105+
class EventServiceProvider extends ServiceProvider
106+
{
107+
/**
108+
* The event listener mappings for the application.
109+
*
110+
* @var array
111+
*/
112+
protected $listen = [
113+
Registered::class => [
114+
SendEmailVerificationNotification::class,
115+
DispatchAnalyticsJob::class,
116+
],
117+
];
118+
}
119+
```
120+
91121
## Customize the broadcast
92122

93123
There are two additional methods that lets you customize the call to Google Analytics.
@@ -105,7 +135,7 @@ use App\Order;
105135
use TheIconic\Tracking\GoogleAnalytics\Analytics;
106136
use Illuminate\Foundation\Events\Dispatchable;
107137
use Illuminate\Queue\SerializesModels;
108-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
138+
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
109139

110140
class OrderWasPaid implements ShouldBroadcastToAnalytics
111141
{

src/Analytics/BroadcastEvent.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ProtoneMedia\AnalyticsEventTracking\Analytics;
44

5-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
5+
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
66
use TheIconic\Tracking\GoogleAnalytics\Analytics;
77

88
class BroadcastEvent implements EventBroadcaster

src/Analytics/EventBroadcaster.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
namespace ProtoneMedia\AnalyticsEventTracking\Analytics;
44

5-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
6-
75
interface EventBroadcaster
86
{
9-
public function handle(ShouldBroadcastToAnalytics $event);
7+
public function handle($event);
108

119
public function withAnalytics(callable $callback): self;
1210
}

src/Events/ShouldBroadcastToAnalytics.php

Lines changed: 0 additions & 7 deletions
This file was deleted.

src/Jobs/SendEventToAnalytics.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,21 @@
88
use Illuminate\Queue\InteractsWithQueue;
99
use Illuminate\Queue\SerializesModels;
1010
use ProtoneMedia\AnalyticsEventTracking\Analytics\EventBroadcaster;
11-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
1211
use TheIconic\Tracking\GoogleAnalytics\Analytics;
1312

1413
class SendEventToAnalytics implements ShouldQueue
1514
{
1615
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
1716

18-
public ShouldBroadcastToAnalytics $event;
17+
public $event;
1918
public ?string $clientId;
19+
public ?string $userId;
2020

21-
public function __construct(ShouldBroadcastToAnalytics $event, string $clientId = null)
21+
public function __construct($event, string $clientId = null, string $userId = null)
2222
{
2323
$this->event = $event;
2424
$this->clientId = $clientId;
25+
$this->userId = $userId;
2526
}
2627

2728
public function handle(EventBroadcaster $broadcaster)
@@ -30,6 +31,10 @@ public function handle(EventBroadcaster $broadcaster)
3031
$broadcaster->withAnalytics(fn (Analytics $analytics) => $analytics->setClientId($this->clientId));
3132
}
3233

34+
if ($this->userId) {
35+
$broadcaster->withAnalytics(fn (Analytics $analytics) => $analytics->setUserId($this->userId));
36+
}
37+
3338
$broadcaster->handle($this->event);
3439
}
3540
}

src/Listeners/DispatchAnalyticsJob.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace ProtoneMedia\AnalyticsEventTracking\Listeners;
44

55
use Illuminate\Queue\InteractsWithQueue;
6-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
76
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepostory;
87
use ProtoneMedia\AnalyticsEventTracking\Jobs\SendEventToAnalytics;
98

@@ -21,7 +20,7 @@ public function __construct(ClientIdRepostory $clientIdRepository)
2120
/**
2221
* Gets the Client ID from the repository and dispatched the event
2322
*/
24-
public function handle(ShouldBroadcastToAnalytics $event): void
23+
public function handle($event): void
2524
{
2625
$job = new SendEventToAnalytics($event, $this->clientIdRepository->get());
2726

src/ServiceProvider.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
1010
use ProtoneMedia\AnalyticsEventTracking\Analytics\BroadcastEvent;
1111
use ProtoneMedia\AnalyticsEventTracking\Analytics\EventBroadcaster;
12-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
1312
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepostory;
1413
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdSession;
1514
use ProtoneMedia\AnalyticsEventTracking\Http\StoreClientIdInSession;

src/ShouldBroadcastToAnalytics.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?php
2+
3+
namespace ProtoneMedia\AnalyticsEventTracking;
4+
5+
interface ShouldBroadcastToAnalytics
6+
{
7+
}

tests/Fakes/BroadcastAs.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ProtoneMedia\AnalyticsEventTracking\Tests\Fakes;
44

5-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
5+
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
66
use TheIconic\Tracking\GoogleAnalytics\Analytics;
77

88
class BroadcastAs implements ShouldBroadcastToAnalytics

tests/Fakes/BroadcastMe.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ProtoneMedia\AnalyticsEventTracking\Tests\Fakes;
44

5-
use ProtoneMedia\AnalyticsEventTracking\Events\ShouldBroadcastToAnalytics;
5+
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
66

77
class BroadcastMe implements ShouldBroadcastToAnalytics
88
{

0 commit comments

Comments
 (0)