mirror of
https://github.com/zoriya/react-native-video.git
synced 2026-08-16 02:56:22 +00:00
73 lines
1.3 KiB
Swift
73 lines
1.3 KiB
Swift
//
|
|
// PluginManager.swift
|
|
// ReactNativeVideoDrm
|
|
//
|
|
// Created by Krzysztof Moch on 07/08/2025.
|
|
//
|
|
|
|
import NitroModules
|
|
import ReactNativeVideo
|
|
|
|
class PluginManager: HybridPluginManagerSpec {
|
|
var plugin: DRMPlugin? = nil
|
|
|
|
override init() {
|
|
super.init()
|
|
do {
|
|
try enable()
|
|
} catch {
|
|
// Handle error if needed, for example log it
|
|
print("Failed to enable DRM plugin: \(error)")
|
|
}
|
|
}
|
|
|
|
var isEnabled: Bool {
|
|
return plugin != nil
|
|
}
|
|
|
|
func enable() throws {
|
|
if isEnabled {
|
|
return
|
|
}
|
|
|
|
try initializePlugin()
|
|
}
|
|
|
|
func disable() throws {
|
|
if !isEnabled {
|
|
return
|
|
}
|
|
|
|
try destroyPlugin()
|
|
}
|
|
|
|
private func initializePlugin() throws {
|
|
plugin = DRMPlugin(name: "ReactNativeVideoDRM")
|
|
|
|
guard let plugin else {
|
|
throw RuntimeError.error(withMessage: "Failed to initialize DRM plugin.")
|
|
}
|
|
|
|
PluginsRegistry.shared.register(plugin: plugin)
|
|
}
|
|
|
|
private func destroyPlugin() throws {
|
|
guard let plugin else {
|
|
throw RuntimeError.error(withMessage: "Plugin is not initialized.")
|
|
}
|
|
|
|
PluginsRegistry.shared.unregister(plugin: plugin)
|
|
self.plugin = nil
|
|
}
|
|
|
|
func dispose() {
|
|
if isEnabled {
|
|
do {
|
|
try destroyPlugin()
|
|
} catch {
|
|
// ignore errors during disposal
|
|
}
|
|
}
|
|
}
|
|
}
|