@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
304 lines (269 loc) • 8.4 kB
text/typescript
type ValueOf<T> = T[keyof T];
export const LEGACY_EVENTS = {
CHANNEL_ITEM_PLAY_WAS_TRIGGERED: "play",
HOME_SCREEN_VIEWED: "screen_view",
ITEM_NOT_AVAILABLE: "Item Not Available",
LAUNCH_APP: "launch_app",
PLAY_VOD_ITEM: "play",
PROGRAM_ITEM_PLAY_WAS_TRIGGERED: "play",
TAP_NAVBAR_ICON: "tap_menu",
TAP_SIDE_MENU: "tap_menu",
VOD_ITEM_PLAY_WAS_TRIGGERED: "play",
};
export const SCREEN_VIEW_EVENTS = {
SCREEN_VIEW: "screen_view",
TIME_ON_SCREEN: "time_on_screen",
};
export const TAPPING_EVENTS = {
TAP_CELL: "tap_cell",
TAP_MENU: "tap_menu",
TAP_NAVBAR_BACK_BUTTON: "tap_navbar_back_button",
};
export const SEARCH_EVENTS = {
SEARCH_EXECUTED: "search_executed",
SEARCH_CANCELED: "search_canceled",
};
export const SHARE_EVENTS = {
SHARE_INITIATED: "share_initiated",
SHARE_SUCCESS: "share_success",
};
export const ANALYTICS_CORE_EVENTS = {
...LEGACY_EVENTS,
...SCREEN_VIEW_EVENTS,
...TAPPING_EVENTS,
...SEARCH_EVENTS,
...SHARE_EVENTS,
};
export const WEBVIEW_EVENTS = {
WEBVIEW_SESSION_START: "web_view_session_started",
WEBVIEW_SESSION_CLOSED: "web_view_session_closed",
};
export const PURCHASE_EVENTS = {
PURCHASE_TRIGGERED: "purchase_triggered",
PURCHASE_SUCCESS: "purchase_success",
PURCHASE_CANCELED: "purchase_canceled",
PURCHASE_FAILED: "purchase_failed",
};
export const APPLICATION_EVENTS = {
APPLICATION_VERSION: "application_version",
APPLICATION_NAME: "application_name",
};
/**
* These are the general parameters that are sent with every analytics event as per the doc below
* https://docs.google.com/spreadsheets/d/1E3uY1ImV3vPOiZTaGH8YYD3TJkk9VuFycY7rxxGvoLA/edit#gid=1382761869&range=A2
* Android SDK implementation
* https://github.com/applicaster/applicaster-android-sdk/blob/dev/src/main/java/com/applicaster/analytics/Utility.kt
*/
export const GENERAL_PARAMETERS = {
BUILD_NUMBER_KEY: "build_number",
BUNDLE_ID_KEY: "bundle_id",
QUICKBRICK_VERSION_KEY: "quickbrick_version",
LAYOUT_ID_KEY: "layout_id",
SDK_VERSION_KEY: "sdk_version",
UUID_KEY: "uuid",
VERSION_KEY: "version",
ZAPP_PLATFORM: "zapp_platform",
} as const;
export type GenralEventKeys = ValueOf<typeof GENERAL_PARAMETERS>;
export type GeneralParameters = {
[K in GenralEventKeys]: string;
} & { build_number: number };
export const ANALYTICS_ENTRY_EVENTS = {
ITEM_TYPE: "item_type",
ITEM_TITLE: "item_name",
ITEM_ID: "item_id",
ITEM_INDEX: "item_number",
ITEM_TIME_PLAYED: "item_total_time_played",
ITEM_PLAY_COMPLETED: "completed",
ITEM_CUSTOM_PROPERTY: "custom_property",
};
export const ANALYTICS_COMPONENT_EVENTS = {
COMPONENT_ID: "component_id",
COMPONENT_TYPE: "component_type",
CELL_STYLE: "cell_style",
HEADER_TITLE: "header_name",
COMPONENT_SOURCE: "component_source",
};
// ---------------- EVENTS ---------------------
export const AD_EVENT = {
ad_break_start: "player_ad_break_start",
ad_break_completed: "player_ad_break_complete",
ad_start: "player_ad_start",
ad_skip: "player_ad_skip",
ad_complete: "player_ad_complete",
ad_error: "player_ad_error",
ad_request: "player_ad_request",
ad_clicked: "player_ad_clicked",
ad_tapped: "player_ad_tapped",
} as const;
export const GENERAL_EVENT = {
player_presented: "player_presented",
player_closed: "player_closed",
session_end: "player_session_end",
session_start: "player_session_start",
} as const;
export const DOWNLOADS_EVENTS = {
download_start: "download_started",
download_success: "download_succeeded",
download_error: "download_error",
download_delete: "download_deleted",
};
export const PLAYBACK_EVENT = {
play: "player_play",
pause: "player_pause",
complete: "player_complete",
error: "player_error",
buffer_start: "player_buffer_start",
buffer_complete: "player_buffer_complete",
seek_start: "player_seek_start",
seek_complete: "player_seek_complete",
stop: "player_stop",
next: "player_next",
previous: "player_previous",
load_video: "player_loaded_video",
} as const;
export const MISC_EVENT = {
onPlayerCanPlay: "onPlayerCanPlay",
onPlayerCanPlayThrough: "onPlayerCanPlayThrough",
onPlayerDestroy: "onPlayerDestroy",
onPlayerDurationChange: "onPlayerDurationChange",
onPlayerEnded: "onPlayerEnded",
onPlayerError: "onPlayerError",
onPlayerLoadedData: "onPlayerLoadedData",
onPlayerLoadedMetaData: "onPlayerLoadedMetaData",
onPlayerLoadStart: "onPlayerLoadStart",
onPlayerPause: "onPlayerPause",
onPlayerPlay: "onPlayerPlay",
onPlayerPlaying: "onPlayerPlaying",
onPlayerPresentationModeChange: "onPlayerPresentationModeChange",
onPlayerProgress: "onPlayerProgress",
onPlayerRateChange: "onPlayerRateChange",
onPlayerReadyStateChange: "onPlayerReadyStateChange",
onPlayerResize: "onPlayerResize",
onPlayerSeeked: "onPlayerSeeked",
onPlayerSeeking: "onPlayerSeeking",
onPlayerSourceChange: "onPlayerSourceChange",
onPlayerTimeUpdate: "onPlayerTimeUpdate",
onPlayerVolumeChange: "onPlayerVolumeChange",
onPlayerWaiting: "onPlayerWaiting",
} as const;
export const QOS_EVENT = {
bitrate_changed: "Player: Bitrate Changed",
} as const;
export const CHROMECAST_EVENTS = {
cast_started: "cast_stream_started",
cast_ended: "cast_stream_ended",
} as const;
// ---------------- EVENT MAPS ---------------------
export const EVENT_TYPES = {
ad: AD_EVENT,
general: GENERAL_EVENT,
misc: MISC_EVENT,
playback: PLAYBACK_EVENT,
qos: QOS_EVENT,
chromecast: CHROMECAST_EVENTS,
};
// ---------------- EVENT PAYLOADS ---------------------
export const AD_PAYLOAD = {
ad_duration: "Ad Duration",
ad_id: "Ad Id",
ad_type: "Ad Type",
advertiser: "Ad Advertiser",
campaign: "Ad Campaign",
creative_url: "Ad Creative Url",
creative: "Ad Creative Id",
name: "Ad Name",
placement: "Ad Placement",
site: "Ad Site",
system: "Ad System",
} as const;
export const AD_BREAK_PAYLOAD = {
max_duration: "Ad Break Max Duration",
position: "Ad Position",
start_time: "Ad Break Start Time",
total_ads: "Ad Break Total Ads",
} as const;
export const AUDIO_PAYLOAD = {
album: "Audio Album",
artist: "Audio Artist",
author: "Audio Author",
label: "Audio Label",
publisher: "Audio Publisher",
station: "Audio Station",
} as const;
export const GENERAL_PAYLOAD = {
build_number: "App Build Number",
bundle_id: "App Bundle Id",
layout_id: "App Layout Id",
quickbrick_version: "App Quick Brick Versioin",
sdk_version: "App SDK Version",
uuid: "App UUID",
version: "App Version",
} as const;
export const MEDIA_PAYLOAD = {
duration: "Media Duration",
media_id: "Media Id",
media_type: "Media Type",
name: "Media Name",
player_type: "Media Player Type",
stream_type: "Media Stream Type",
} as const;
export const VIDEO_PAYLOAD = {
genre: "Video Genre",
network: "Video Network",
rating: "Video Rating",
season_name: "Video Season",
show_name: "Video Name",
show_type: "Video Type",
stream_format: "Video Stream Format",
} as const;
export const QOS_PAYLOAD = {
bitrate: "Media Bitrate",
dropped_frames: "Media Dropped Frames",
fps: "Media Frames Per Second",
startup_time: "Media Startup Time",
} as const;
export const PLAYBACK_PAYLOAD = {
current_position: "Current Position",
} as const;
export const ADD_PAYLOAD = {
ad_break_dropped: "Ad Break Dropped",
ad_num: "Ad number",
error: "Error Description",
player_state: "Player State",
position: "Position",
resumed: "Resumed Playback",
start_time: "Start Time",
timestamp: "Timestamp",
};
export const MISC_PAYLOAD = {
event_name: "Event Name",
event_type: "Event Type",
};
// ---------------- EVENT PAYLOAD MAPS ---------------------
// TODO: Do all events have GENERAL_PAYLOAD data? This data is coming from native
export const PAYLOAD_TYPES = {
ad: [
GENERAL_PAYLOAD,
AD_PAYLOAD,
MEDIA_PAYLOAD,
VIDEO_PAYLOAD,
AUDIO_PAYLOAD,
],
general: [GENERAL_PAYLOAD, MEDIA_PAYLOAD, VIDEO_PAYLOAD, AUDIO_PAYLOAD],
misc: [MISC_PAYLOAD],
playback: [GENERAL_PAYLOAD, MEDIA_PAYLOAD, VIDEO_PAYLOAD, AUDIO_PAYLOAD],
qos: [
GENERAL_PAYLOAD,
MEDIA_PAYLOAD,
VIDEO_PAYLOAD,
AUDIO_PAYLOAD,
QOS_PAYLOAD,
],
};
export const PLAYER_DISPLAY_STATES = {
docked: "partial", // TODO: is docked partial?
fullScreen: "full_screen",
inline: "partial", // TODO: is inline partial?
isModal: "pip", // TODO: is modal pip?
} as const;