mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-12 06:26:16 -08:00
refactor(core): [CORE-20] type entry and converge initialization
This commit is contained in:
1 parent
ccf77c4ed2
commit
ee895a558f
100 files changed
+33854
-839
No files matched your search
@@ -24,7 +24,8 @@ export interface ResumePromptHost extends ComponentHost, SubscriptionHost<Prompt
|
||||
i18n: { get: (key: string) => string }
|
||||
storage: PlaybackStorage
|
||||
option: { id?: string, url: string }
|
||||
seek: number
|
||||
get seek(): undefined
|
||||
set seek(value: number)
|
||||
play: () => unknown
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import { isClosing } from '../../lifecycle/instance'
|
||||
export type PlaybackTimes = Record<string, number>
|
||||
|
||||
export interface PlaybackStorage {
|
||||
get: (key: 'times') => PlaybackTimes | null | undefined
|
||||
get: (key: 'times') => unknown
|
||||
set: (key: 'times', value: PlaybackTimes) => void
|
||||
del: (key: 'times') => void
|
||||
}
|
||||
@@ -19,7 +19,9 @@ export interface PlaybackRecordHost extends SubscriptionHost<{ 'video:timeupdate
|
||||
}
|
||||
|
||||
export function readTimes(storage: PlaybackStorage): PlaybackTimes {
|
||||
return storage.get('times') || {}
|
||||
// Historical storage is unvalidated JSON. Keep its truthy fallback and localize
|
||||
// the legacy record assumption to this consumer, rather than all Storage reads.
|
||||
return (storage.get('times') || {}) as PlaybackTimes
|
||||
}
|
||||
|
||||
export function installPlaybackRecords(art: PlaybackRecordHost): void {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { BuiltinRegistry, PluginFactory, PluginHost } from './types'
|
||||
import type { BuiltinRegistry, PluginHost } from './types'
|
||||
import { isClosing } from '../lifecycle/instance'
|
||||
import { isMobile } from '../utils/compatibility'
|
||||
import autoOrientation from './autoOrientation'
|
||||
@@ -7,18 +7,22 @@ import fastForward from './fastForward'
|
||||
import lock from './lock'
|
||||
import miniProgressBar from './miniProgressBar'
|
||||
|
||||
export default function installBuiltins<Host extends PluginHost<Host>>(registry: BuiltinRegistry<Host>, option: PluginHost<Host>['option']): void {
|
||||
export type BuiltinHost = Parameters<typeof miniProgressBar>[0]
|
||||
& Parameters<typeof lock>[0]
|
||||
& Parameters<typeof autoPlayback>[0]
|
||||
& Parameters<typeof autoOrientation>[0]
|
||||
& Parameters<typeof fastForward>[0]
|
||||
|
||||
export default function installBuiltins<Host extends PluginHost<Host> & BuiltinHost>(registry: BuiltinRegistry<Host>, option: PluginHost<Host>['option']): void {
|
||||
// Read each condition at its original turn; earlier plugins may change options.
|
||||
if (!isClosing(registry.art) && option.miniProgressBar && !option.isLive)
|
||||
registry.add(miniProgressBar as unknown as PluginFactory<Host>)
|
||||
registry.add(miniProgressBar)
|
||||
if (!isClosing(registry.art) && option.lock && isMobile)
|
||||
registry.add(lock as unknown as PluginFactory<Host>)
|
||||
registry.add(lock)
|
||||
if (!isClosing(registry.art) && option.autoPlayback && !option.isLive)
|
||||
registry.add(autoPlayback as unknown as PluginFactory<Host>)
|
||||
if (!isClosing(registry.art) && option.autoOrientation && isMobile) {
|
||||
// The JS constructor supplies the complete host before builtin installation.
|
||||
registry.add(autoOrientation as unknown as PluginFactory<Host>)
|
||||
}
|
||||
registry.add(autoPlayback)
|
||||
if (!isClosing(registry.art) && option.autoOrientation && isMobile)
|
||||
registry.add(autoOrientation)
|
||||
if (!isClosing(registry.art) && option.fastForward && isMobile && !option.isLive)
|
||||
registry.add(fastForward as unknown as PluginFactory<Host>)
|
||||
registry.add(fastForward)
|
||||
}
|
||||
@@ -1,10 +1,11 @@
|
||||
import type { BuiltinHost } from './builtins'
|
||||
import type { PluginFactory, PluginHost, PluginRegistration } from './types'
|
||||
import { isClosing } from '../lifecycle/instance'
|
||||
import { errorHandle } from '../utils/error'
|
||||
import installBuiltins from './builtins'
|
||||
import registerPlugin from './registration'
|
||||
|
||||
export default class Plugins<Host extends PluginHost<Host>> {
|
||||
export default class Plugins<Host extends PluginHost<Host> & BuiltinHost> {
|
||||
declare art: Host
|
||||
declare id: number
|
||||
|
||||
|
||||
Reference in new issue
Block a user