@adstage/web-sdk
Version:
AdStage Web SDK - Production-ready marketing platform SDK with React Provider support for seamless integration
48 lines (40 loc) • 1.33 kB
text/typescript
/**
* 단순한 VIEWABLE 이벤트 중복 방지 관리 클래스
* - 세션당 동일 광고 1회만 VIEWABLE 이벤트 허용
* - 메모리 기반 추적으로 단순화
*/
export class ViewableEventTracker {
private static viewableTracker = new Set<string>();
/**
* 중복 viewable 이벤트 여부 확인
*/
static isDuplicateViewable(adId: string, slotId: string, debug = false): boolean {
const key = `${adId}_${slotId}`;
// 이미 VIEWABLE 이벤트가 발생한 광고인지 확인
if (ViewableEventTracker.viewableTracker.has(key)) {
if (debug) {
console.log(`Duplicate viewable blocked for ad ${adId} in slot ${slotId}`);
}
return true;
}
// 새로운 VIEWABLE 이벤트 기록
ViewableEventTracker.viewableTracker.add(key);
if (debug) {
console.log(`✅ New viewable recorded for ad ${adId} in slot ${slotId}`);
}
return false;
}
/**
* 모든 추적 데이터 정리 (디버그용)
*/
static clear(): void {
ViewableEventTracker.viewableTracker.clear();
}
/**
* 특정 광고의 viewable 추적 초기화 (디버그용)
*/
static clearAdViewable(adId: string, slotId: string): void {
const key = `${adId}_${slotId}`;
ViewableEventTracker.viewableTracker.delete(key);
}
}