Compare commits
2 Commits
1bb202ffa5
...
3561012fb9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3561012fb9 | ||
|
|
b26f6160f8 |
@@ -13,4 +13,6 @@ export * from './conversion/index.ts';
|
|||||||
// set log level to debug if we're in dev mode
|
// set log level to debug if we're in dev mode
|
||||||
if (dev) {
|
if (dev) {
|
||||||
log.setLevel('debug');
|
log.setLevel('debug');
|
||||||
|
} else {
|
||||||
|
log.setLevel('warn');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ PixelControl interface.
|
|||||||
|
|
||||||
import type { TrackingManager } from '../tracking.svelte.ts';
|
import type { TrackingManager } from '../tracking.svelte.ts';
|
||||||
import { onNavigate } from '$app/navigation';
|
import { onNavigate } from '$app/navigation';
|
||||||
import { PixelControl, type PixelControlOptions } from './pixel-control.svelte.ts';
|
import { PixelControl, type PixelControlOptions } from './pixel-control.ts';
|
||||||
import { ensureFbc, type EnsureFbcOptions } from './fbc.ts';
|
import { ensureFbc, type EnsureFbcOptions } from './fbc.ts';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@@ -38,22 +38,20 @@ PixelControl interface.
|
|||||||
|
|
||||||
let pixel = $state<PixelControl | null>(null);
|
let pixel = $state<PixelControl | null>(null);
|
||||||
|
|
||||||
const ensureFbcOptions: EnsureFbcOptions = $derived({
|
const fbcOptions: EnsureFbcOptions = {
|
||||||
sameSite: 'Lax',
|
sameSite: 'Lax'
|
||||||
pixelLoaded: PixelControl.baseLoaded && !PixelControl.baseFailed
|
};
|
||||||
});
|
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
if (!trackingManager) {
|
if (!trackingManager) {
|
||||||
throw new Error('MetaPixel component requires a TrackingManager to manage consent.');
|
throw new Error('MetaPixel component requires a TrackingManager to manage consent.');
|
||||||
}
|
}
|
||||||
PixelControl.load();
|
|
||||||
pixel = PixelControl.initialize(trackingManager, pixelID, pixelOptions);
|
pixel = PixelControl.initialize(trackingManager, pixelID, pixelOptions);
|
||||||
|
|
||||||
trackingManager.runWithConsent(() => {
|
trackingManager.runWithConsent(() => {
|
||||||
if (autoPageView && pixel) {
|
if (autoPageView && pixel) {
|
||||||
pixel.pageView();
|
pixel.pageView();
|
||||||
ensureFbc(ensureFbcOptions);
|
ensureFbc(fbcOptions);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@@ -62,7 +60,7 @@ PixelControl interface.
|
|||||||
trackingManager?.runWithConsent(() => {
|
trackingManager?.runWithConsent(() => {
|
||||||
if (autoPageView && pixel) {
|
if (autoPageView && pixel) {
|
||||||
pixel.pageView();
|
pixel.pageView();
|
||||||
ensureFbc(ensureFbcOptions);
|
ensureFbc(fbcOptions);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -68,8 +68,7 @@ export class PixelControl {
|
|||||||
private _trackingManager: MaybeGetter<TrackingManager | undefined>;
|
private _trackingManager: MaybeGetter<TrackingManager | undefined>;
|
||||||
private _conversionClient?: ConversionClient = undefined;
|
private _conversionClient?: ConversionClient = undefined;
|
||||||
|
|
||||||
private static _baseLoaded: boolean = $state(false);
|
private static _baseLoaded: boolean = false;
|
||||||
private static _baseFailed: boolean = $state(false);
|
|
||||||
private static _registeredPixels: Record<string, PixelControl> = {};
|
private static _registeredPixels: Record<string, PixelControl> = {};
|
||||||
|
|
||||||
/** Indicates whether the Meta Pixel base script has been loaded. */
|
/** Indicates whether the Meta Pixel base script has been loaded. */
|
||||||
@@ -77,11 +76,6 @@ export class PixelControl {
|
|||||||
return this._baseLoaded;
|
return this._baseLoaded;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Indicates whether the Meta Pixel base script has failed to load. */
|
|
||||||
static get baseFailed(): boolean {
|
|
||||||
return this._baseFailed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensures that the Meta Pixel base has been loaded before
|
* Ensures that the Meta Pixel base has been loaded before
|
||||||
* allowing further operations.
|
* allowing further operations.
|
||||||
@@ -116,20 +110,11 @@ export class PixelControl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Loads the Meta Pixel base script. */
|
/** Loads the Meta Pixel base script. */
|
||||||
static async load() {
|
static load() {
|
||||||
if (this._baseLoaded && !this.baseFailed && !!window.fbq) return;
|
if (this._baseLoaded && !!window.fbq) return;
|
||||||
if (!window.fbq) {
|
loadMetaPixel(); // Load the Meta Pixel script
|
||||||
try {
|
|
||||||
await loadMetaPixel(); // Load the Meta Pixel script
|
|
||||||
} catch (e) {
|
|
||||||
log.warn('[PixelControl] Failed to load Meta Pixel script, all events will be queued.', e);
|
|
||||||
this._baseFailed = true;
|
|
||||||
return;
|
|
||||||
} finally {
|
|
||||||
this._baseLoaded = true;
|
this._baseLoaded = true;
|
||||||
}
|
log.debug('[PixelControl] Meta Pixel base script loaded.', this._baseLoaded);
|
||||||
}
|
|
||||||
log.debug('[PixelControl] Meta Pixel base script loaded.');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Tells the Meta pixel that the user has given consent for tracking. */
|
/** Tells the Meta pixel that the user has given consent for tracking. */
|
||||||
Reference in New Issue
Block a user