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

Commit 9587f7b

Browse files
committed
Typo + README
1 parent b0a9846 commit 9587f7b

File tree

5 files changed

+66
-9
lines changed

5 files changed

+66
-9
lines changed

README.md

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ use Illuminate\Foundation\Events\Dispatchable;
7777
use Illuminate\Queue\SerializesModels;
7878
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
7979

80-
class OrderWasPaid implements ShouldBroadcastToAnalytics
80+
class OrderWasCreated implements ShouldBroadcastToAnalytics
8181
{
8282
use Dispatchable, SerializesModels;
8383

@@ -139,7 +139,7 @@ use Illuminate\Foundation\Events\Dispatchable;
139139
use Illuminate\Queue\SerializesModels;
140140
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
141141

142-
class OrderWasPaid implements ShouldBroadcastToAnalytics
142+
class OrderWasCreated implements ShouldBroadcastToAnalytics
143143
{
144144
use Dispatchable, SerializesModels;
145145

@@ -162,6 +162,63 @@ class OrderWasPaid implements ShouldBroadcastToAnalytics
162162
}
163163
```
164164

165+
## Handling the Client ID outside a HTTP Request
166+
167+
You might want to track an event that occurs outside of a HTTP Request, for example in a queued job or while handling a 3rd-party callback/webhook. Let's continue with the `Order` example. When the `Order` is created, you could save the `Client ID` in the database.
168+
169+
```php
170+
<?php
171+
172+
namespace App\Http\Controllers;
173+
174+
use App\Order;
175+
use App\Http\Requests\CreateOrderRequest;
176+
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepository;
177+
178+
class CreateOrderController
179+
{
180+
public function __invoke(CreateOrderRequest $request, ClientIdRepository $clientId)
181+
{
182+
$attributes = $request->validated();
183+
184+
$attributes['google_analytics_client_id'] = $clientId->get();
185+
186+
return Order::create($attributes);
187+
}
188+
}
189+
```
190+
191+
When you receive a webhook from your payment provider and you dispatch an `OrderWasPaid` event, you can use the `withAnalytics` method in your event to reuse the `google_analytics_client_id`:
192+
193+
``` php
194+
<?php
195+
196+
namespace App\Events;
197+
198+
use App\Order;
199+
use TheIconic\Tracking\GoogleAnalytics\Analytics;
200+
use Illuminate\Foundation\Events\Dispatchable;
201+
use Illuminate\Queue\SerializesModels;
202+
use ProtoneMedia\AnalyticsEventTracking\ShouldBroadcastToAnalytics;
203+
204+
class OrderWasPaid implements ShouldBroadcastToAnalytics
205+
{
206+
use Dispatchable, SerializesModels;
207+
208+
public $order;
209+
210+
public function __construct(Order $order)
211+
{
212+
$this->order = $order;
213+
}
214+
215+
public function withAnalytics(Analytics $analytics)
216+
{
217+
$analytics->setClientId($this->order->google_analytics_client_id);
218+
}
219+
}
220+
```
221+
165222
## Additional configuration
166223

167224
You can configure some additional settings in the `config/analytics-event-tracking.php` file:

src/Http/ClientIdRepostory.php renamed to src/Http/ClientIdRepository.php

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

33
namespace ProtoneMedia\AnalyticsEventTracking\Http;
44

5-
interface ClientIdRepostory
5+
interface ClientIdRepository
66
{
77
public function update(string $clientId): void;
88

src/Http/ClientIdSession.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Illuminate\Session\Store;
66
use Illuminate\Support\Str;
77

8-
class ClientIdSession implements ClientIdRepostory
8+
class ClientIdSession implements ClientIdRepository
99
{
1010
private Store $session;
1111
private string $key;

src/Listeners/DispatchAnalyticsJob.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44

55
use Illuminate\Queue\InteractsWithQueue;
66
use Illuminate\Support\Facades\Auth;
7-
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepostory;
7+
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepository;
88
use ProtoneMedia\AnalyticsEventTracking\Jobs\SendEventToAnalytics;
99

1010
class DispatchAnalyticsJob
1111
{
1212
use InteractsWithQueue;
1313

14-
public ClientIdRepostory $clientIdRepository;
14+
public ClientIdRepository $clientIdRepository;
1515

16-
public function __construct(ClientIdRepostory $clientIdRepository)
16+
public function __construct(ClientIdRepository $clientIdRepository)
1717
{
1818
$this->clientIdRepository = $clientIdRepository;
1919
}

src/ServiceProvider.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Illuminate\Support\ServiceProvider as BaseServiceProvider;
99
use ProtoneMedia\AnalyticsEventTracking\Analytics\BroadcastEvent;
1010
use ProtoneMedia\AnalyticsEventTracking\Analytics\EventBroadcaster;
11-
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepostory;
11+
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdRepository;
1212
use ProtoneMedia\AnalyticsEventTracking\Http\ClientIdSession;
1313
use ProtoneMedia\AnalyticsEventTracking\Http\StoreClientIdInSession;
1414
use ProtoneMedia\AnalyticsEventTracking\Listeners\DispatchAnalyticsJob;
@@ -59,7 +59,7 @@ public function register()
5959

6060
private function registerClientId()
6161
{
62-
$this->app->singleton(ClientIdRepostory::class, ClientIdSession::class);
62+
$this->app->singleton(ClientIdRepository::class, ClientIdSession::class);
6363

6464
$this->app->bind('analytics-event-tracking.client-id', function () {
6565
return $this->app->make(ClientIdSession::class)->get();

0 commit comments

Comments
 (0)