UNPKG

@zezosoft/zezo-ott-react-native-video-player

Version:

Production-ready React Native OTT video player library for Android & iOS. Features: playlists, seasons, auto-next playback, subtitles (SRT/VTT), custom theming, analytics tracking, fullscreen mode, gesture controls, ads player (pre-roll/mid-roll/post-roll

70 lines (69 loc) 1.72 kB
"use strict"; import { create } from 'zustand'; import { createJSONStorage, persist } from 'zustand/middleware'; import { MMKV } from 'react-native-mmkv'; export const adsStorage = new MMKV({ id: 'adsPlayerStorage', encryptionKey: 'adsPlayerKey' }); export const adsMmkvStorage = { setItem: (key, value) => adsStorage.set(key, value), getItem: key => adsStorage.getString(key) ?? null, removeItem: key => adsStorage.delete(key) }; const adsStoreDataDefaults = { currentAd: null, isAdPlaying: false, isAdPaused: false, isAdMuted: false, isAdBuffering: false, adCurrentTime: 0, adDuration: 0, pendingMidRollAds: [], showSkipButton: false, resumeTime: null }; export const useAdsPlayerStore = create()(persist(set => ({ ...adsStoreDataDefaults, setCurrentAd: currentAd => set({ currentAd }), setIsAdPlaying: isAdPlaying => set({ isAdPlaying }), setIsAdPaused: isAdPaused => set({ isAdPaused }), setIsAdMuted: isAdMuted => set({ isAdMuted }), setIsAdBuffering: isAdBuffering => set({ isAdBuffering }), setAdCurrentTime: adCurrentTime => set({ adCurrentTime }), setAdDuration: adDuration => set({ adDuration }), setShowSkipButton: showSkipButton => set({ showSkipButton }), setResumeTime: resumeTime => set({ resumeTime }), addPendingMidRollAd: ad => set(state => ({ pendingMidRollAds: [...state.pendingMidRollAds, ad] })), clearPendingMidRollAds: () => set({ pendingMidRollAds: [] }), resetAdsStore: () => { set(adsStoreDataDefaults); adsStorage.clearAll(); } }), { name: 'AdsPlayerStorage', storage: createJSONStorage(() => adsMmkvStorage) })); //# sourceMappingURL=adsPlayerStore.js.map