import {FileBasicData, FileMetadata, FileOsMetadata} from "./api-types/files"; import {invoke} from "@tauri-apps/api/tauri"; import {ApiFunction} from "./api-types/functions"; import { AddLocalFileREquest, AddRepositoryRequest, ChangeFileTagsRequest, CheckDaemonRunningRequest, CheckLocalRepositoryExistsRequest, CreateTagsRequest, DeleteRepositoryRequest, DeleteThumbnailsRequest, FindFilesRequest, GetFileMetadataRequest, GetSizeRequest, GetTagsForFilesRequest, InitRepositoryRequest, ReadFileRequest, RemoveRepositoryRequest, ResolvePathsToFilesRequest, SaveFileRequest, SelectRepositoryRequest, SetFrontendStateRequest, StartDaemonRequest, UpdateFileNameRequest } from "./api-types/requests"; import { RepositoryData, RepositoryMetadata, SizeMetadata } from "./api-types/repo"; import {NamespaceData, TagData} from "./api-types/tags"; export class MediarepApi { public static async hasExecutable(): Promise { return this.invokePlugin(ApiFunction.HasExecutable); } public static async getRepositories(): Promise { return this.invokePlugin(ApiFunction.GetRepositories); } public static async selectRepository(request: SelectRepositoryRequest): Promise { return this.invokePlugin(ApiFunction.SelectRepository, request); } public static async disconnectRepository(): Promise { return this.invokePlugin(ApiFunction.DisconnectRepository); } public static async closeLocalRepository(): Promise { return this.invokePlugin(ApiFunction.CloseLocalRepository); } public static async addRepository(request: AddRepositoryRequest): Promise { return this.invokePlugin(ApiFunction.AddRepository, request); } public static async checkDaemonRunning(request: CheckDaemonRunningRequest): Promise { return this.invokePlugin(ApiFunction.CheckDaemonRunning, request); } public static async checkLocalRepositoryExists(request: CheckLocalRepositoryExistsRequest): Promise { return this.invokePlugin(ApiFunction.CheckLocalRepositoryExists, request); } public static async removeRepository(request: RemoveRepositoryRequest): Promise { return this.invokePlugin(ApiFunction.RemoveRepository, request); } public static async deleteRepository(request: DeleteRepositoryRequest): Promise { return this.invokePlugin(ApiFunction.DeleteRepository, request); } public static async startDaemon(request: StartDaemonRequest): Promise { return this.invokePlugin(ApiFunction.StartDaemon, request); } public static async initRepository(request: InitRepositoryRequest): Promise { return this.invokePlugin(ApiFunction.InitRepository, request); } public static async getRepositoryMetadata(): Promise { return this.invokePlugin(ApiFunction.GetRepoMetadata); } public static async getSize(request: GetSizeRequest): Promise { return this.invokePlugin(ApiFunction.GetSize, request); } public static async getActiveRepository(): Promise { return this.invokePlugin(ApiFunction.GetActiveRepository); } public static async getAllFiles(): Promise { return this.invokePlugin(ApiFunction.GetAllFiles); } public static async findFiles(request: FindFilesRequest): Promise { return this.invokePlugin(ApiFunction.FindFiles, request); } public static async getFileMetadata(request: GetFileMetadataRequest): Promise { return this.invokePlugin(ApiFunction.GetFileMetadata, request); } public static async updateFileName(request: UpdateFileNameRequest): Promise { return this.invokePlugin(ApiFunction.UpdateFileName, request); } public static async saveFileLocally(request: SaveFileRequest): Promise { return this.invokePlugin(ApiFunction.SaveFileLocally, request); } public static async deleteThumbnails(request: DeleteThumbnailsRequest): Promise { return this.invokePlugin(ApiFunction.DeleteThumbnails, request); } public static async readFile(request: ReadFileRequest): Promise { return this.invokePlugin(ApiFunction.ReadFile, request); } public static async getAllTags(): Promise { return this.invokePlugin(ApiFunction.GetAllTags); } public static async getAllNamespaces(): Promise { return this.invokePlugin(ApiFunction.GetAllNamespace); } public static async getTagsForFiles(request: GetTagsForFilesRequest): Promise { return this.invokePlugin(ApiFunction.GetTagsForFiles, request); } public static async createTags(request: CreateTagsRequest): Promise { return this.invokePlugin(ApiFunction.CreateTags, request); } public static async changeFileTags(request: ChangeFileTagsRequest): Promise { return this.invokePlugin(ApiFunction.ChangeFileTags, request); } public static async resolvePathsToFiles(request: ResolvePathsToFilesRequest): Promise { return this.invokePlugin(ApiFunction.ResolvePathsToFiles, request); } public static async addLocalFile(request: AddLocalFileREquest): Promise { return this.invokePlugin(ApiFunction.AddLocalFile, request); } public static async getFrontendState(): Promise { return this.invokePlugin(ApiFunction.GetFrontendState); } public static async setFrontendState(request: SetFrontendStateRequest): Promise { return this.invokePlugin(ApiFunction.SetFrontendState, request); } private static async invokePlugin(fn: ApiFunction, args?: any): Promise { return invoke(`plugin:mediarepo|${fn}`, args); } }