@quicktvui/tv-ad-unlock 1.1.3 → 1.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -5
- package/dist/index.cjs.js +6 -6
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +6 -6
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -101,11 +101,11 @@ export default defineComponent({
|
|
|
101
101
|
|
|
102
102
|
| 字段 | 默认值 | 说明 |
|
|
103
103
|
|------|--------|------|
|
|
104
|
-
| `title` | `'观看30秒广告 当日解锁'` |
|
|
105
|
-
| `subTitle` | `'手机打开【微信】扫码'` |
|
|
106
|
-
| `scanTitle` | `'观看奖励'` |
|
|
107
|
-
| `scanContent` | `'观看广告后可获得奖励'` |
|
|
108
|
-
| `scanToast` | `'奖励已获得,请前往电视端观看'` |
|
|
104
|
+
| `title` | `'观看30秒广告 当日解锁'` | TV 弹窗标题(页面展示) |
|
|
105
|
+
| `subTitle` | `'手机打开【微信】扫码'` | TV 弹窗副标题(页面展示) |
|
|
106
|
+
| `scanTitle` | `'观看奖励'` | 手机端扫码页标题(API 参数) |
|
|
107
|
+
| `scanContent` | `'观看广告后可获得奖励'` | 手机端扫码页内容(API 参数) |
|
|
108
|
+
| `scanToast` | `'奖励已获得,请前往电视端观看'` | 手机端观看后提示(API 参数) |
|
|
109
109
|
| `invalidCodeImage` | 内置图片 | 二维码失效时展示的图片 URL |
|
|
110
110
|
| `scannedCodeImage` | 内置图片 | 已扫码状态展示的图片 URL |
|
|
111
111
|
|
package/dist/index.cjs.js
CHANGED
|
@@ -257,7 +257,7 @@ const DEFAULT_RULES = {
|
|
|
257
257
|
initialCredits: 5,
|
|
258
258
|
creditsPerAd: 5,
|
|
259
259
|
dailyUnlockEnabled: true,
|
|
260
|
-
permanentUnlockAfterTotalAds:
|
|
260
|
+
permanentUnlockAfterTotalAds: 0
|
|
261
261
|
};
|
|
262
262
|
function useTVAdNavigator(config) {
|
|
263
263
|
const router = es3Router.useESRouter();
|
|
@@ -336,13 +336,13 @@ var script = /* @__PURE__ */ vue.defineComponent({
|
|
|
336
336
|
const storage = es3Core.useESLocalStorage();
|
|
337
337
|
const router = es3Router.useESRouter();
|
|
338
338
|
const runtime = es3Core.useESRuntime();
|
|
339
|
-
const dnum = runtime.getRuntimeDeviceId();
|
|
339
|
+
const dnum = runtime.getRuntimeDeviceId() ?? "";
|
|
340
340
|
const keys = createStorageKeys(packageName);
|
|
341
341
|
const adStorage = useTVAdUnlockStorage(storage, keys);
|
|
342
342
|
const routeOverrides = vue.ref({});
|
|
343
343
|
const routeRuleParams = vue.ref({
|
|
344
344
|
creditsPerAd: 5,
|
|
345
|
-
permanentUnlockAfterTotalAds:
|
|
345
|
+
permanentUnlockAfterTotalAds: 0
|
|
346
346
|
});
|
|
347
347
|
const pageConfig = vue.computed(() => ({
|
|
348
348
|
...rawPageConfig,
|
|
@@ -359,7 +359,7 @@ var script = /* @__PURE__ */ vue.defineComponent({
|
|
|
359
359
|
await adStorage.addCredits(routeRuleParams.value.creditsPerAd);
|
|
360
360
|
const totalAds = await adStorage.incrementTotalAdsWatched();
|
|
361
361
|
await adStorage.incrementTodayAdCount();
|
|
362
|
-
if (totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {
|
|
362
|
+
if (routeRuleParams.value.permanentUnlockAfterTotalAds > 0 && totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {
|
|
363
363
|
await adStorage.setPermanentUnlocked();
|
|
364
364
|
}
|
|
365
365
|
trackEvent?.({ type: "page", name: "unlock_success" });
|
|
@@ -418,8 +418,8 @@ var script = /* @__PURE__ */ vue.defineComponent({
|
|
|
418
418
|
if (params.creditsPerAd) {
|
|
419
419
|
routeRuleParams.value.creditsPerAd = parseInt(params.creditsPerAd) || 5;
|
|
420
420
|
}
|
|
421
|
-
if (params.permanentUnlockAfterTotalAds) {
|
|
422
|
-
routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) ||
|
|
421
|
+
if (params.permanentUnlockAfterTotalAds !== void 0) {
|
|
422
|
+
routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) || 0;
|
|
423
423
|
}
|
|
424
424
|
const extra = {};
|
|
425
425
|
if (params.title) extra.title = params.title;
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/useTVAdUnlock.ts","../src/useTVAdNavigator.ts","../src/constants.ts","../src/TVAdUnlockView.vue","../src/assets/invalid-code.webp","../src/assets/scanned-code.webp","../src/plugin.ts"],"sourcesContent":["import { ref, watch, onUnmounted } from 'vue'\nimport type { ESLocalStorage } from '@extscreen/es3-core'\nimport type {\n TVAdUnlockConfig,\n TVAdUnlockParams,\n TVAdUnlockCallbacks,\n TVAdUnlockStorageKeys,\n RequestManager\n} from './types'\n\nconst DEFAULT_INVALID_TIMEOUT = 300000\nconst DEFAULT_POLL_INTERVAL = 1000\n\nexport function createStorageKeys(packageName: string): TVAdUnlockStorageKeys {\n return {\n credits: `${packageName}_ad_credits`,\n totalAdsWatched: `${packageName}_ad_total_ads`,\n permanentUnlocked: `${packageName}_ad_permanent`,\n todayUnlocked: `${packageName}_ad_today_unlocked`,\n todayPlayCount: `${packageName}_ad_today_plays`,\n todayAdCount: `${packageName}_ad_today_ad_count`,\n todayDate: `${packageName}_ad_today_date`\n }\n}\n\nexport function useTVAdUnlockStorage(\n storage: ESLocalStorage,\n keys: TVAdUnlockStorageKeys,\n initialCredits: number = 5\n) {\n function getTodayString(): string {\n const today = new Date()\n return `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()}`\n }\n\n async function checkDailyReset(): Promise<void> {\n const today = getTodayString()\n const savedDate = await storage.getString(keys.todayDate, '')\n if (savedDate !== today) {\n await storage.putString(keys.todayDate, today)\n await storage.putInt(keys.todayPlayCount, 0)\n await storage.putBoolean(keys.todayUnlocked, false)\n await storage.putInt(keys.todayAdCount, 0)\n }\n }\n\n async function getCredits(): Promise<number> {\n return storage.getInt(keys.credits, initialCredits)\n }\n\n async function setCredits(value: number): Promise<void> {\n await storage.putInt(keys.credits, value)\n }\n\n async function addCredits(amount: number): Promise<void> {\n const current = await getCredits()\n await storage.putInt(keys.credits, current + amount)\n }\n\n async function consumeCredits(amount: number): Promise<number> {\n const current = await getCredits()\n if (current <= 0) return 0\n const consumed = Math.min(current, amount)\n await storage.putInt(keys.credits, current - consumed)\n return consumed\n }\n\n async function consumeAllCredits(): Promise<number> {\n const current = await getCredits()\n if (current > 0) {\n await storage.putInt(keys.credits, 0)\n }\n return current\n }\n\n async function isTodayUnlocked(): Promise<boolean> {\n await checkDailyReset()\n return storage.getBoolean(keys.todayUnlocked, false)\n }\n\n async function setTodayUnlocked(): Promise<void> {\n const today = getTodayString()\n await storage.putString(keys.todayDate, today)\n await storage.putBoolean(keys.todayUnlocked, true)\n }\n\n async function getTodayPlayCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayPlayCount, 0)\n }\n\n async function incrementPlayCount(): Promise<number> {\n const count = await getTodayPlayCount()\n const newCount = count + 1\n await storage.putInt(keys.todayPlayCount, newCount)\n return newCount\n }\n\n async function getTotalAdsWatched(): Promise<number> {\n return storage.getInt(keys.totalAdsWatched, 0)\n }\n\n async function incrementTotalAdsWatched(): Promise<number> {\n const count = await getTotalAdsWatched()\n const newCount = count + 1\n await storage.putInt(keys.totalAdsWatched, newCount)\n return newCount\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n return storage.getBoolean(keys.permanentUnlocked, false)\n }\n\n async function setPermanentUnlocked(): Promise<void> {\n await storage.putBoolean(keys.permanentUnlocked, true)\n }\n\n async function getTodayAdCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayAdCount, 0)\n }\n\n async function incrementTodayAdCount(): Promise<number> {\n const count = await getTodayAdCount()\n const newCount = count + 1\n await storage.putInt(keys.todayAdCount, newCount)\n return newCount\n }\n\n return {\n checkDailyReset,\n getCredits,\n setCredits,\n addCredits,\n consumeCredits,\n consumeAllCredits,\n isTodayUnlocked,\n setTodayUnlocked,\n getTodayPlayCount,\n incrementPlayCount,\n getTotalAdsWatched,\n incrementTotalAdsWatched,\n isPermanentlyUnlocked,\n setPermanentUnlocked,\n getTodayAdCount,\n incrementTodayAdCount\n }\n}\n\nexport function useTVAdUnlock(\n config: TVAdUnlockConfig,\n storageKeys: TVAdUnlockStorageKeys,\n requestManager: RequestManager,\n callbacks?: TVAdUnlockCallbacks\n) {\n const adQrCode = ref('')\n const isInvalid = ref(false)\n const qrCodeState = ref(0)\n const isLoading = ref(false)\n const isStopPoll = ref(false)\n const isShowConfirmToast = ref(false)\n\n let invalidTimer: ReturnType<typeof setTimeout> | null = null\n let pollTimer: ReturnType<typeof setTimeout> | null = null\n\n const invalidTimeout = config.invalidTimeout ?? DEFAULT_INVALID_TIMEOUT\n const pollInterval = config.pollInterval ?? DEFAULT_POLL_INTERVAL\n\n const urlGetDeviceCode = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/getAdUrl'\n const urlPollTVADStatus = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/pollTVADStatus'\n\n watch(() => qrCodeState.value, (newVal: number, oldVal: number) => {\n if (newVal === 1 && oldVal === 0) {\n startInvalidTimer()\n callbacks?.onQrCodeScanned?.()\n }\n })\n\n async function pollTVADStatus(deviceId: string): Promise<void> {\n try {\n const res = await requestManager.post(urlPollTVADStatus, {\n data: { deviceId }\n })\n\n if (isStopPoll.value) {\n return\n }\n\n qrCodeState.value = parseInt(`${res}`)\n\n if (qrCodeState.value === 2) {\n callbacks?.onUnlockSuccess?.()\n } else {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n } catch {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n }\n\n async function getAdQrCode(deviceId: string, scanTitle: string = '观看奖励', scanContent: string = '观看广告后可获得奖励', scanToast: string = '奖励已获得,请前往电视端观看'): Promise<string> {\n isLoading.value = true\n isInvalid.value = false\n qrCodeState.value = 0\n\n try {\n const res = await requestManager.post(urlGetDeviceCode, {\n data: {\n deviceId,\n scanTitle,\n scanContent,\n scanToast\n }\n })\n\n if (res) {\n adQrCode.value = res\n isInvalid.value = false\n startPollTvADStatusTimer(deviceId)\n startInvalidTimer()\n isLoading.value = false\n return res\n } else {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(new Error('获取二维码失败'))\n return ''\n }\n } catch (e) {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(e as Error)\n return ''\n }\n }\n\n function startPollTvADStatusTimer(deviceId: string): void {\n stopPollTvADStatusTimer()\n isStopPoll.value = false\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n\n function stopPollTvADStatusTimer(): void {\n if (pollTimer) {\n clearTimeout(pollTimer)\n pollTimer = null\n isStopPoll.value = true\n }\n }\n\n function stopInvalidTimer(): void {\n if (invalidTimer) {\n clearTimeout(invalidTimer)\n invalidTimer = null\n }\n }\n\n function startInvalidTimer(): void {\n stopInvalidTimer()\n invalidTimer = setTimeout(() => {\n invalidQrCode()\n invalidTimer = null\n }, invalidTimeout)\n }\n\n function invalidQrCode(): void {\n isInvalid.value = true\n stopPollTvADStatusTimer()\n callbacks?.onQrCodeInvalid?.()\n }\n\n function reset(): void {\n adQrCode.value = ''\n isInvalid.value = false\n qrCodeState.value = 0\n isLoading.value = false\n isStopPoll.value = false\n isShowConfirmToast.value = false\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n }\n\n onUnmounted(() => {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n })\n\n return {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n startPollTvADStatusTimer,\n stopPollTvADStatusTimer,\n startInvalidTimer,\n stopInvalidTimer,\n invalidQrCode,\n reset\n }\n}","import { useESRouter } from '@extscreen/es3-router'\nimport { useESLocalStorage } from '@extscreen/es3-core'\nimport { createStorageKeys, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockNavigatorConfig, TVAdUnlockRuleConfig } from './types'\n\nconst DEFAULT_RULES: Required<TVAdUnlockRuleConfig> = {\n initialCredits: 5,\n creditsPerAd: 5,\n dailyUnlockEnabled: true,\n permanentUnlockAfterTotalAds: 10\n}\n\nexport function useTVAdNavigator(config: TVAdUnlockNavigatorConfig) {\n const router = useESRouter()\n const storage = useESLocalStorage()\n const keys = createStorageKeys(config.packageName)\n const adStorage = useTVAdUnlockStorage(storage, keys, config.initialCredits ?? DEFAULT_RULES.initialCredits)\n\n const rules: Required<TVAdUnlockRuleConfig> = {\n initialCredits: config.initialCredits ?? DEFAULT_RULES.initialCredits,\n creditsPerAd: config.creditsPerAd ?? DEFAULT_RULES.creditsPerAd,\n dailyUnlockEnabled: config.dailyUnlockEnabled ?? DEFAULT_RULES.dailyUnlockEnabled,\n permanentUnlockAfterTotalAds: config.permanentUnlockAfterTotalAds ?? DEFAULT_RULES.permanentUnlockAfterTotalAds\n }\n\n async function consume(amount: number): Promise<{ success: boolean; consumed: number }> {\n const consumed = await adStorage.consumeCredits(amount)\n return { success: consumed > 0, consumed }\n }\n\n async function consumeAll(): Promise<number> {\n return adStorage.consumeAllCredits()\n }\n\n async function consumeAndNavigate(params?: {\n onUnlockSuccess?: () => void\n }): Promise<boolean> {\n await adStorage.checkDailyReset()\n\n // 规则①:永久解锁 → 放行\n if (rules.permanentUnlockAfterTotalAds > 0) {\n const permanent = await adStorage.isPermanentlyUnlocked()\n if (permanent) return false\n }\n\n // 规则②:今日已解锁 → 放行\n if (rules.dailyUnlockEnabled) {\n const today = await adStorage.isTodayUnlocked()\n if (today) return false\n }\n\n // 规则③:信用点 > 0 → 扣 1 分,放行\n const credits = await adStorage.getCredits()\n if (credits > 0) {\n await adStorage.consumeCredits(1)\n return false\n }\n\n // 规则④:兜底 → 弹广告\n router.push({\n name: 'ad',\n params: {\n creditsPerAd: String(rules.creditsPerAd),\n permanentUnlockAfterTotalAds: String(rules.permanentUnlockAfterTotalAds)\n }\n })\n return true\n }\n\n async function getCredits(): Promise<number> {\n return adStorage.getCredits()\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n if (rules.permanentUnlockAfterTotalAds <= 0) return false\n return adStorage.isPermanentlyUnlocked()\n }\n\n async function getTodayAdCount(): Promise<number> {\n return adStorage.getTodayAdCount()\n }\n\n async function addCredits(amount: number): Promise<void> {\n return adStorage.addCredits(amount)\n }\n\n return {\n consume,\n consumeAll,\n consumeAndNavigate,\n getCredits,\n isPermanentlyUnlocked,\n getTodayAdCount,\n addCredits\n }\n}","import type { InjectionKey } from 'vue'\nimport type { TVAdUnlockPluginProvided } from './types'\n\nexport const TV_AD_UNLOCK_KEY: InjectionKey<TVAdUnlockPluginProvided> = Symbol('tvAdUnlock')\n","<template>\n <div :style=\"sContainer\">\n <div :style=\"sContent\">\n <div :style=\"sContentBg\" />\n <span :style=\"sTitle\">{{ pageConfig.title }}</span>\n <span :style=\"sSubTitle\">{{ pageConfig.subTitle }}</span>\n <div :style=\"sQrContainer\">\n <qt-qr-code\n v-if=\"adQrCode && !isInvalid && qrCodeState !== 1\"\n :style=\"sQrcode\"\n :content=\"adQrCode\"\n />\n <qt-image\n v-if=\"isInvalid\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.invalidCodeImage\"\n />\n <qt-image\n v-if=\"qrCodeState === 1\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.scannedCodeImage\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, inject, computed } from 'vue'\nimport { ESKeyCode, useESRuntime, useESToast, useESLocalStorage } from '@extscreen/es3-core'\nimport { useESRouter } from '@extscreen/es3-router'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport { createStorageKeys, useTVAdUnlock, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockPluginProvided, TVAdUnlockParams } from './types'\n\nconst pluginContext = inject(TV_AD_UNLOCK_KEY) as TVAdUnlockPluginProvided\nconst { packageName, requestManager, pageConfig: rawPageConfig, trackEvent, superRequestBaseUrl } = pluginContext\n\nconst toast = useESToast()\nconst storage = useESLocalStorage()\nconst router = useESRouter()\nconst runtime = useESRuntime()\nconst dnum = runtime.getRuntimeDeviceId()\n\nconst keys = createStorageKeys(packageName)\nconst adStorage = useTVAdUnlockStorage(storage, keys)\n\nconst routeOverrides = ref<Partial<typeof rawPageConfig>>({})\n\nconst routeRuleParams = ref({\n creditsPerAd: 5,\n permanentUnlockAfterTotalAds: 10\n})\n\nconst pageConfig = computed(() => ({\n ...rawPageConfig,\n ...routeOverrides.value\n}))\n\nconst payParams = ref<TVAdUnlockParams>({\n assetId: '',\n assetName: '',\n fromId: '',\n fromName: ''\n})\n\nasync function handleUnlockSuccess() {\n await adStorage.setTodayUnlocked()\n await adStorage.addCredits(routeRuleParams.value.creditsPerAd)\n const totalAds = await adStorage.incrementTotalAdsWatched()\n await adStorage.incrementTodayAdCount()\n\n if (totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {\n await adStorage.setPermanentUnlocked()\n }\n\n trackEvent?.({ type: 'page', name: 'unlock_success' })\n toast.showToast('解锁成功!')\n router.back()\n}\n\nconst {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n stopPollTvADStatusTimer,\n stopInvalidTimer,\n reset\n} = useTVAdUnlock(\n {\n packageName,\n superRequestBaseUrl,\n invalidTimeout: 300000,\n pollInterval: 1000\n },\n keys,\n requestManager,\n {\n onUnlockSuccess: () => handleUnlockSuccess(),\n onUnlockFailed: (error) => {\n trackEvent?.({ type: 'click', name: 'unlock_failed' })\n },\n onQrCodeInvalid: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_invalid' })\n },\n onQrCodeScanned: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_scanned' })\n }\n }\n)\n\nfunction onKeyDown(event: any) {\n switch (event.keyCode) {\n case ESKeyCode.ES_KEYCODE_DPAD_CENTER:\n case ESKeyCode.ES_KEYCODE_ENTER:\n if (isInvalid.value || qrCodeState.value === 1) {\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n }\n break\n }\n}\n\nfunction onESCreate(params: TVAdUnlockParams & Record<string, string>) {\n payParams.value = {\n assetId: params.assetId || '',\n assetName: params.assetName || '',\n fromId: params.fromId || '',\n fromName: params.fromName || ''\n }\n\n if (params.creditsPerAd) {\n routeRuleParams.value.creditsPerAd = parseInt(params.creditsPerAd) || 5\n }\n if (params.permanentUnlockAfterTotalAds) {\n routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) || 10\n }\n\n const extra: Partial<typeof rawPageConfig> = {}\n if (params.title) extra.title = params.title\n if (params.subTitle) extra.subTitle = params.subTitle\n if (params.scanTitle) extra.scanTitle = params.scanTitle\n if (params.scanContent) extra.scanContent = params.scanContent\n if (params.scanToast) extra.scanToast = params.scanToast\n if (params.invalidCodeImage) extra.invalidCodeImage = params.invalidCodeImage\n if (params.scannedCodeImage) extra.scannedCodeImage = params.scannedCodeImage\n routeOverrides.value = extra\n\n trackEvent?.({\n type: 'page',\n name: 'ad_page_show',\n assetId: payParams.value.assetId,\n assetName: payParams.value.assetName,\n fromId: payParams.value.fromId,\n fromName: payParams.value.fromName\n })\n\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n}\n\nfunction onBackPressed() {\n if (!isShowConfirmToast.value && qrCodeState.value === 1) {\n toast.showToast('广告播放中,请不要关闭弹窗')\n isShowConfirmToast.value = true\n return true\n } else {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n router.back()\n }\n}\n\nfunction onESDestroy() {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n}\n\ndefineExpose({\n onESCreate,\n onKeyDown,\n onBackPressed,\n onESDestroy\n})\n\nconst sContainer = {\n width: '1920px', height: '1080px',\n backgroundColor: 'rgba(0,0,0,0.7)',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sContent = {\n width: '892px', height: '646px',\n display: 'flex', flexDirection: 'column',\n alignItems: 'center', justifyContent: 'center'\n} as const\nconst sContentBg = {\n position: 'absolute', width: '892px', height: '646px',\n backgroundColor: '#FBE6C4', borderRadius: '30px',\n borderWidth: '1px', borderColor: '#979797'\n} as const\nconst sTitle = {\n fontWeight: '500', fontSize: '46px', color: '#000000'\n} as const\nconst sSubTitle = {\n marginTop: '32px', fontWeight: '400',\n fontSize: '30px', color: 'rgba(0,0,0,0.65)'\n} as const\nconst sQrContainer = {\n marginTop: '32px', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: '#FFFFFF',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sQrcode = {\n position: 'absolute', width: '260px', height: '260px',\n borderRadius: '30px', backgroundColor: '#FFFFFF'\n} as const\nconst sInvalidCode = {\n position: 'absolute', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: 'transparent'\n} as const\n</script>","export default \"data:image/webp;base64,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\"","export default \"data:image/webp;base64,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\"","import { type App } from 'vue'\nimport { ESRouteType } from '@extscreen/es3-router'\nimport type {\n TVAdUnlockPluginOptions,\n TVAdUnlockPluginProvided,\n TVAdUnlockPageConfig\n} from './types'\nimport TVAdUnlockView from './TVAdUnlockView.vue'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport defaultInvalidCodeImage from './assets/invalid-code.webp'\nimport defaultScannedCodeImage from './assets/scanned-code.webp'\n\nexport { TV_AD_UNLOCK_KEY }\n\nconst DEFAULT_PAGE_CONFIG: Required<TVAdUnlockPageConfig> = {\n title: '观看30秒广告 当日解锁',\n subTitle: '手机打开【微信】扫码',\n scanTitle: '观看奖励',\n scanContent: '观看广告后可获得奖励',\n scanToast: '奖励已获得,请前往电视端观看',\n invalidCodeImage: defaultInvalidCodeImage,\n scannedCodeImage: defaultScannedCodeImage\n}\n\nconst DEFAULT_SUPER_REQUEST_BASE_URL = 'https://superapi.extscreen.com/extscreenapi/api'\n\nexport const tvAdUnlockPlugin = {\n install(app: App, options: TVAdUnlockPluginOptions) {\n const pageConfig: Required<TVAdUnlockPageConfig> = {\n ...DEFAULT_PAGE_CONFIG,\n ...options.pageConfig\n }\n\n app.provide(TV_AD_UNLOCK_KEY, {\n packageName: options.packageName,\n requestManager: options.requestManager,\n trackEvent: options.trackEvent,\n pageConfig,\n superRequestBaseUrl: options.superRequestBaseUrl || DEFAULT_SUPER_REQUEST_BASE_URL\n })\n }\n}\n\nexport function createTVAdRoute() {\n return {\n path: '/ad',\n name: 'ad',\n component: TVAdUnlockView,\n type: ESRouteType.ES_ROUTE_TYPE_DIALOG\n }\n}"],"names":["ref","watch","onUnmounted","useESRouter","useESLocalStorage","inject","useESToast","useESRuntime","computed","ESKeyCode","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createBlock","TVAdUnlockView","ESRouteType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/useTVAdUnlock.ts","../src/useTVAdNavigator.ts","../src/constants.ts","../src/TVAdUnlockView.vue","../src/assets/invalid-code.webp","../src/assets/scanned-code.webp","../src/plugin.ts"],"sourcesContent":["import { ref, watch, onUnmounted } from 'vue'\nimport type { ESLocalStorage } from '@extscreen/es3-core'\nimport type {\n TVAdUnlockConfig,\n TVAdUnlockParams,\n TVAdUnlockCallbacks,\n TVAdUnlockStorageKeys,\n RequestManager\n} from './types'\n\nconst DEFAULT_INVALID_TIMEOUT = 300000\nconst DEFAULT_POLL_INTERVAL = 1000\n\nexport function createStorageKeys(packageName: string): TVAdUnlockStorageKeys {\n return {\n credits: `${packageName}_ad_credits`,\n totalAdsWatched: `${packageName}_ad_total_ads`,\n permanentUnlocked: `${packageName}_ad_permanent`,\n todayUnlocked: `${packageName}_ad_today_unlocked`,\n todayPlayCount: `${packageName}_ad_today_plays`,\n todayAdCount: `${packageName}_ad_today_ad_count`,\n todayDate: `${packageName}_ad_today_date`\n }\n}\n\nexport function useTVAdUnlockStorage(\n storage: ESLocalStorage,\n keys: TVAdUnlockStorageKeys,\n initialCredits: number = 5\n) {\n function getTodayString(): string {\n const today = new Date()\n return `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()}`\n }\n\n async function checkDailyReset(): Promise<void> {\n const today = getTodayString()\n const savedDate = await storage.getString(keys.todayDate, '')\n if (savedDate !== today) {\n await storage.putString(keys.todayDate, today)\n await storage.putInt(keys.todayPlayCount, 0)\n await storage.putBoolean(keys.todayUnlocked, false)\n await storage.putInt(keys.todayAdCount, 0)\n }\n }\n\n async function getCredits(): Promise<number> {\n return storage.getInt(keys.credits, initialCredits)\n }\n\n async function setCredits(value: number): Promise<void> {\n await storage.putInt(keys.credits, value)\n }\n\n async function addCredits(amount: number): Promise<void> {\n const current = await getCredits()\n await storage.putInt(keys.credits, current + amount)\n }\n\n async function consumeCredits(amount: number): Promise<number> {\n const current = await getCredits()\n if (current <= 0) return 0\n const consumed = Math.min(current, amount)\n await storage.putInt(keys.credits, current - consumed)\n return consumed\n }\n\n async function consumeAllCredits(): Promise<number> {\n const current = await getCredits()\n if (current > 0) {\n await storage.putInt(keys.credits, 0)\n }\n return current\n }\n\n async function isTodayUnlocked(): Promise<boolean> {\n await checkDailyReset()\n return storage.getBoolean(keys.todayUnlocked, false)\n }\n\n async function setTodayUnlocked(): Promise<void> {\n const today = getTodayString()\n await storage.putString(keys.todayDate, today)\n await storage.putBoolean(keys.todayUnlocked, true)\n }\n\n async function getTodayPlayCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayPlayCount, 0)\n }\n\n async function incrementPlayCount(): Promise<number> {\n const count = await getTodayPlayCount()\n const newCount = count + 1\n await storage.putInt(keys.todayPlayCount, newCount)\n return newCount\n }\n\n async function getTotalAdsWatched(): Promise<number> {\n return storage.getInt(keys.totalAdsWatched, 0)\n }\n\n async function incrementTotalAdsWatched(): Promise<number> {\n const count = await getTotalAdsWatched()\n const newCount = count + 1\n await storage.putInt(keys.totalAdsWatched, newCount)\n return newCount\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n return storage.getBoolean(keys.permanentUnlocked, false)\n }\n\n async function setPermanentUnlocked(): Promise<void> {\n await storage.putBoolean(keys.permanentUnlocked, true)\n }\n\n async function getTodayAdCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayAdCount, 0)\n }\n\n async function incrementTodayAdCount(): Promise<number> {\n const count = await getTodayAdCount()\n const newCount = count + 1\n await storage.putInt(keys.todayAdCount, newCount)\n return newCount\n }\n\n return {\n checkDailyReset,\n getCredits,\n setCredits,\n addCredits,\n consumeCredits,\n consumeAllCredits,\n isTodayUnlocked,\n setTodayUnlocked,\n getTodayPlayCount,\n incrementPlayCount,\n getTotalAdsWatched,\n incrementTotalAdsWatched,\n isPermanentlyUnlocked,\n setPermanentUnlocked,\n getTodayAdCount,\n incrementTodayAdCount\n }\n}\n\nexport function useTVAdUnlock(\n config: TVAdUnlockConfig,\n storageKeys: TVAdUnlockStorageKeys,\n requestManager: RequestManager,\n callbacks?: TVAdUnlockCallbacks\n) {\n const adQrCode = ref('')\n const isInvalid = ref(false)\n const qrCodeState = ref(0)\n const isLoading = ref(false)\n const isStopPoll = ref(false)\n const isShowConfirmToast = ref(false)\n\n let invalidTimer: ReturnType<typeof setTimeout> | null = null\n let pollTimer: ReturnType<typeof setTimeout> | null = null\n\n const invalidTimeout = config.invalidTimeout ?? DEFAULT_INVALID_TIMEOUT\n const pollInterval = config.pollInterval ?? DEFAULT_POLL_INTERVAL\n\n const urlGetDeviceCode = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/getAdUrl'\n const urlPollTVADStatus = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/pollTVADStatus'\n\n watch(() => qrCodeState.value, (newVal: number, oldVal: number) => {\n if (newVal === 1 && oldVal === 0) {\n startInvalidTimer()\n callbacks?.onQrCodeScanned?.()\n }\n })\n\n async function pollTVADStatus(deviceId: string): Promise<void> {\n try {\n const res = await requestManager.post(urlPollTVADStatus, {\n data: { deviceId }\n })\n\n if (isStopPoll.value) {\n return\n }\n\n qrCodeState.value = parseInt(`${res}`)\n\n if (qrCodeState.value === 2) {\n callbacks?.onUnlockSuccess?.()\n } else {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n } catch {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n }\n\n async function getAdQrCode(deviceId: string, scanTitle: string = '观看奖励', scanContent: string = '观看广告后可获得奖励', scanToast: string = '奖励已获得,请前往电视端观看'): Promise<string> {\n isLoading.value = true\n isInvalid.value = false\n qrCodeState.value = 0\n\n try {\n const res = await requestManager.post(urlGetDeviceCode, {\n data: {\n deviceId,\n scanTitle,\n scanContent,\n scanToast\n }\n })\n\n if (res) {\n adQrCode.value = res\n isInvalid.value = false\n startPollTvADStatusTimer(deviceId)\n startInvalidTimer()\n isLoading.value = false\n return res\n } else {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(new Error('获取二维码失败'))\n return ''\n }\n } catch (e) {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(e as Error)\n return ''\n }\n }\n\n function startPollTvADStatusTimer(deviceId: string): void {\n stopPollTvADStatusTimer()\n isStopPoll.value = false\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n\n function stopPollTvADStatusTimer(): void {\n if (pollTimer) {\n clearTimeout(pollTimer)\n pollTimer = null\n isStopPoll.value = true\n }\n }\n\n function stopInvalidTimer(): void {\n if (invalidTimer) {\n clearTimeout(invalidTimer)\n invalidTimer = null\n }\n }\n\n function startInvalidTimer(): void {\n stopInvalidTimer()\n invalidTimer = setTimeout(() => {\n invalidQrCode()\n invalidTimer = null\n }, invalidTimeout)\n }\n\n function invalidQrCode(): void {\n isInvalid.value = true\n stopPollTvADStatusTimer()\n callbacks?.onQrCodeInvalid?.()\n }\n\n function reset(): void {\n adQrCode.value = ''\n isInvalid.value = false\n qrCodeState.value = 0\n isLoading.value = false\n isStopPoll.value = false\n isShowConfirmToast.value = false\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n }\n\n onUnmounted(() => {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n })\n\n return {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n startPollTvADStatusTimer,\n stopPollTvADStatusTimer,\n startInvalidTimer,\n stopInvalidTimer,\n invalidQrCode,\n reset\n }\n}","import { useESRouter } from '@extscreen/es3-router'\nimport { useESLocalStorage } from '@extscreen/es3-core'\nimport { createStorageKeys, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockNavigatorConfig, TVAdUnlockRuleConfig } from './types'\n\nconst DEFAULT_RULES: Required<TVAdUnlockRuleConfig> = {\n initialCredits: 5,\n creditsPerAd: 5,\n dailyUnlockEnabled: true,\n permanentUnlockAfterTotalAds: 0\n}\n\nexport function useTVAdNavigator(config: TVAdUnlockNavigatorConfig) {\n const router = useESRouter()\n const storage = useESLocalStorage()\n const keys = createStorageKeys(config.packageName)\n const adStorage = useTVAdUnlockStorage(storage, keys, config.initialCredits ?? DEFAULT_RULES.initialCredits)\n\n const rules: Required<TVAdUnlockRuleConfig> = {\n initialCredits: config.initialCredits ?? DEFAULT_RULES.initialCredits,\n creditsPerAd: config.creditsPerAd ?? DEFAULT_RULES.creditsPerAd,\n dailyUnlockEnabled: config.dailyUnlockEnabled ?? DEFAULT_RULES.dailyUnlockEnabled,\n permanentUnlockAfterTotalAds: config.permanentUnlockAfterTotalAds ?? DEFAULT_RULES.permanentUnlockAfterTotalAds\n }\n\n async function consume(amount: number): Promise<{ success: boolean; consumed: number }> {\n const consumed = await adStorage.consumeCredits(amount)\n return { success: consumed > 0, consumed }\n }\n\n async function consumeAll(): Promise<number> {\n return adStorage.consumeAllCredits()\n }\n\n async function consumeAndNavigate(params?: {\n onUnlockSuccess?: () => void\n }): Promise<boolean> {\n await adStorage.checkDailyReset()\n\n // 规则①:永久解锁 → 放行\n if (rules.permanentUnlockAfterTotalAds > 0) {\n const permanent = await adStorage.isPermanentlyUnlocked()\n if (permanent) return false\n }\n\n // 规则②:今日已解锁 → 放行\n if (rules.dailyUnlockEnabled) {\n const today = await adStorage.isTodayUnlocked()\n if (today) return false\n }\n\n // 规则③:信用点 > 0 → 扣 1 分,放行\n const credits = await adStorage.getCredits()\n if (credits > 0) {\n await adStorage.consumeCredits(1)\n return false\n }\n\n // 规则④:兜底 → 弹广告\n router.push({\n name: 'ad',\n params: {\n creditsPerAd: String(rules.creditsPerAd),\n permanentUnlockAfterTotalAds: String(rules.permanentUnlockAfterTotalAds)\n }\n })\n return true\n }\n\n async function getCredits(): Promise<number> {\n return adStorage.getCredits()\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n if (rules.permanentUnlockAfterTotalAds <= 0) return false\n return adStorage.isPermanentlyUnlocked()\n }\n\n async function getTodayAdCount(): Promise<number> {\n return adStorage.getTodayAdCount()\n }\n\n async function addCredits(amount: number): Promise<void> {\n return adStorage.addCredits(amount)\n }\n\n return {\n consume,\n consumeAll,\n consumeAndNavigate,\n getCredits,\n isPermanentlyUnlocked,\n getTodayAdCount,\n addCredits\n }\n}","import type { InjectionKey } from 'vue'\nimport type { TVAdUnlockPluginProvided } from './types'\n\nexport const TV_AD_UNLOCK_KEY: InjectionKey<TVAdUnlockPluginProvided> = Symbol('tvAdUnlock')\n","<template>\n <div :style=\"sContainer\">\n <div :style=\"sContent\">\n <div :style=\"sContentBg\" />\n <span :style=\"sTitle\">{{ pageConfig.title }}</span>\n <span :style=\"sSubTitle\">{{ pageConfig.subTitle }}</span>\n <div :style=\"sQrContainer\">\n <qt-qr-code\n v-if=\"adQrCode && !isInvalid && qrCodeState !== 1\"\n :style=\"sQrcode\"\n :content=\"adQrCode\"\n />\n <qt-image\n v-if=\"isInvalid\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.invalidCodeImage\"\n />\n <qt-image\n v-if=\"qrCodeState === 1\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.scannedCodeImage\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, inject, computed } from 'vue'\nimport { ESKeyCode, useESRuntime, useESToast, useESLocalStorage } from '@extscreen/es3-core'\nimport { useESRouter } from '@extscreen/es3-router'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport { createStorageKeys, useTVAdUnlock, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockPluginProvided, TVAdUnlockParams } from './types'\n\nconst pluginContext = inject(TV_AD_UNLOCK_KEY) as TVAdUnlockPluginProvided\nconst { packageName, requestManager, pageConfig: rawPageConfig, trackEvent, superRequestBaseUrl } = pluginContext\n\nconst toast = useESToast()\nconst storage = useESLocalStorage()\nconst router = useESRouter()\nconst runtime = useESRuntime()\nconst dnum = runtime.getRuntimeDeviceId() ?? ''\n\nconst keys = createStorageKeys(packageName)\nconst adStorage = useTVAdUnlockStorage(storage, keys)\n\nconst routeOverrides = ref<Partial<typeof rawPageConfig>>({})\n\nconst routeRuleParams = ref({\n creditsPerAd: 5,\n permanentUnlockAfterTotalAds: 0\n})\n\nconst pageConfig = computed(() => ({\n ...rawPageConfig,\n ...routeOverrides.value\n}))\n\nconst payParams = ref<TVAdUnlockParams>({\n assetId: '',\n assetName: '',\n fromId: '',\n fromName: ''\n})\n\nasync function handleUnlockSuccess() {\n await adStorage.setTodayUnlocked()\n await adStorage.addCredits(routeRuleParams.value.creditsPerAd)\n const totalAds = await adStorage.incrementTotalAdsWatched()\n await adStorage.incrementTodayAdCount()\n\n if (routeRuleParams.value.permanentUnlockAfterTotalAds > 0 &&\n totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {\n await adStorage.setPermanentUnlocked()\n }\n\n trackEvent?.({ type: 'page', name: 'unlock_success' })\n toast.showToast('解锁成功!')\n router.back()\n}\n\nconst {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n stopPollTvADStatusTimer,\n stopInvalidTimer,\n reset\n} = useTVAdUnlock(\n {\n packageName,\n superRequestBaseUrl,\n invalidTimeout: 300000,\n pollInterval: 1000\n },\n keys,\n requestManager,\n {\n onUnlockSuccess: () => handleUnlockSuccess(),\n onUnlockFailed: (error) => {\n trackEvent?.({ type: 'click', name: 'unlock_failed' })\n },\n onQrCodeInvalid: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_invalid' })\n },\n onQrCodeScanned: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_scanned' })\n }\n }\n)\n\nfunction onKeyDown(event: any) {\n switch (event.keyCode) {\n case ESKeyCode.ES_KEYCODE_DPAD_CENTER:\n case ESKeyCode.ES_KEYCODE_ENTER:\n if (isInvalid.value || qrCodeState.value === 1) {\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n }\n break\n }\n}\n\nfunction onESCreate(params: TVAdUnlockParams & Record<string, string>) {\n payParams.value = {\n assetId: params.assetId || '',\n assetName: params.assetName || '',\n fromId: params.fromId || '',\n fromName: params.fromName || ''\n }\n\n if (params.creditsPerAd) {\n routeRuleParams.value.creditsPerAd = parseInt(params.creditsPerAd) || 5\n }\n if (params.permanentUnlockAfterTotalAds !== undefined) {\n routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) || 0\n }\n\n const extra: Partial<typeof rawPageConfig> = {}\n if (params.title) extra.title = params.title\n if (params.subTitle) extra.subTitle = params.subTitle\n if (params.scanTitle) extra.scanTitle = params.scanTitle\n if (params.scanContent) extra.scanContent = params.scanContent\n if (params.scanToast) extra.scanToast = params.scanToast\n if (params.invalidCodeImage) extra.invalidCodeImage = params.invalidCodeImage\n if (params.scannedCodeImage) extra.scannedCodeImage = params.scannedCodeImage\n routeOverrides.value = extra\n\n trackEvent?.({\n type: 'page',\n name: 'ad_page_show',\n assetId: payParams.value.assetId,\n assetName: payParams.value.assetName,\n fromId: payParams.value.fromId,\n fromName: payParams.value.fromName\n })\n\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n}\n\nfunction onBackPressed() {\n if (!isShowConfirmToast.value && qrCodeState.value === 1) {\n toast.showToast('广告播放中,请不要关闭弹窗')\n isShowConfirmToast.value = true\n return true\n } else {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n router.back()\n }\n}\n\nfunction onESDestroy() {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n}\n\ndefineExpose({\n onESCreate,\n onKeyDown,\n onBackPressed,\n onESDestroy\n})\n\nconst sContainer = {\n width: '1920px', height: '1080px',\n backgroundColor: 'rgba(0,0,0,0.7)',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sContent = {\n width: '892px', height: '646px',\n display: 'flex', flexDirection: 'column',\n alignItems: 'center', justifyContent: 'center'\n} as const\nconst sContentBg = {\n position: 'absolute', width: '892px', height: '646px',\n backgroundColor: '#FBE6C4', borderRadius: '30px',\n borderWidth: '1px', borderColor: '#979797'\n} as const\nconst sTitle = {\n fontWeight: '500', fontSize: '46px', color: '#000000'\n} as const\nconst sSubTitle = {\n marginTop: '32px', fontWeight: '400',\n fontSize: '30px', color: 'rgba(0,0,0,0.65)'\n} as const\nconst sQrContainer = {\n marginTop: '32px', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: '#FFFFFF',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sQrcode = {\n position: 'absolute', width: '260px', height: '260px',\n borderRadius: '30px', backgroundColor: '#FFFFFF'\n} as const\nconst sInvalidCode = {\n position: 'absolute', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: 'transparent'\n} as const\n</script>","export default \"data:image/webp;base64,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\"","export default \"data:image/webp;base64,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\"","import { type App } from 'vue'\nimport { ESRouteType } from '@extscreen/es3-router'\nimport type {\n TVAdUnlockPluginOptions,\n TVAdUnlockPluginProvided,\n TVAdUnlockPageConfig\n} from './types'\nimport TVAdUnlockView from './TVAdUnlockView.vue'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport defaultInvalidCodeImage from './assets/invalid-code.webp'\nimport defaultScannedCodeImage from './assets/scanned-code.webp'\n\nexport { TV_AD_UNLOCK_KEY }\n\nconst DEFAULT_PAGE_CONFIG: Required<TVAdUnlockPageConfig> = {\n title: '观看30秒广告 当日解锁',\n subTitle: '手机打开【微信】扫码',\n scanTitle: '观看奖励',\n scanContent: '观看广告后可获得奖励',\n scanToast: '奖励已获得,请前往电视端观看',\n invalidCodeImage: defaultInvalidCodeImage,\n scannedCodeImage: defaultScannedCodeImage\n}\n\nconst DEFAULT_SUPER_REQUEST_BASE_URL = 'https://superapi.extscreen.com/extscreenapi/api'\n\nexport const tvAdUnlockPlugin = {\n install(app: App, options: TVAdUnlockPluginOptions) {\n const pageConfig: Required<TVAdUnlockPageConfig> = {\n ...DEFAULT_PAGE_CONFIG,\n ...options.pageConfig\n }\n\n app.provide(TV_AD_UNLOCK_KEY, {\n packageName: options.packageName,\n requestManager: options.requestManager,\n trackEvent: options.trackEvent,\n pageConfig,\n superRequestBaseUrl: options.superRequestBaseUrl || DEFAULT_SUPER_REQUEST_BASE_URL\n })\n }\n}\n\nexport function createTVAdRoute() {\n return {\n path: '/ad',\n name: 'ad',\n component: TVAdUnlockView,\n type: ESRouteType.ES_ROUTE_TYPE_DIALOG\n }\n}"],"names":["ref","watch","onUnmounted","useESRouter","useESLocalStorage","inject","useESToast","useESRuntime","computed","ESKeyCode","_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createBlock","TVAdUnlockView","ESRouteType"],"mappings":"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"}
|
package/dist/index.esm.js
CHANGED
|
@@ -255,7 +255,7 @@ const DEFAULT_RULES = {
|
|
|
255
255
|
initialCredits: 5,
|
|
256
256
|
creditsPerAd: 5,
|
|
257
257
|
dailyUnlockEnabled: true,
|
|
258
|
-
permanentUnlockAfterTotalAds:
|
|
258
|
+
permanentUnlockAfterTotalAds: 0
|
|
259
259
|
};
|
|
260
260
|
function useTVAdNavigator(config) {
|
|
261
261
|
const router = useESRouter();
|
|
@@ -334,13 +334,13 @@ var script = /* @__PURE__ */ defineComponent({
|
|
|
334
334
|
const storage = useESLocalStorage();
|
|
335
335
|
const router = useESRouter();
|
|
336
336
|
const runtime = useESRuntime();
|
|
337
|
-
const dnum = runtime.getRuntimeDeviceId();
|
|
337
|
+
const dnum = runtime.getRuntimeDeviceId() ?? "";
|
|
338
338
|
const keys = createStorageKeys(packageName);
|
|
339
339
|
const adStorage = useTVAdUnlockStorage(storage, keys);
|
|
340
340
|
const routeOverrides = ref({});
|
|
341
341
|
const routeRuleParams = ref({
|
|
342
342
|
creditsPerAd: 5,
|
|
343
|
-
permanentUnlockAfterTotalAds:
|
|
343
|
+
permanentUnlockAfterTotalAds: 0
|
|
344
344
|
});
|
|
345
345
|
const pageConfig = computed(() => ({
|
|
346
346
|
...rawPageConfig,
|
|
@@ -357,7 +357,7 @@ var script = /* @__PURE__ */ defineComponent({
|
|
|
357
357
|
await adStorage.addCredits(routeRuleParams.value.creditsPerAd);
|
|
358
358
|
const totalAds = await adStorage.incrementTotalAdsWatched();
|
|
359
359
|
await adStorage.incrementTodayAdCount();
|
|
360
|
-
if (totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {
|
|
360
|
+
if (routeRuleParams.value.permanentUnlockAfterTotalAds > 0 && totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {
|
|
361
361
|
await adStorage.setPermanentUnlocked();
|
|
362
362
|
}
|
|
363
363
|
trackEvent?.({ type: "page", name: "unlock_success" });
|
|
@@ -416,8 +416,8 @@ var script = /* @__PURE__ */ defineComponent({
|
|
|
416
416
|
if (params.creditsPerAd) {
|
|
417
417
|
routeRuleParams.value.creditsPerAd = parseInt(params.creditsPerAd) || 5;
|
|
418
418
|
}
|
|
419
|
-
if (params.permanentUnlockAfterTotalAds) {
|
|
420
|
-
routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) ||
|
|
419
|
+
if (params.permanentUnlockAfterTotalAds !== void 0) {
|
|
420
|
+
routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) || 0;
|
|
421
421
|
}
|
|
422
422
|
const extra = {};
|
|
423
423
|
if (params.title) extra.title = params.title;
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/useTVAdUnlock.ts","../src/useTVAdNavigator.ts","../src/constants.ts","../src/TVAdUnlockView.vue","../src/assets/invalid-code.webp","../src/assets/scanned-code.webp","../src/plugin.ts"],"sourcesContent":["import { ref, watch, onUnmounted } from 'vue'\nimport type { ESLocalStorage } from '@extscreen/es3-core'\nimport type {\n TVAdUnlockConfig,\n TVAdUnlockParams,\n TVAdUnlockCallbacks,\n TVAdUnlockStorageKeys,\n RequestManager\n} from './types'\n\nconst DEFAULT_INVALID_TIMEOUT = 300000\nconst DEFAULT_POLL_INTERVAL = 1000\n\nexport function createStorageKeys(packageName: string): TVAdUnlockStorageKeys {\n return {\n credits: `${packageName}_ad_credits`,\n totalAdsWatched: `${packageName}_ad_total_ads`,\n permanentUnlocked: `${packageName}_ad_permanent`,\n todayUnlocked: `${packageName}_ad_today_unlocked`,\n todayPlayCount: `${packageName}_ad_today_plays`,\n todayAdCount: `${packageName}_ad_today_ad_count`,\n todayDate: `${packageName}_ad_today_date`\n }\n}\n\nexport function useTVAdUnlockStorage(\n storage: ESLocalStorage,\n keys: TVAdUnlockStorageKeys,\n initialCredits: number = 5\n) {\n function getTodayString(): string {\n const today = new Date()\n return `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()}`\n }\n\n async function checkDailyReset(): Promise<void> {\n const today = getTodayString()\n const savedDate = await storage.getString(keys.todayDate, '')\n if (savedDate !== today) {\n await storage.putString(keys.todayDate, today)\n await storage.putInt(keys.todayPlayCount, 0)\n await storage.putBoolean(keys.todayUnlocked, false)\n await storage.putInt(keys.todayAdCount, 0)\n }\n }\n\n async function getCredits(): Promise<number> {\n return storage.getInt(keys.credits, initialCredits)\n }\n\n async function setCredits(value: number): Promise<void> {\n await storage.putInt(keys.credits, value)\n }\n\n async function addCredits(amount: number): Promise<void> {\n const current = await getCredits()\n await storage.putInt(keys.credits, current + amount)\n }\n\n async function consumeCredits(amount: number): Promise<number> {\n const current = await getCredits()\n if (current <= 0) return 0\n const consumed = Math.min(current, amount)\n await storage.putInt(keys.credits, current - consumed)\n return consumed\n }\n\n async function consumeAllCredits(): Promise<number> {\n const current = await getCredits()\n if (current > 0) {\n await storage.putInt(keys.credits, 0)\n }\n return current\n }\n\n async function isTodayUnlocked(): Promise<boolean> {\n await checkDailyReset()\n return storage.getBoolean(keys.todayUnlocked, false)\n }\n\n async function setTodayUnlocked(): Promise<void> {\n const today = getTodayString()\n await storage.putString(keys.todayDate, today)\n await storage.putBoolean(keys.todayUnlocked, true)\n }\n\n async function getTodayPlayCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayPlayCount, 0)\n }\n\n async function incrementPlayCount(): Promise<number> {\n const count = await getTodayPlayCount()\n const newCount = count + 1\n await storage.putInt(keys.todayPlayCount, newCount)\n return newCount\n }\n\n async function getTotalAdsWatched(): Promise<number> {\n return storage.getInt(keys.totalAdsWatched, 0)\n }\n\n async function incrementTotalAdsWatched(): Promise<number> {\n const count = await getTotalAdsWatched()\n const newCount = count + 1\n await storage.putInt(keys.totalAdsWatched, newCount)\n return newCount\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n return storage.getBoolean(keys.permanentUnlocked, false)\n }\n\n async function setPermanentUnlocked(): Promise<void> {\n await storage.putBoolean(keys.permanentUnlocked, true)\n }\n\n async function getTodayAdCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayAdCount, 0)\n }\n\n async function incrementTodayAdCount(): Promise<number> {\n const count = await getTodayAdCount()\n const newCount = count + 1\n await storage.putInt(keys.todayAdCount, newCount)\n return newCount\n }\n\n return {\n checkDailyReset,\n getCredits,\n setCredits,\n addCredits,\n consumeCredits,\n consumeAllCredits,\n isTodayUnlocked,\n setTodayUnlocked,\n getTodayPlayCount,\n incrementPlayCount,\n getTotalAdsWatched,\n incrementTotalAdsWatched,\n isPermanentlyUnlocked,\n setPermanentUnlocked,\n getTodayAdCount,\n incrementTodayAdCount\n }\n}\n\nexport function useTVAdUnlock(\n config: TVAdUnlockConfig,\n storageKeys: TVAdUnlockStorageKeys,\n requestManager: RequestManager,\n callbacks?: TVAdUnlockCallbacks\n) {\n const adQrCode = ref('')\n const isInvalid = ref(false)\n const qrCodeState = ref(0)\n const isLoading = ref(false)\n const isStopPoll = ref(false)\n const isShowConfirmToast = ref(false)\n\n let invalidTimer: ReturnType<typeof setTimeout> | null = null\n let pollTimer: ReturnType<typeof setTimeout> | null = null\n\n const invalidTimeout = config.invalidTimeout ?? DEFAULT_INVALID_TIMEOUT\n const pollInterval = config.pollInterval ?? DEFAULT_POLL_INTERVAL\n\n const urlGetDeviceCode = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/getAdUrl'\n const urlPollTVADStatus = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/pollTVADStatus'\n\n watch(() => qrCodeState.value, (newVal: number, oldVal: number) => {\n if (newVal === 1 && oldVal === 0) {\n startInvalidTimer()\n callbacks?.onQrCodeScanned?.()\n }\n })\n\n async function pollTVADStatus(deviceId: string): Promise<void> {\n try {\n const res = await requestManager.post(urlPollTVADStatus, {\n data: { deviceId }\n })\n\n if (isStopPoll.value) {\n return\n }\n\n qrCodeState.value = parseInt(`${res}`)\n\n if (qrCodeState.value === 2) {\n callbacks?.onUnlockSuccess?.()\n } else {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n } catch {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n }\n\n async function getAdQrCode(deviceId: string, scanTitle: string = '观看奖励', scanContent: string = '观看广告后可获得奖励', scanToast: string = '奖励已获得,请前往电视端观看'): Promise<string> {\n isLoading.value = true\n isInvalid.value = false\n qrCodeState.value = 0\n\n try {\n const res = await requestManager.post(urlGetDeviceCode, {\n data: {\n deviceId,\n scanTitle,\n scanContent,\n scanToast\n }\n })\n\n if (res) {\n adQrCode.value = res\n isInvalid.value = false\n startPollTvADStatusTimer(deviceId)\n startInvalidTimer()\n isLoading.value = false\n return res\n } else {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(new Error('获取二维码失败'))\n return ''\n }\n } catch (e) {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(e as Error)\n return ''\n }\n }\n\n function startPollTvADStatusTimer(deviceId: string): void {\n stopPollTvADStatusTimer()\n isStopPoll.value = false\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n\n function stopPollTvADStatusTimer(): void {\n if (pollTimer) {\n clearTimeout(pollTimer)\n pollTimer = null\n isStopPoll.value = true\n }\n }\n\n function stopInvalidTimer(): void {\n if (invalidTimer) {\n clearTimeout(invalidTimer)\n invalidTimer = null\n }\n }\n\n function startInvalidTimer(): void {\n stopInvalidTimer()\n invalidTimer = setTimeout(() => {\n invalidQrCode()\n invalidTimer = null\n }, invalidTimeout)\n }\n\n function invalidQrCode(): void {\n isInvalid.value = true\n stopPollTvADStatusTimer()\n callbacks?.onQrCodeInvalid?.()\n }\n\n function reset(): void {\n adQrCode.value = ''\n isInvalid.value = false\n qrCodeState.value = 0\n isLoading.value = false\n isStopPoll.value = false\n isShowConfirmToast.value = false\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n }\n\n onUnmounted(() => {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n })\n\n return {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n startPollTvADStatusTimer,\n stopPollTvADStatusTimer,\n startInvalidTimer,\n stopInvalidTimer,\n invalidQrCode,\n reset\n }\n}","import { useESRouter } from '@extscreen/es3-router'\nimport { useESLocalStorage } from '@extscreen/es3-core'\nimport { createStorageKeys, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockNavigatorConfig, TVAdUnlockRuleConfig } from './types'\n\nconst DEFAULT_RULES: Required<TVAdUnlockRuleConfig> = {\n initialCredits: 5,\n creditsPerAd: 5,\n dailyUnlockEnabled: true,\n permanentUnlockAfterTotalAds: 10\n}\n\nexport function useTVAdNavigator(config: TVAdUnlockNavigatorConfig) {\n const router = useESRouter()\n const storage = useESLocalStorage()\n const keys = createStorageKeys(config.packageName)\n const adStorage = useTVAdUnlockStorage(storage, keys, config.initialCredits ?? DEFAULT_RULES.initialCredits)\n\n const rules: Required<TVAdUnlockRuleConfig> = {\n initialCredits: config.initialCredits ?? DEFAULT_RULES.initialCredits,\n creditsPerAd: config.creditsPerAd ?? DEFAULT_RULES.creditsPerAd,\n dailyUnlockEnabled: config.dailyUnlockEnabled ?? DEFAULT_RULES.dailyUnlockEnabled,\n permanentUnlockAfterTotalAds: config.permanentUnlockAfterTotalAds ?? DEFAULT_RULES.permanentUnlockAfterTotalAds\n }\n\n async function consume(amount: number): Promise<{ success: boolean; consumed: number }> {\n const consumed = await adStorage.consumeCredits(amount)\n return { success: consumed > 0, consumed }\n }\n\n async function consumeAll(): Promise<number> {\n return adStorage.consumeAllCredits()\n }\n\n async function consumeAndNavigate(params?: {\n onUnlockSuccess?: () => void\n }): Promise<boolean> {\n await adStorage.checkDailyReset()\n\n // 规则①:永久解锁 → 放行\n if (rules.permanentUnlockAfterTotalAds > 0) {\n const permanent = await adStorage.isPermanentlyUnlocked()\n if (permanent) return false\n }\n\n // 规则②:今日已解锁 → 放行\n if (rules.dailyUnlockEnabled) {\n const today = await adStorage.isTodayUnlocked()\n if (today) return false\n }\n\n // 规则③:信用点 > 0 → 扣 1 分,放行\n const credits = await adStorage.getCredits()\n if (credits > 0) {\n await adStorage.consumeCredits(1)\n return false\n }\n\n // 规则④:兜底 → 弹广告\n router.push({\n name: 'ad',\n params: {\n creditsPerAd: String(rules.creditsPerAd),\n permanentUnlockAfterTotalAds: String(rules.permanentUnlockAfterTotalAds)\n }\n })\n return true\n }\n\n async function getCredits(): Promise<number> {\n return adStorage.getCredits()\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n if (rules.permanentUnlockAfterTotalAds <= 0) return false\n return adStorage.isPermanentlyUnlocked()\n }\n\n async function getTodayAdCount(): Promise<number> {\n return adStorage.getTodayAdCount()\n }\n\n async function addCredits(amount: number): Promise<void> {\n return adStorage.addCredits(amount)\n }\n\n return {\n consume,\n consumeAll,\n consumeAndNavigate,\n getCredits,\n isPermanentlyUnlocked,\n getTodayAdCount,\n addCredits\n }\n}","import type { InjectionKey } from 'vue'\nimport type { TVAdUnlockPluginProvided } from './types'\n\nexport const TV_AD_UNLOCK_KEY: InjectionKey<TVAdUnlockPluginProvided> = Symbol('tvAdUnlock')\n","<template>\n <div :style=\"sContainer\">\n <div :style=\"sContent\">\n <div :style=\"sContentBg\" />\n <span :style=\"sTitle\">{{ pageConfig.title }}</span>\n <span :style=\"sSubTitle\">{{ pageConfig.subTitle }}</span>\n <div :style=\"sQrContainer\">\n <qt-qr-code\n v-if=\"adQrCode && !isInvalid && qrCodeState !== 1\"\n :style=\"sQrcode\"\n :content=\"adQrCode\"\n />\n <qt-image\n v-if=\"isInvalid\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.invalidCodeImage\"\n />\n <qt-image\n v-if=\"qrCodeState === 1\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.scannedCodeImage\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, inject, computed } from 'vue'\nimport { ESKeyCode, useESRuntime, useESToast, useESLocalStorage } from '@extscreen/es3-core'\nimport { useESRouter } from '@extscreen/es3-router'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport { createStorageKeys, useTVAdUnlock, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockPluginProvided, TVAdUnlockParams } from './types'\n\nconst pluginContext = inject(TV_AD_UNLOCK_KEY) as TVAdUnlockPluginProvided\nconst { packageName, requestManager, pageConfig: rawPageConfig, trackEvent, superRequestBaseUrl } = pluginContext\n\nconst toast = useESToast()\nconst storage = useESLocalStorage()\nconst router = useESRouter()\nconst runtime = useESRuntime()\nconst dnum = runtime.getRuntimeDeviceId()\n\nconst keys = createStorageKeys(packageName)\nconst adStorage = useTVAdUnlockStorage(storage, keys)\n\nconst routeOverrides = ref<Partial<typeof rawPageConfig>>({})\n\nconst routeRuleParams = ref({\n creditsPerAd: 5,\n permanentUnlockAfterTotalAds: 10\n})\n\nconst pageConfig = computed(() => ({\n ...rawPageConfig,\n ...routeOverrides.value\n}))\n\nconst payParams = ref<TVAdUnlockParams>({\n assetId: '',\n assetName: '',\n fromId: '',\n fromName: ''\n})\n\nasync function handleUnlockSuccess() {\n await adStorage.setTodayUnlocked()\n await adStorage.addCredits(routeRuleParams.value.creditsPerAd)\n const totalAds = await adStorage.incrementTotalAdsWatched()\n await adStorage.incrementTodayAdCount()\n\n if (totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {\n await adStorage.setPermanentUnlocked()\n }\n\n trackEvent?.({ type: 'page', name: 'unlock_success' })\n toast.showToast('解锁成功!')\n router.back()\n}\n\nconst {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n stopPollTvADStatusTimer,\n stopInvalidTimer,\n reset\n} = useTVAdUnlock(\n {\n packageName,\n superRequestBaseUrl,\n invalidTimeout: 300000,\n pollInterval: 1000\n },\n keys,\n requestManager,\n {\n onUnlockSuccess: () => handleUnlockSuccess(),\n onUnlockFailed: (error) => {\n trackEvent?.({ type: 'click', name: 'unlock_failed' })\n },\n onQrCodeInvalid: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_invalid' })\n },\n onQrCodeScanned: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_scanned' })\n }\n }\n)\n\nfunction onKeyDown(event: any) {\n switch (event.keyCode) {\n case ESKeyCode.ES_KEYCODE_DPAD_CENTER:\n case ESKeyCode.ES_KEYCODE_ENTER:\n if (isInvalid.value || qrCodeState.value === 1) {\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n }\n break\n }\n}\n\nfunction onESCreate(params: TVAdUnlockParams & Record<string, string>) {\n payParams.value = {\n assetId: params.assetId || '',\n assetName: params.assetName || '',\n fromId: params.fromId || '',\n fromName: params.fromName || ''\n }\n\n if (params.creditsPerAd) {\n routeRuleParams.value.creditsPerAd = parseInt(params.creditsPerAd) || 5\n }\n if (params.permanentUnlockAfterTotalAds) {\n routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) || 10\n }\n\n const extra: Partial<typeof rawPageConfig> = {}\n if (params.title) extra.title = params.title\n if (params.subTitle) extra.subTitle = params.subTitle\n if (params.scanTitle) extra.scanTitle = params.scanTitle\n if (params.scanContent) extra.scanContent = params.scanContent\n if (params.scanToast) extra.scanToast = params.scanToast\n if (params.invalidCodeImage) extra.invalidCodeImage = params.invalidCodeImage\n if (params.scannedCodeImage) extra.scannedCodeImage = params.scannedCodeImage\n routeOverrides.value = extra\n\n trackEvent?.({\n type: 'page',\n name: 'ad_page_show',\n assetId: payParams.value.assetId,\n assetName: payParams.value.assetName,\n fromId: payParams.value.fromId,\n fromName: payParams.value.fromName\n })\n\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n}\n\nfunction onBackPressed() {\n if (!isShowConfirmToast.value && qrCodeState.value === 1) {\n toast.showToast('广告播放中,请不要关闭弹窗')\n isShowConfirmToast.value = true\n return true\n } else {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n router.back()\n }\n}\n\nfunction onESDestroy() {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n}\n\ndefineExpose({\n onESCreate,\n onKeyDown,\n onBackPressed,\n onESDestroy\n})\n\nconst sContainer = {\n width: '1920px', height: '1080px',\n backgroundColor: 'rgba(0,0,0,0.7)',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sContent = {\n width: '892px', height: '646px',\n display: 'flex', flexDirection: 'column',\n alignItems: 'center', justifyContent: 'center'\n} as const\nconst sContentBg = {\n position: 'absolute', width: '892px', height: '646px',\n backgroundColor: '#FBE6C4', borderRadius: '30px',\n borderWidth: '1px', borderColor: '#979797'\n} as const\nconst sTitle = {\n fontWeight: '500', fontSize: '46px', color: '#000000'\n} as const\nconst sSubTitle = {\n marginTop: '32px', fontWeight: '400',\n fontSize: '30px', color: 'rgba(0,0,0,0.65)'\n} as const\nconst sQrContainer = {\n marginTop: '32px', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: '#FFFFFF',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sQrcode = {\n position: 'absolute', width: '260px', height: '260px',\n borderRadius: '30px', backgroundColor: '#FFFFFF'\n} as const\nconst sInvalidCode = {\n position: 'absolute', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: 'transparent'\n} as const\n</script>","export default \"data:image/webp;base64,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\"","export default \"data:image/webp;base64,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\"","import { type App } from 'vue'\nimport { ESRouteType } from '@extscreen/es3-router'\nimport type {\n TVAdUnlockPluginOptions,\n TVAdUnlockPluginProvided,\n TVAdUnlockPageConfig\n} from './types'\nimport TVAdUnlockView from './TVAdUnlockView.vue'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport defaultInvalidCodeImage from './assets/invalid-code.webp'\nimport defaultScannedCodeImage from './assets/scanned-code.webp'\n\nexport { TV_AD_UNLOCK_KEY }\n\nconst DEFAULT_PAGE_CONFIG: Required<TVAdUnlockPageConfig> = {\n title: '观看30秒广告 当日解锁',\n subTitle: '手机打开【微信】扫码',\n scanTitle: '观看奖励',\n scanContent: '观看广告后可获得奖励',\n scanToast: '奖励已获得,请前往电视端观看',\n invalidCodeImage: defaultInvalidCodeImage,\n scannedCodeImage: defaultScannedCodeImage\n}\n\nconst DEFAULT_SUPER_REQUEST_BASE_URL = 'https://superapi.extscreen.com/extscreenapi/api'\n\nexport const tvAdUnlockPlugin = {\n install(app: App, options: TVAdUnlockPluginOptions) {\n const pageConfig: Required<TVAdUnlockPageConfig> = {\n ...DEFAULT_PAGE_CONFIG,\n ...options.pageConfig\n }\n\n app.provide(TV_AD_UNLOCK_KEY, {\n packageName: options.packageName,\n requestManager: options.requestManager,\n trackEvent: options.trackEvent,\n pageConfig,\n superRequestBaseUrl: options.superRequestBaseUrl || DEFAULT_SUPER_REQUEST_BASE_URL\n })\n }\n}\n\nexport function createTVAdRoute() {\n return {\n path: '/ad',\n name: 'ad',\n component: TVAdUnlockView,\n type: ESRouteType.ES_ROUTE_TYPE_DIALOG\n }\n}"],"names":["_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createBlock","TVAdUnlockView"],"mappings":";;;;AAUA,MAAM,uBAAA,GAA0B,GAAA;AAChC,MAAM,qBAAA,GAAwB,GAAA;AAEvB,SAAS,kBAAkB,WAAA,EAA4C;AAC5E,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,GAAG,WAAW,CAAA,WAAA,CAAA;AAAA,IACvB,eAAA,EAAiB,GAAG,WAAW,CAAA,aAAA,CAAA;AAAA,IAC/B,iBAAA,EAAmB,GAAG,WAAW,CAAA,aAAA,CAAA;AAAA,IACjC,aAAA,EAAe,GAAG,WAAW,CAAA,kBAAA,CAAA;AAAA,IAC7B,cAAA,EAAgB,GAAG,WAAW,CAAA,eAAA,CAAA;AAAA,IAC9B,YAAA,EAAc,GAAG,WAAW,CAAA,kBAAA,CAAA;AAAA,IAC5B,SAAA,EAAW,GAAG,WAAW,CAAA,cAAA;AAAA,GAC3B;AACF;AAEO,SAAS,oBAAA,CACd,OAAA,EACA,IAAA,EACA,cAAA,GAAyB,CAAA,EACzB;AACA,EAAA,SAAS,cAAA,GAAyB;AAChC,IAAA,MAAM,KAAA,uBAAY,IAAA,EAAK;AACvB,IAAA,OAAO,CAAA,EAAG,KAAA,CAAM,WAAA,EAAa,CAAA,CAAA,EAAI,KAAA,CAAM,QAAA,EAAS,GAAI,CAAC,CAAA,CAAA,EAAI,KAAA,CAAM,OAAA,EAAS,CAAA,CAAA;AAAA,EAC1E;AAEA,EAAA,eAAe,eAAA,GAAiC;AAC9C,IAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,IAAA,MAAM,YAAY,MAAM,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,WAAW,EAAE,CAAA;AAC5D,IAAA,IAAI,cAAc,KAAA,EAAO;AACvB,MAAA,MAAM,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,SAAA,EAAW,KAAK,CAAA;AAC7C,MAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,cAAA,EAAgB,CAAC,CAAA;AAC3C,MAAA,MAAM,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA;AAClD,MAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,CAAC,CAAA;AAAA,IAC3C;AAAA,EACF;AAEA,EAAA,eAAe,UAAA,GAA8B;AAC3C,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,cAAc,CAAA;AAAA,EACpD;AAEA,EAAA,eAAe,WAAW,KAAA,EAA8B;AACtD,IAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA;AAAA,EAC1C;AAEA,EAAA,eAAe,WAAW,MAAA,EAA+B;AACvD,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,EAAW;AACjC,IAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,UAAU,MAAM,CAAA;AAAA,EACrD;AAEA,EAAA,eAAe,eAAe,MAAA,EAAiC;AAC7D,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,EAAW;AACjC,IAAA,IAAI,OAAA,IAAW,GAAG,OAAO,CAAA;AACzB,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,MAAM,CAAA;AACzC,IAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,UAAU,QAAQ,CAAA;AACrD,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,eAAe,iBAAA,GAAqC;AAClD,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,EAAW;AACjC,IAAA,IAAI,UAAU,CAAA,EAAG;AACf,MAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,CAAC,CAAA;AAAA,IACtC;AACA,IAAA,OAAO,OAAA;AAAA,EACT;AAEA,EAAA,eAAe,eAAA,GAAoC;AACjD,IAAA,MAAM,eAAA,EAAgB;AACtB,IAAA,OAAO,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA;AAAA,EACrD;AAEA,EAAA,eAAe,gBAAA,GAAkC;AAC/C,IAAA,MAAM,QAAQ,cAAA,EAAe;AAC7B,IAAA,MAAM,OAAA,CAAQ,SAAA,CAAU,IAAA,CAAK,SAAA,EAAW,KAAK,CAAA;AAC7C,IAAA,MAAM,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,aAAA,EAAe,IAAI,CAAA;AAAA,EACnD;AAEA,EAAA,eAAe,iBAAA,GAAqC;AAClD,IAAA,MAAM,eAAA,EAAgB;AACtB,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,cAAA,EAAgB,CAAC,CAAA;AAAA,EAC9C;AAEA,EAAA,eAAe,kBAAA,GAAsC;AACnD,IAAA,MAAM,KAAA,GAAQ,MAAM,iBAAA,EAAkB;AACtC,IAAA,MAAM,WAAW,KAAA,GAAQ,CAAA;AACzB,IAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,cAAA,EAAgB,QAAQ,CAAA;AAClD,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,eAAe,kBAAA,GAAsC;AACnD,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,eAAA,EAAiB,CAAC,CAAA;AAAA,EAC/C;AAEA,EAAA,eAAe,wBAAA,GAA4C;AACzD,IAAA,MAAM,KAAA,GAAQ,MAAM,kBAAA,EAAmB;AACvC,IAAA,MAAM,WAAW,KAAA,GAAQ,CAAA;AACzB,IAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,eAAA,EAAiB,QAAQ,CAAA;AACnD,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,eAAe,qBAAA,GAA0C;AACvD,IAAA,OAAO,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,iBAAA,EAAmB,KAAK,CAAA;AAAA,EACzD;AAEA,EAAA,eAAe,oBAAA,GAAsC;AACnD,IAAA,MAAM,OAAA,CAAQ,UAAA,CAAW,IAAA,CAAK,iBAAA,EAAmB,IAAI,CAAA;AAAA,EACvD;AAEA,EAAA,eAAe,eAAA,GAAmC;AAChD,IAAA,MAAM,eAAA,EAAgB;AACtB,IAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,CAAC,CAAA;AAAA,EAC5C;AAEA,EAAA,eAAe,qBAAA,GAAyC;AACtD,IAAA,MAAM,KAAA,GAAQ,MAAM,eAAA,EAAgB;AACpC,IAAA,MAAM,WAAW,KAAA,GAAQ,CAAA;AACzB,IAAA,MAAM,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,QAAQ,CAAA;AAChD,IAAA,OAAO,QAAA;AAAA,EACT;AAEA,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,UAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,iBAAA;AAAA,IACA,kBAAA;AAAA,IACA,kBAAA;AAAA,IACA,wBAAA;AAAA,IACA,qBAAA;AAAA,IACA,oBAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,aAAA,CACd,MAAA,EACA,WAAA,EACA,cAAA,EACA,SAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,EAAE,CAAA;AACvB,EAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA;AAC3B,EAAA,MAAM,WAAA,GAAc,IAAI,CAAC,CAAA;AACzB,EAAA,MAAM,SAAA,GAAY,IAAI,KAAK,CAAA;AAC3B,EAAA,MAAM,UAAA,GAAa,IAAI,KAAK,CAAA;AAC5B,EAAA,MAAM,kBAAA,GAAqB,IAAI,KAAK,CAAA;AAEpC,EAAA,IAAI,YAAA,GAAqD,IAAA;AACzD,EAAA,IAAI,SAAA,GAAkD,IAAA;AAEtD,EAAA,MAAM,cAAA,GAAiB,OAAO,cAAA,IAAkB,uBAAA;AAChD,EAAA,MAAM,YAAA,GAAe,OAAO,YAAA,IAAgB,qBAAA;AAE5C,EAAA,MAAM,gBAAA,GAAmB,OAAO,mBAAA,GAAsB,gCAAA;AACtD,EAAA,MAAM,iBAAA,GAAoB,OAAO,mBAAA,GAAsB,sCAAA;AAEvD,EAAA,KAAA,CAAM,MAAM,WAAA,CAAY,KAAA,EAAO,CAAC,QAAgB,MAAA,KAAmB;AACjE,IAAA,IAAI,MAAA,KAAW,CAAA,IAAK,MAAA,KAAW,CAAA,EAAG;AAChC,MAAA,iBAAA,EAAkB;AAClB,MAAA,SAAA,EAAW,eAAA,IAAkB;AAAA,IAC/B;AAAA,EACF,CAAC,CAAA;AAED,EAAA,eAAe,eAAe,QAAA,EAAiC;AAC7D,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,cAAA,CAAe,IAAA,CAAK,iBAAA,EAAmB;AAAA,QACvD,IAAA,EAAM,EAAE,QAAA;AAAS,OAClB,CAAA;AAED,MAAA,IAAI,WAAW,KAAA,EAAO;AACpB,QAAA;AAAA,MACF;AAEA,MAAA,WAAA,CAAY,KAAA,GAAQ,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA,CAAE,CAAA;AAErC,MAAA,IAAI,WAAA,CAAY,UAAU,CAAA,EAAG;AAC3B,QAAA,SAAA,EAAW,eAAA,IAAkB;AAAA,MAC/B,CAAA,MAAO;AACL,QAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,UAAA,cAAA,CAAe,QAAQ,CAAA;AAAA,QACzB,GAAG,YAAY,CAAA;AAAA,MACjB;AAAA,IACF,CAAA,CAAA,MAAQ;AACN,MAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,QAAA,cAAA,CAAe,QAAQ,CAAA;AAAA,MACzB,GAAG,YAAY,CAAA;AAAA,IACjB;AAAA,EACF;AAEA,EAAA,eAAe,YAAY,QAAA,EAAkB,SAAA,GAAoB,4BAAQ,WAAA,GAAsB,8DAAA,EAAc,YAAoB,sFAAA,EAAmC;AAClK,IAAA,SAAA,CAAU,KAAA,GAAQ,IAAA;AAClB,IAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,IAAA,WAAA,CAAY,KAAA,GAAQ,CAAA;AAEpB,IAAA,IAAI;AACF,MAAA,MAAM,GAAA,GAAM,MAAM,cAAA,CAAe,IAAA,CAAK,gBAAA,EAAkB;AAAA,QACtD,IAAA,EAAM;AAAA,UACJ,QAAA;AAAA,UACA,SAAA;AAAA,UACA,WAAA;AAAA,UACA;AAAA;AACF,OACD,CAAA;AAED,MAAA,IAAI,GAAA,EAAK;AACP,QAAA,QAAA,CAAS,KAAA,GAAQ,GAAA;AACjB,QAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,QAAA,wBAAA,CAAyB,QAAQ,CAAA;AACjC,QAAA,iBAAA,EAAkB;AAClB,QAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,QAAA,OAAO,GAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,QAAA,SAAA,EAAW,cAAA,GAAiB,IAAI,KAAA,CAAM,4CAAS,CAAC,CAAA;AAChD,QAAA,OAAO,EAAA;AAAA,MACT;AAAA,IACF,SAAS,CAAA,EAAG;AACV,MAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,MAAA,SAAA,EAAW,iBAAiB,CAAU,CAAA;AACtC,MAAA,OAAO,EAAA;AAAA,IACT;AAAA,EACF;AAEA,EAAA,SAAS,yBAAyB,QAAA,EAAwB;AACxD,IAAA,uBAAA,EAAwB;AACxB,IAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AACnB,IAAA,SAAA,GAAY,WAAW,MAAM;AAC3B,MAAA,cAAA,CAAe,QAAQ,CAAA;AAAA,IACzB,GAAG,YAAY,CAAA;AAAA,EACjB;AAEA,EAAA,SAAS,uBAAA,GAAgC;AACvC,IAAA,IAAI,SAAA,EAAW;AACb,MAAA,YAAA,CAAa,SAAS,CAAA;AACtB,MAAA,SAAA,GAAY,IAAA;AACZ,MAAA,UAAA,CAAW,KAAA,GAAQ,IAAA;AAAA,IACrB;AAAA,EACF;AAEA,EAAA,SAAS,gBAAA,GAAyB;AAChC,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,YAAY,CAAA;AACzB,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB;AAAA,EACF;AAEA,EAAA,SAAS,iBAAA,GAA0B;AACjC,IAAA,gBAAA,EAAiB;AACjB,IAAA,YAAA,GAAe,WAAW,MAAM;AAC9B,MAAA,aAAA,EAAc;AACd,MAAA,YAAA,GAAe,IAAA;AAAA,IACjB,GAAG,cAAc,CAAA;AAAA,EACnB;AAEA,EAAA,SAAS,aAAA,GAAsB;AAC7B,IAAA,SAAA,CAAU,KAAA,GAAQ,IAAA;AAClB,IAAA,uBAAA,EAAwB;AACxB,IAAA,SAAA,EAAW,eAAA,IAAkB;AAAA,EAC/B;AAEA,EAAA,SAAS,KAAA,GAAc;AACrB,IAAA,QAAA,CAAS,KAAA,GAAQ,EAAA;AACjB,IAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,IAAA,WAAA,CAAY,KAAA,GAAQ,CAAA;AACpB,IAAA,SAAA,CAAU,KAAA,GAAQ,KAAA;AAClB,IAAA,UAAA,CAAW,KAAA,GAAQ,KAAA;AACnB,IAAA,kBAAA,CAAmB,KAAA,GAAQ,KAAA;AAC3B,IAAA,uBAAA,EAAwB;AACxB,IAAA,gBAAA,EAAiB;AAAA,EACnB;AAEA,EAAA,WAAA,CAAY,MAAM;AAChB,IAAA,uBAAA,EAAwB;AACxB,IAAA,gBAAA,EAAiB;AAAA,EACnB,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,QAAA;AAAA,IACA,SAAA;AAAA,IACA,WAAA;AAAA,IACA,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,WAAA;AAAA,IACA,wBAAA;AAAA,IACA,uBAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;;AC5SA,MAAM,aAAA,GAAgD;AAAA,EACpD,cAAA,EAAgB,CAAA;AAAA,EAChB,YAAA,EAAc,CAAA;AAAA,EACd,kBAAA,EAAoB,IAAA;AAAA,EACpB,4BAAA,EAA8B;AAChC,CAAA;AAEO,SAAS,iBAAiB,MAAA,EAAmC;AAClE,EAAA,MAAM,SAAS,WAAA,EAAY;AAC3B,EAAA,MAAM,UAAU,iBAAA,EAAkB;AAClC,EAAA,MAAM,IAAA,GAAO,iBAAA,CAAkB,MAAA,CAAO,WAAW,CAAA;AACjD,EAAA,MAAM,YAAY,oBAAA,CAAqB,OAAA,EAAS,MAAM,MAAA,CAAO,cAAA,IAAkB,cAAc,cAAc,CAAA;AAE3G,EAAA,MAAM,KAAA,GAAwC;AAAA,IAC5C,cAAA,EAAgB,MAAA,CAAO,cAAA,IAAkB,aAAA,CAAc,cAAA;AAAA,IACvD,YAAA,EAAc,MAAA,CAAO,YAAA,IAAgB,aAAA,CAAc,YAAA;AAAA,IACnD,kBAAA,EAAoB,MAAA,CAAO,kBAAA,IAAsB,aAAA,CAAc,kBAAA;AAAA,IAC/D,4BAAA,EAA8B,MAAA,CAAO,4BAAA,IAAgC,aAAA,CAAc;AAAA,GACrF;AAEA,EAAA,eAAe,QAAQ,MAAA,EAAiE;AACtF,IAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,cAAA,CAAe,MAAM,CAAA;AACtD,IAAA,OAAO,EAAE,OAAA,EAAS,QAAA,GAAW,CAAA,EAAG,QAAA,EAAS;AAAA,EAC3C;AAEA,EAAA,eAAe,UAAA,GAA8B;AAC3C,IAAA,OAAO,UAAU,iBAAA,EAAkB;AAAA,EACrC;AAEA,EAAA,eAAe,mBAAmB,MAAA,EAEb;AACnB,IAAA,MAAM,UAAU,eAAA,EAAgB;AAGhC,IAAA,IAAI,KAAA,CAAM,+BAA+B,CAAA,EAAG;AAC1C,MAAA,MAAM,SAAA,GAAY,MAAM,SAAA,CAAU,qBAAA,EAAsB;AACxD,MAAA,IAAI,WAAW,OAAO,KAAA;AAAA,IACxB;AAGA,IAAA,IAAI,MAAM,kBAAA,EAAoB;AAC5B,MAAA,MAAM,KAAA,GAAQ,MAAM,SAAA,CAAU,eAAA,EAAgB;AAC9C,MAAA,IAAI,OAAO,OAAO,KAAA;AAAA,IACpB;AAGA,IAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,UAAA,EAAW;AAC3C,IAAA,IAAI,UAAU,CAAA,EAAG;AACf,MAAA,MAAM,SAAA,CAAU,eAAe,CAAC,CAAA;AAChC,MAAA,OAAO,KAAA;AAAA,IACT;AAGA,IAAA,MAAA,CAAO,IAAA,CAAK;AAAA,MACV,IAAA,EAAM,IAAA;AAAA,MACN,MAAA,EAAQ;AAAA,QACN,YAAA,EAAc,MAAA,CAAO,KAAA,CAAM,YAAY,CAAA;AAAA,QACvC,4BAAA,EAA8B,MAAA,CAAO,KAAA,CAAM,4BAA4B;AAAA;AACzE,KACD,CAAA;AACD,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,eAAe,UAAA,GAA8B;AAC3C,IAAA,OAAO,UAAU,UAAA,EAAW;AAAA,EAC9B;AAEA,EAAA,eAAe,qBAAA,GAA0C;AACvD,IAAA,IAAI,KAAA,CAAM,4BAAA,IAAgC,CAAA,EAAG,OAAO,KAAA;AACpD,IAAA,OAAO,UAAU,qBAAA,EAAsB;AAAA,EACzC;AAEA,EAAA,eAAe,eAAA,GAAmC;AAChD,IAAA,OAAO,UAAU,eAAA,EAAgB;AAAA,EACnC;AAEA,EAAA,eAAe,WAAW,MAAA,EAA+B;AACvD,IAAA,OAAO,SAAA,CAAU,WAAW,MAAM,CAAA;AAAA,EACpC;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,UAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA;AAAA,IACA,qBAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;AC5FO,MAAM,gBAAA,0BAAkE,YAAY,CAAA;;;;;ACgC3F,IAAA,MAAM,aAAA,GAAgB,OAAO,gBAAgB,CAAA;AAC7C,IAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAgB,YAAY,aAAA,EAAe,UAAA,EAAY,qBAAoB,GAAI,aAAA;AAEpG,IAAA,MAAM,QAAQ,UAAA,EAAW;AACzB,IAAA,MAAM,UAAU,iBAAA,EAAkB;AAClC,IAAA,MAAM,SAAS,WAAA,EAAY;AAC3B,IAAA,MAAM,UAAU,YAAA,EAAa;AAC7B,IAAA,MAAM,IAAA,GAAO,QAAQ,kBAAA,EAAmB;AAExC,IAAA,MAAM,IAAA,GAAO,kBAAkB,WAAW,CAAA;AAC1C,IAAA,MAAM,SAAA,GAAY,oBAAA,CAAqB,OAAA,EAAS,IAAI,CAAA;AAEpD,IAAA,MAAM,cAAA,GAAiB,GAAA,CAAmC,EAAE,CAAA;AAE5D,IAAA,MAAM,kBAAkB,GAAA,CAAI;AAAA,MAC1B,YAAA,EAAc,CAAA;AAAA,MACd,4BAAA,EAA8B;AAAA,KAC/B,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,SAAS,OAAO;AAAA,MACjC,GAAG,aAAA;AAAA,MACH,GAAG,cAAA,CAAe;AAAA,KACpB,CAAE,CAAA;AAEF,IAAA,MAAM,YAAY,GAAA,CAAsB;AAAA,MACtC,OAAA,EAAS,EAAA;AAAA,MACT,SAAA,EAAW,EAAA;AAAA,MACX,MAAA,EAAQ,EAAA;AAAA,MACR,QAAA,EAAU;AAAA,KACX,CAAA;AAED,IAAA,eAAe,mBAAA,GAAsB;AACnC,MAAA,MAAM,UAAU,gBAAA,EAAiB;AACjC,MAAA,MAAM,SAAA,CAAU,UAAA,CAAW,eAAA,CAAgB,KAAA,CAAM,YAAY,CAAA;AAC7D,MAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,wBAAA,EAAyB;AAC1D,MAAA,MAAM,UAAU,qBAAA,EAAsB;AAEtC,MAAA,IAAI,QAAA,IAAY,eAAA,CAAgB,KAAA,CAAM,4BAAA,EAA8B;AAClE,QAAA,MAAM,UAAU,oBAAA,EAAqB;AAAA,MACvC;AAEA,MAAA,UAAA,GAAa,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,kBAAkB,CAAA;AACrD,MAAA,KAAA,CAAM,UAAU,gCAAO,CAAA;AACvB,MAAA,MAAA,CAAO,IAAA,EAAK;AAAA,IACd;AAEA,IAAA,MAAM;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA;AAAA,MACA,SAAA;AAAA,MACA,kBAAA;AAAA,MACA,WAAA;AAAA,MACA,uBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF,GAAI,aAAA;AAAA,MACF;AAAA,QAEE,mBAAA;AAAA,QACA,cAAA,EAAgB,GAAA;AAAA,QAChB,YAAA,EAAc;AAAA,OAChB;AAAA,MACA,IAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACE,eAAA,EAAiB,MAAM,mBAAA,EAAoB;AAAA,QAC3C,cAAA,EAAgB,CAAC,KAAA,KAAU;AACzB,UAAA,UAAA,GAAa,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,iBAAiB,CAAA;AAAA,QACvD,CAAA;AAAA,QACA,iBAAiB,MAAM;AACrB,UAAA,UAAA,GAAa,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,QACzD,CAAA;AAAA,QACA,iBAAiB,MAAM;AACrB,UAAA,UAAA,GAAa,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,mBAAmB,CAAA;AAAA,QACzD;AAAA;AACF,KACF;AAEA,IAAA,SAAS,UAAU,KAAA,EAAY;AAC7B,MAAA,QAAQ,MAAM,OAAA;AAAS,QACrB,KAAK,SAAA,CAAU,sBAAA;AAAA,QACf,KAAK,SAAA,CAAU,gBAAA;AACb,UAAA,IAAI,SAAA,CAAU,KAAA,IAAS,WAAA,CAAY,KAAA,KAAU,CAAA,EAAG;AAC9C,YAAA,MAAM,MAAM,UAAA,CAAW,KAAA;AACvB,YAAA,WAAA,CAAY,MAAM,GAAA,CAAI,SAAA,EAAW,GAAA,CAAI,WAAA,EAAa,IAAI,SAAS,CAAA;AAAA,UACjE;AACA,UAAA;AAAA;AACJ,IACF;AAEA,IAAA,SAAS,WAAW,MAAA,EAAmD;AACrE,MAAA,SAAA,CAAU,KAAA,GAAQ;AAAA,QAChB,OAAA,EAAS,OAAO,OAAA,IAAW,EAAA;AAAA,QAC3B,SAAA,EAAW,OAAO,SAAA,IAAa,EAAA;AAAA,QAC/B,MAAA,EAAQ,OAAO,MAAA,IAAU,EAAA;AAAA,QACzB,QAAA,EAAU,OAAO,QAAA,IAAY;AAAA,OAC/B;AAEA,MAAA,IAAI,OAAO,YAAA,EAAc;AACvB,QAAA,eAAA,CAAgB,KAAA,CAAM,YAAA,GAAe,QAAA,CAAS,MAAA,CAAO,YAAY,CAAA,IAAK,CAAA;AAAA,MACxE;AACA,MAAA,IAAI,OAAO,4BAAA,EAA8B;AACvC,QAAA,eAAA,CAAgB,KAAA,CAAM,4BAAA,GAA+B,QAAA,CAAS,MAAA,CAAO,4BAA4B,CAAA,IAAK,EAAA;AAAA,MACxG;AAEA,MAAA,MAAM,QAAuC,EAAC;AAC9C,MAAA,IAAI,MAAA,CAAO,KAAA,EAAO,KAAA,CAAM,KAAA,GAAQ,MAAA,CAAO,KAAA;AACvC,MAAA,IAAI,MAAA,CAAO,QAAA,EAAU,KAAA,CAAM,QAAA,GAAW,MAAA,CAAO,QAAA;AAC7C,MAAA,IAAI,MAAA,CAAO,SAAA,EAAW,KAAA,CAAM,SAAA,GAAY,MAAA,CAAO,SAAA;AAC/C,MAAA,IAAI,MAAA,CAAO,WAAA,EAAa,KAAA,CAAM,WAAA,GAAc,MAAA,CAAO,WAAA;AACnD,MAAA,IAAI,MAAA,CAAO,SAAA,EAAW,KAAA,CAAM,SAAA,GAAY,MAAA,CAAO,SAAA;AAC/C,MAAA,IAAI,MAAA,CAAO,gBAAA,EAAkB,KAAA,CAAM,gBAAA,GAAmB,MAAA,CAAO,gBAAA;AAC7D,MAAA,IAAI,MAAA,CAAO,gBAAA,EAAkB,KAAA,CAAM,gBAAA,GAAmB,MAAA,CAAO,gBAAA;AAC7D,MAAA,cAAA,CAAe,KAAA,GAAQ,KAAA;AAEvB,MAAA,UAAA,GAAa;AAAA,QACX,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,cAAA;AAAA,QACN,OAAA,EAAS,UAAU,KAAA,CAAM,OAAA;AAAA,QACzB,SAAA,EAAW,UAAU,KAAA,CAAM,SAAA;AAAA,QAC3B,MAAA,EAAQ,UAAU,KAAA,CAAM,MAAA;AAAA,QACxB,QAAA,EAAU,UAAU,KAAA,CAAM;AAAA,OAC3B,CAAA;AAED,MAAA,MAAM,MAAM,UAAA,CAAW,KAAA;AACvB,MAAA,WAAA,CAAY,MAAM,GAAA,CAAI,SAAA,EAAW,GAAA,CAAI,WAAA,EAAa,IAAI,SAAS,CAAA;AAAA,IACjE;AAEA,IAAA,SAAS,aAAA,GAAgB;AACvB,MAAA,IAAI,CAAC,kBAAA,CAAmB,KAAA,IAAS,WAAA,CAAY,UAAU,CAAA,EAAG;AACxD,QAAA,KAAA,CAAM,UAAU,gFAAe,CAAA;AAC/B,QAAA,kBAAA,CAAmB,KAAA,GAAQ,IAAA;AAC3B,QAAA,OAAO,IAAA;AAAA,MACT,CAAA,MAAO;AACL,QAAA,uBAAA,EAAwB;AACxB,QAAA,gBAAA,EAAiB;AACjB,QAAA,MAAA,CAAO,IAAA,EAAK;AAAA,MACd;AAAA,IACF;AAEA,IAAA,SAAS,WAAA,GAAc;AACrB,MAAA,uBAAA,EAAwB;AACxB,MAAA,gBAAA,EAAiB;AAAA,IACnB;AAEA,IAAA,QAAA,CAAa;AAAA,MACX,UAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACD,CAAA;AAED,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,KAAA,EAAO,QAAA;AAAA,MAAU,MAAA,EAAQ,QAAA;AAAA,MACzB,eAAA,EAAiB,iBAAA;AAAA,MACjB,OAAA,EAAS,MAAA;AAAA,MAAQ,cAAA,EAAgB,QAAA;AAAA,MAAU,UAAA,EAAY;AAAA,KACzD;AACA,IAAA,MAAM,QAAA,GAAW;AAAA,MACf,KAAA,EAAO,OAAA;AAAA,MAAS,MAAA,EAAQ,OAAA;AAAA,MACxB,OAAA,EAAS,MAAA;AAAA,MAAQ,aAAA,EAAe,QAAA;AAAA,MAChC,UAAA,EAAY,QAAA;AAAA,MAAU,cAAA,EAAgB;AAAA,KACxC;AACA,IAAA,MAAM,UAAA,GAAa;AAAA,MACjB,QAAA,EAAU,UAAA;AAAA,MAAY,KAAA,EAAO,OAAA;AAAA,MAAS,MAAA,EAAQ,OAAA;AAAA,MAC9C,eAAA,EAAiB,SAAA;AAAA,MAAW,YAAA,EAAc,MAAA;AAAA,MAC1C,WAAA,EAAa,KAAA;AAAA,MAAO,WAAA,EAAa;AAAA,KACnC;AACA,IAAA,MAAM,MAAA,GAAS;AAAA,MACb,UAAA,EAAY,KAAA;AAAA,MAAO,QAAA,EAAU,MAAA;AAAA,MAAQ,KAAA,EAAO;AAAA,KAC9C;AACA,IAAA,MAAM,SAAA,GAAY;AAAA,MAChB,SAAA,EAAW,MAAA;AAAA,MAAQ,UAAA,EAAY,KAAA;AAAA,MAC/B,QAAA,EAAU,MAAA;AAAA,MAAQ,KAAA,EAAO;AAAA,KAC3B;AACA,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,SAAA,EAAW,MAAA;AAAA,MAAQ,KAAA,EAAO,OAAA;AAAA,MAAS,MAAA,EAAQ,OAAA;AAAA,MAC3C,YAAA,EAAc,MAAA;AAAA,MAAQ,eAAA,EAAiB,SAAA;AAAA,MACvC,OAAA,EAAS,MAAA;AAAA,MAAQ,cAAA,EAAgB,QAAA;AAAA,MAAU,UAAA,EAAY;AAAA,KACzD;AACA,IAAA,MAAM,OAAA,GAAU;AAAA,MACd,QAAA,EAAU,UAAA;AAAA,MAAY,KAAA,EAAO,OAAA;AAAA,MAAS,MAAA,EAAQ,OAAA;AAAA,MAC9C,YAAA,EAAc,MAAA;AAAA,MAAQ,eAAA,EAAiB;AAAA,KACzC;AACA,IAAA,MAAM,YAAA,GAAe;AAAA,MACnB,QAAA,EAAU,UAAA;AAAA,MAAY,KAAA,EAAO,OAAA;AAAA,MAAS,MAAA,EAAQ,OAAA;AAAA,MAC9C,YAAA,EAAc,MAAA;AAAA,MAAQ,eAAA,EAAiB;AAAA,KACzC;;;;0BA7NEA,kBAAA,CAuBM,OAAA,EAvBA,KAAA,EAAO,YAAU,EAAA;AAAA,QACrBC,kBAAA,CAqBM,KAAA,EAAA,EArBA,KAAA,EAAO,UAAQ,EAAA;AAAA,UACnBA,kBAAA,CAA2B,KAAA,EAAA,EAArB,KAAA,EAAO,YAAU,CAAA;AAAA,UACvBA,kBAAA;AAAA,YAAmD,MAAA;AAAA,cAA5C,OAAO,MAAA,EAAM;AAAA,YAAAC,eAAA,CAAK,UAAA,CAAA,KAAA,CAAW,KAAK,CAAA;AAAA,YAAA;AAAA;AAAA,WAAA;AAAA,UACzCD,kBAAA;AAAA,YAAyD,MAAA;AAAA,cAAlD,OAAO,SAAA,EAAS;AAAA,YAAAC,eAAA,CAAK,UAAA,CAAA,KAAA,CAAW,QAAQ,CAAA;AAAA,YAAA;AAAA;AAAA,WAAA;AAAA,UAC/CD,kBAAA,CAgBM,KAAA,EAAA,EAhBA,KAAA,EAAO,cAAY,EAAA;AAAA,YAEfE,KAAA,CAAA,QAAA,CAAA,IAAQ,CAAKA,MAAA,SAAA,CAAA,IAAaA,KAAA,CAAA,WAAA,CAAA,KAAW,CAAA,iBAD7CC,YAIE,qBAAA,EAAA;AAAA;cAFC,KAAA,EAAO,OAAA;AAAA,cACP,OAAA,EAASD,MAAA,QAAA;AAAA;YAGJA,MAAA,SAAA,CAAA,iBADRC,YAIE,mBAAA,EAAA;AAAA;cAFC,KAAA,EAAO,YAAA;AAAA,cACP,GAAA,EAAK,WAAA,KAAA,CAAW;AAAA;YAGXD,MAAA,WAAA,CAAA,KAAW,kBADnBC,YAIE,mBAAA,EAAA;AAAA;cAFC,KAAA,EAAO,YAAA;AAAA,cACP,GAAA,EAAK,WAAA,KAAA,CAAW;AAAA;;;;;;;;;;ACpB3B,8BAAe;;ACAf,8BAAe;;ACcf,MAAM,mBAAA,GAAsD;AAAA,EAC1D,KAAA,EAAO,2DAAA;AAAA,EACP,QAAA,EAAU,8DAAA;AAAA,EACV,SAAA,EAAW,0BAAA;AAAA,EACX,WAAA,EAAa,8DAAA;AAAA,EACb,SAAA,EAAW,sFAAA;AAAA,EACX,gBAAA,EAAkB,uBAAA;AAAA,EAClB,gBAAA,EAAkB;AACpB,CAAA;AAEA,MAAM,8BAAA,GAAiC,iDAAA;AAEhC,MAAM,gBAAA,GAAmB;AAAA,EAC9B,OAAA,CAAQ,KAAU,OAAA,EAAkC;AAClD,IAAA,MAAM,UAAA,GAA6C;AAAA,MACjD,GAAG,mBAAA;AAAA,MACH,GAAG,OAAA,CAAQ;AAAA,KACb;AAEA,IAAA,GAAA,CAAI,QAAQ,gBAAA,EAAkB;AAAA,MAC5B,aAAa,OAAA,CAAQ,WAAA;AAAA,MACrB,gBAAgB,OAAA,CAAQ,cAAA;AAAA,MACxB,YAAY,OAAA,CAAQ,UAAA;AAAA,MACpB,UAAA;AAAA,MACA,mBAAA,EAAqB,QAAQ,mBAAA,IAAuB;AAAA,KACrD,CAAA;AAAA,EACH;AACF;AAEO,SAAS,eAAA,GAAkB;AAChC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,KAAA;AAAA,IACN,IAAA,EAAM,IAAA;AAAA,IACN,SAAA,EAAWC,MAAA;AAAA,IACX,MAAM,WAAA,CAAY;AAAA,GACpB;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/useTVAdUnlock.ts","../src/useTVAdNavigator.ts","../src/constants.ts","../src/TVAdUnlockView.vue","../src/assets/invalid-code.webp","../src/assets/scanned-code.webp","../src/plugin.ts"],"sourcesContent":["import { ref, watch, onUnmounted } from 'vue'\nimport type { ESLocalStorage } from '@extscreen/es3-core'\nimport type {\n TVAdUnlockConfig,\n TVAdUnlockParams,\n TVAdUnlockCallbacks,\n TVAdUnlockStorageKeys,\n RequestManager\n} from './types'\n\nconst DEFAULT_INVALID_TIMEOUT = 300000\nconst DEFAULT_POLL_INTERVAL = 1000\n\nexport function createStorageKeys(packageName: string): TVAdUnlockStorageKeys {\n return {\n credits: `${packageName}_ad_credits`,\n totalAdsWatched: `${packageName}_ad_total_ads`,\n permanentUnlocked: `${packageName}_ad_permanent`,\n todayUnlocked: `${packageName}_ad_today_unlocked`,\n todayPlayCount: `${packageName}_ad_today_plays`,\n todayAdCount: `${packageName}_ad_today_ad_count`,\n todayDate: `${packageName}_ad_today_date`\n }\n}\n\nexport function useTVAdUnlockStorage(\n storage: ESLocalStorage,\n keys: TVAdUnlockStorageKeys,\n initialCredits: number = 5\n) {\n function getTodayString(): string {\n const today = new Date()\n return `${today.getFullYear()}-${today.getMonth() + 1}-${today.getDate()}`\n }\n\n async function checkDailyReset(): Promise<void> {\n const today = getTodayString()\n const savedDate = await storage.getString(keys.todayDate, '')\n if (savedDate !== today) {\n await storage.putString(keys.todayDate, today)\n await storage.putInt(keys.todayPlayCount, 0)\n await storage.putBoolean(keys.todayUnlocked, false)\n await storage.putInt(keys.todayAdCount, 0)\n }\n }\n\n async function getCredits(): Promise<number> {\n return storage.getInt(keys.credits, initialCredits)\n }\n\n async function setCredits(value: number): Promise<void> {\n await storage.putInt(keys.credits, value)\n }\n\n async function addCredits(amount: number): Promise<void> {\n const current = await getCredits()\n await storage.putInt(keys.credits, current + amount)\n }\n\n async function consumeCredits(amount: number): Promise<number> {\n const current = await getCredits()\n if (current <= 0) return 0\n const consumed = Math.min(current, amount)\n await storage.putInt(keys.credits, current - consumed)\n return consumed\n }\n\n async function consumeAllCredits(): Promise<number> {\n const current = await getCredits()\n if (current > 0) {\n await storage.putInt(keys.credits, 0)\n }\n return current\n }\n\n async function isTodayUnlocked(): Promise<boolean> {\n await checkDailyReset()\n return storage.getBoolean(keys.todayUnlocked, false)\n }\n\n async function setTodayUnlocked(): Promise<void> {\n const today = getTodayString()\n await storage.putString(keys.todayDate, today)\n await storage.putBoolean(keys.todayUnlocked, true)\n }\n\n async function getTodayPlayCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayPlayCount, 0)\n }\n\n async function incrementPlayCount(): Promise<number> {\n const count = await getTodayPlayCount()\n const newCount = count + 1\n await storage.putInt(keys.todayPlayCount, newCount)\n return newCount\n }\n\n async function getTotalAdsWatched(): Promise<number> {\n return storage.getInt(keys.totalAdsWatched, 0)\n }\n\n async function incrementTotalAdsWatched(): Promise<number> {\n const count = await getTotalAdsWatched()\n const newCount = count + 1\n await storage.putInt(keys.totalAdsWatched, newCount)\n return newCount\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n return storage.getBoolean(keys.permanentUnlocked, false)\n }\n\n async function setPermanentUnlocked(): Promise<void> {\n await storage.putBoolean(keys.permanentUnlocked, true)\n }\n\n async function getTodayAdCount(): Promise<number> {\n await checkDailyReset()\n return storage.getInt(keys.todayAdCount, 0)\n }\n\n async function incrementTodayAdCount(): Promise<number> {\n const count = await getTodayAdCount()\n const newCount = count + 1\n await storage.putInt(keys.todayAdCount, newCount)\n return newCount\n }\n\n return {\n checkDailyReset,\n getCredits,\n setCredits,\n addCredits,\n consumeCredits,\n consumeAllCredits,\n isTodayUnlocked,\n setTodayUnlocked,\n getTodayPlayCount,\n incrementPlayCount,\n getTotalAdsWatched,\n incrementTotalAdsWatched,\n isPermanentlyUnlocked,\n setPermanentUnlocked,\n getTodayAdCount,\n incrementTodayAdCount\n }\n}\n\nexport function useTVAdUnlock(\n config: TVAdUnlockConfig,\n storageKeys: TVAdUnlockStorageKeys,\n requestManager: RequestManager,\n callbacks?: TVAdUnlockCallbacks\n) {\n const adQrCode = ref('')\n const isInvalid = ref(false)\n const qrCodeState = ref(0)\n const isLoading = ref(false)\n const isStopPoll = ref(false)\n const isShowConfirmToast = ref(false)\n\n let invalidTimer: ReturnType<typeof setTimeout> | null = null\n let pollTimer: ReturnType<typeof setTimeout> | null = null\n\n const invalidTimeout = config.invalidTimeout ?? DEFAULT_INVALID_TIMEOUT\n const pollInterval = config.pollInterval ?? DEFAULT_POLL_INTERVAL\n\n const urlGetDeviceCode = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/getAdUrl'\n const urlPollTVADStatus = config.superRequestBaseUrl + '/superc/ad/open/v2/tv/pollTVADStatus'\n\n watch(() => qrCodeState.value, (newVal: number, oldVal: number) => {\n if (newVal === 1 && oldVal === 0) {\n startInvalidTimer()\n callbacks?.onQrCodeScanned?.()\n }\n })\n\n async function pollTVADStatus(deviceId: string): Promise<void> {\n try {\n const res = await requestManager.post(urlPollTVADStatus, {\n data: { deviceId }\n })\n\n if (isStopPoll.value) {\n return\n }\n\n qrCodeState.value = parseInt(`${res}`)\n\n if (qrCodeState.value === 2) {\n callbacks?.onUnlockSuccess?.()\n } else {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n } catch {\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n }\n\n async function getAdQrCode(deviceId: string, scanTitle: string = '观看奖励', scanContent: string = '观看广告后可获得奖励', scanToast: string = '奖励已获得,请前往电视端观看'): Promise<string> {\n isLoading.value = true\n isInvalid.value = false\n qrCodeState.value = 0\n\n try {\n const res = await requestManager.post(urlGetDeviceCode, {\n data: {\n deviceId,\n scanTitle,\n scanContent,\n scanToast\n }\n })\n\n if (res) {\n adQrCode.value = res\n isInvalid.value = false\n startPollTvADStatusTimer(deviceId)\n startInvalidTimer()\n isLoading.value = false\n return res\n } else {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(new Error('获取二维码失败'))\n return ''\n }\n } catch (e) {\n isLoading.value = false\n callbacks?.onUnlockFailed?.(e as Error)\n return ''\n }\n }\n\n function startPollTvADStatusTimer(deviceId: string): void {\n stopPollTvADStatusTimer()\n isStopPoll.value = false\n pollTimer = setTimeout(() => {\n pollTVADStatus(deviceId)\n }, pollInterval)\n }\n\n function stopPollTvADStatusTimer(): void {\n if (pollTimer) {\n clearTimeout(pollTimer)\n pollTimer = null\n isStopPoll.value = true\n }\n }\n\n function stopInvalidTimer(): void {\n if (invalidTimer) {\n clearTimeout(invalidTimer)\n invalidTimer = null\n }\n }\n\n function startInvalidTimer(): void {\n stopInvalidTimer()\n invalidTimer = setTimeout(() => {\n invalidQrCode()\n invalidTimer = null\n }, invalidTimeout)\n }\n\n function invalidQrCode(): void {\n isInvalid.value = true\n stopPollTvADStatusTimer()\n callbacks?.onQrCodeInvalid?.()\n }\n\n function reset(): void {\n adQrCode.value = ''\n isInvalid.value = false\n qrCodeState.value = 0\n isLoading.value = false\n isStopPoll.value = false\n isShowConfirmToast.value = false\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n }\n\n onUnmounted(() => {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n })\n\n return {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n startPollTvADStatusTimer,\n stopPollTvADStatusTimer,\n startInvalidTimer,\n stopInvalidTimer,\n invalidQrCode,\n reset\n }\n}","import { useESRouter } from '@extscreen/es3-router'\nimport { useESLocalStorage } from '@extscreen/es3-core'\nimport { createStorageKeys, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockNavigatorConfig, TVAdUnlockRuleConfig } from './types'\n\nconst DEFAULT_RULES: Required<TVAdUnlockRuleConfig> = {\n initialCredits: 5,\n creditsPerAd: 5,\n dailyUnlockEnabled: true,\n permanentUnlockAfterTotalAds: 0\n}\n\nexport function useTVAdNavigator(config: TVAdUnlockNavigatorConfig) {\n const router = useESRouter()\n const storage = useESLocalStorage()\n const keys = createStorageKeys(config.packageName)\n const adStorage = useTVAdUnlockStorage(storage, keys, config.initialCredits ?? DEFAULT_RULES.initialCredits)\n\n const rules: Required<TVAdUnlockRuleConfig> = {\n initialCredits: config.initialCredits ?? DEFAULT_RULES.initialCredits,\n creditsPerAd: config.creditsPerAd ?? DEFAULT_RULES.creditsPerAd,\n dailyUnlockEnabled: config.dailyUnlockEnabled ?? DEFAULT_RULES.dailyUnlockEnabled,\n permanentUnlockAfterTotalAds: config.permanentUnlockAfterTotalAds ?? DEFAULT_RULES.permanentUnlockAfterTotalAds\n }\n\n async function consume(amount: number): Promise<{ success: boolean; consumed: number }> {\n const consumed = await adStorage.consumeCredits(amount)\n return { success: consumed > 0, consumed }\n }\n\n async function consumeAll(): Promise<number> {\n return adStorage.consumeAllCredits()\n }\n\n async function consumeAndNavigate(params?: {\n onUnlockSuccess?: () => void\n }): Promise<boolean> {\n await adStorage.checkDailyReset()\n\n // 规则①:永久解锁 → 放行\n if (rules.permanentUnlockAfterTotalAds > 0) {\n const permanent = await adStorage.isPermanentlyUnlocked()\n if (permanent) return false\n }\n\n // 规则②:今日已解锁 → 放行\n if (rules.dailyUnlockEnabled) {\n const today = await adStorage.isTodayUnlocked()\n if (today) return false\n }\n\n // 规则③:信用点 > 0 → 扣 1 分,放行\n const credits = await adStorage.getCredits()\n if (credits > 0) {\n await adStorage.consumeCredits(1)\n return false\n }\n\n // 规则④:兜底 → 弹广告\n router.push({\n name: 'ad',\n params: {\n creditsPerAd: String(rules.creditsPerAd),\n permanentUnlockAfterTotalAds: String(rules.permanentUnlockAfterTotalAds)\n }\n })\n return true\n }\n\n async function getCredits(): Promise<number> {\n return adStorage.getCredits()\n }\n\n async function isPermanentlyUnlocked(): Promise<boolean> {\n if (rules.permanentUnlockAfterTotalAds <= 0) return false\n return adStorage.isPermanentlyUnlocked()\n }\n\n async function getTodayAdCount(): Promise<number> {\n return adStorage.getTodayAdCount()\n }\n\n async function addCredits(amount: number): Promise<void> {\n return adStorage.addCredits(amount)\n }\n\n return {\n consume,\n consumeAll,\n consumeAndNavigate,\n getCredits,\n isPermanentlyUnlocked,\n getTodayAdCount,\n addCredits\n }\n}","import type { InjectionKey } from 'vue'\nimport type { TVAdUnlockPluginProvided } from './types'\n\nexport const TV_AD_UNLOCK_KEY: InjectionKey<TVAdUnlockPluginProvided> = Symbol('tvAdUnlock')\n","<template>\n <div :style=\"sContainer\">\n <div :style=\"sContent\">\n <div :style=\"sContentBg\" />\n <span :style=\"sTitle\">{{ pageConfig.title }}</span>\n <span :style=\"sSubTitle\">{{ pageConfig.subTitle }}</span>\n <div :style=\"sQrContainer\">\n <qt-qr-code\n v-if=\"adQrCode && !isInvalid && qrCodeState !== 1\"\n :style=\"sQrcode\"\n :content=\"adQrCode\"\n />\n <qt-image\n v-if=\"isInvalid\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.invalidCodeImage\"\n />\n <qt-image\n v-if=\"qrCodeState === 1\"\n :style=\"sInvalidCode\"\n :src=\"pageConfig.scannedCodeImage\"\n />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, inject, computed } from 'vue'\nimport { ESKeyCode, useESRuntime, useESToast, useESLocalStorage } from '@extscreen/es3-core'\nimport { useESRouter } from '@extscreen/es3-router'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport { createStorageKeys, useTVAdUnlock, useTVAdUnlockStorage } from './useTVAdUnlock'\nimport type { TVAdUnlockPluginProvided, TVAdUnlockParams } from './types'\n\nconst pluginContext = inject(TV_AD_UNLOCK_KEY) as TVAdUnlockPluginProvided\nconst { packageName, requestManager, pageConfig: rawPageConfig, trackEvent, superRequestBaseUrl } = pluginContext\n\nconst toast = useESToast()\nconst storage = useESLocalStorage()\nconst router = useESRouter()\nconst runtime = useESRuntime()\nconst dnum = runtime.getRuntimeDeviceId() ?? ''\n\nconst keys = createStorageKeys(packageName)\nconst adStorage = useTVAdUnlockStorage(storage, keys)\n\nconst routeOverrides = ref<Partial<typeof rawPageConfig>>({})\n\nconst routeRuleParams = ref({\n creditsPerAd: 5,\n permanentUnlockAfterTotalAds: 0\n})\n\nconst pageConfig = computed(() => ({\n ...rawPageConfig,\n ...routeOverrides.value\n}))\n\nconst payParams = ref<TVAdUnlockParams>({\n assetId: '',\n assetName: '',\n fromId: '',\n fromName: ''\n})\n\nasync function handleUnlockSuccess() {\n await adStorage.setTodayUnlocked()\n await adStorage.addCredits(routeRuleParams.value.creditsPerAd)\n const totalAds = await adStorage.incrementTotalAdsWatched()\n await adStorage.incrementTodayAdCount()\n\n if (routeRuleParams.value.permanentUnlockAfterTotalAds > 0 &&\n totalAds >= routeRuleParams.value.permanentUnlockAfterTotalAds) {\n await adStorage.setPermanentUnlocked()\n }\n\n trackEvent?.({ type: 'page', name: 'unlock_success' })\n toast.showToast('解锁成功!')\n router.back()\n}\n\nconst {\n adQrCode,\n isInvalid,\n qrCodeState,\n isLoading,\n isShowConfirmToast,\n getAdQrCode,\n stopPollTvADStatusTimer,\n stopInvalidTimer,\n reset\n} = useTVAdUnlock(\n {\n packageName,\n superRequestBaseUrl,\n invalidTimeout: 300000,\n pollInterval: 1000\n },\n keys,\n requestManager,\n {\n onUnlockSuccess: () => handleUnlockSuccess(),\n onUnlockFailed: (error) => {\n trackEvent?.({ type: 'click', name: 'unlock_failed' })\n },\n onQrCodeInvalid: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_invalid' })\n },\n onQrCodeScanned: () => {\n trackEvent?.({ type: 'click', name: 'qr_code_scanned' })\n }\n }\n)\n\nfunction onKeyDown(event: any) {\n switch (event.keyCode) {\n case ESKeyCode.ES_KEYCODE_DPAD_CENTER:\n case ESKeyCode.ES_KEYCODE_ENTER:\n if (isInvalid.value || qrCodeState.value === 1) {\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n }\n break\n }\n}\n\nfunction onESCreate(params: TVAdUnlockParams & Record<string, string>) {\n payParams.value = {\n assetId: params.assetId || '',\n assetName: params.assetName || '',\n fromId: params.fromId || '',\n fromName: params.fromName || ''\n }\n\n if (params.creditsPerAd) {\n routeRuleParams.value.creditsPerAd = parseInt(params.creditsPerAd) || 5\n }\n if (params.permanentUnlockAfterTotalAds !== undefined) {\n routeRuleParams.value.permanentUnlockAfterTotalAds = parseInt(params.permanentUnlockAfterTotalAds) || 0\n }\n\n const extra: Partial<typeof rawPageConfig> = {}\n if (params.title) extra.title = params.title\n if (params.subTitle) extra.subTitle = params.subTitle\n if (params.scanTitle) extra.scanTitle = params.scanTitle\n if (params.scanContent) extra.scanContent = params.scanContent\n if (params.scanToast) extra.scanToast = params.scanToast\n if (params.invalidCodeImage) extra.invalidCodeImage = params.invalidCodeImage\n if (params.scannedCodeImage) extra.scannedCodeImage = params.scannedCodeImage\n routeOverrides.value = extra\n\n trackEvent?.({\n type: 'page',\n name: 'ad_page_show',\n assetId: payParams.value.assetId,\n assetName: payParams.value.assetName,\n fromId: payParams.value.fromId,\n fromName: payParams.value.fromName\n })\n\n const cfg = pageConfig.value\n getAdQrCode(dnum, cfg.scanTitle, cfg.scanContent, cfg.scanToast)\n}\n\nfunction onBackPressed() {\n if (!isShowConfirmToast.value && qrCodeState.value === 1) {\n toast.showToast('广告播放中,请不要关闭弹窗')\n isShowConfirmToast.value = true\n return true\n } else {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n router.back()\n }\n}\n\nfunction onESDestroy() {\n stopPollTvADStatusTimer()\n stopInvalidTimer()\n}\n\ndefineExpose({\n onESCreate,\n onKeyDown,\n onBackPressed,\n onESDestroy\n})\n\nconst sContainer = {\n width: '1920px', height: '1080px',\n backgroundColor: 'rgba(0,0,0,0.7)',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sContent = {\n width: '892px', height: '646px',\n display: 'flex', flexDirection: 'column',\n alignItems: 'center', justifyContent: 'center'\n} as const\nconst sContentBg = {\n position: 'absolute', width: '892px', height: '646px',\n backgroundColor: '#FBE6C4', borderRadius: '30px',\n borderWidth: '1px', borderColor: '#979797'\n} as const\nconst sTitle = {\n fontWeight: '500', fontSize: '46px', color: '#000000'\n} as const\nconst sSubTitle = {\n marginTop: '32px', fontWeight: '400',\n fontSize: '30px', color: 'rgba(0,0,0,0.65)'\n} as const\nconst sQrContainer = {\n marginTop: '32px', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: '#FFFFFF',\n display: 'flex', justifyContent: 'center', alignItems: 'center'\n} as const\nconst sQrcode = {\n position: 'absolute', width: '260px', height: '260px',\n borderRadius: '30px', backgroundColor: '#FFFFFF'\n} as const\nconst sInvalidCode = {\n position: 'absolute', width: '300px', height: '300px',\n borderRadius: '30px', backgroundColor: 'transparent'\n} as const\n</script>","export default \"data:image/webp;base64,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\"","export default \"data:image/webp;base64,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\"","import { type App } from 'vue'\nimport { ESRouteType } from '@extscreen/es3-router'\nimport type {\n TVAdUnlockPluginOptions,\n TVAdUnlockPluginProvided,\n TVAdUnlockPageConfig\n} from './types'\nimport TVAdUnlockView from './TVAdUnlockView.vue'\nimport { TV_AD_UNLOCK_KEY } from './constants'\nimport defaultInvalidCodeImage from './assets/invalid-code.webp'\nimport defaultScannedCodeImage from './assets/scanned-code.webp'\n\nexport { TV_AD_UNLOCK_KEY }\n\nconst DEFAULT_PAGE_CONFIG: Required<TVAdUnlockPageConfig> = {\n title: '观看30秒广告 当日解锁',\n subTitle: '手机打开【微信】扫码',\n scanTitle: '观看奖励',\n scanContent: '观看广告后可获得奖励',\n scanToast: '奖励已获得,请前往电视端观看',\n invalidCodeImage: defaultInvalidCodeImage,\n scannedCodeImage: defaultScannedCodeImage\n}\n\nconst DEFAULT_SUPER_REQUEST_BASE_URL = 'https://superapi.extscreen.com/extscreenapi/api'\n\nexport const tvAdUnlockPlugin = {\n install(app: App, options: TVAdUnlockPluginOptions) {\n const pageConfig: Required<TVAdUnlockPageConfig> = {\n ...DEFAULT_PAGE_CONFIG,\n ...options.pageConfig\n }\n\n app.provide(TV_AD_UNLOCK_KEY, {\n packageName: options.packageName,\n requestManager: options.requestManager,\n trackEvent: options.trackEvent,\n pageConfig,\n superRequestBaseUrl: options.superRequestBaseUrl || DEFAULT_SUPER_REQUEST_BASE_URL\n })\n }\n}\n\nexport function createTVAdRoute() {\n return {\n path: '/ad',\n name: 'ad',\n component: TVAdUnlockView,\n type: ESRouteType.ES_ROUTE_TYPE_DIALOG\n }\n}"],"names":["_createElementBlock","_createElementVNode","_toDisplayString","_unref","_createBlock","TVAdUnlockView"],"mappings":"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"}
|