Plugins are now a unified format for both sources and actions. Actions dictate what to do with a link and can now be added through a plugin JSON file. Backups have also been versioned to improve performance and add action support. Tags are used to give small amounts of information before a user installs a plugin. Signed-off-by: kingbri <bdashore3@proton.me>
32 lines
792 B
Swift
32 lines
792 B
Swift
//
|
|
// ActionModels.swift
|
|
// Ferrite
|
|
//
|
|
// Created by Brian Dashore on 1/11/23.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public struct ActionJson: Codable, Hashable, PluginJson {
|
|
public let name: String
|
|
public let version: Int16
|
|
let minVersion: String?
|
|
let requires: [ActionRequirement]
|
|
let deeplink: String?
|
|
public var author: String?
|
|
public var listId: UUID?
|
|
public var tags: [PluginTagJson]?
|
|
}
|
|
|
|
extension ActionJson {
|
|
// Fetches all tags without optional requirement
|
|
// Avoids the need for extra tag additions in DB
|
|
public func getTags() -> [PluginTagJson] {
|
|
return requires.map { PluginTagJson(name: $0.rawValue, colorHex: nil) } + (tags.map { $0 } ?? [])
|
|
}
|
|
}
|
|
|
|
public enum ActionRequirement: String, Codable {
|
|
case magnet
|
|
case debrid
|
|
}
|