| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /**
- * 合辑分集解锁状态本地缓存:
- * 解锁成功后写入,再次打开合辑弹层 / 进入合辑页时合并,避免重复解锁。
- */
- const STORE_KEY = 'hl88app:series_unlocked_map'
- const MEM_KEY = '__series_unlocked_map__'
- function readMap() {
- try {
- const app = getApp()
- if (app && app.globalData && app.globalData[MEM_KEY]) {
- return { ...app.globalData[MEM_KEY] }
- }
- } catch (_) {}
- try {
- const disk = uni.getStorageSync(STORE_KEY)
- if (disk && typeof disk === 'object') return { ...disk }
- } catch (_) {}
- return {}
- }
- function writeMap(map) {
- const next = map && typeof map === 'object' ? map : {}
- try {
- const app = getApp()
- if (app) {
- app.globalData = app.globalData || {}
- app.globalData[MEM_KEY] = next
- }
- } catch (_) {}
- try {
- uni.setStorageSync(STORE_KEY, next)
- } catch (_) {}
- }
- function itemKey(itemOrId) {
- if (itemOrId == null) return ''
- if (typeof itemOrId === 'object') {
- const id =
- itemOrId.series_item_id != null && itemOrId.series_item_id !== ''
- ? itemOrId.series_item_id
- : itemOrId.id
- return id != null ? String(id) : ''
- }
- return String(itemOrId)
- }
- /** 标记某合辑分集已解锁(可附带播放地址) */
- export function markSeriesItemUnlocked(seriesItemId, extra = {}) {
- const key = itemKey(seriesItemId)
- if (!key) return
- const map = readMap()
- map[key] = {
- at: Date.now(),
- url: (extra && extra.url) || (map[key] && map[key].url) || '',
- videoId: (extra && extra.videoId) || (map[key] && map[key].videoId) || ''
- }
- writeMap(map)
- }
- export function getSeriesUnlockRecord(seriesItemId) {
- const key = itemKey(seriesItemId)
- if (!key) return null
- const map = readMap()
- return map[key] || null
- }
- export function isSeriesItemUnlockedCached(seriesItemId) {
- return !!getSeriesUnlockRecord(seriesItemId)
- }
- /** 合并单条:已缓存解锁 → is_can_play=1,并尽量补 url */
- export function applyUnlockCacheToItem(item) {
- if (!item || typeof item !== 'object') return item
- const rec = getSeriesUnlockRecord(item)
- if (!rec) return item
- const next = { ...item, is_can_play: 1 }
- if (rec.url) {
- next.video = { ...(item.video || {}), url: rec.url }
- }
- return next
- }
- /** 合并整个 series_list */
- export function applyUnlockCacheToSeriesList(list) {
- if (!Array.isArray(list)) return []
- return list.map((row) => applyUnlockCacheToItem(row))
- }
|