import { invoke } from '@tauri-apps/api/core' import { save } from '@tauri-apps/plugin-dialog' import { get_full_path, get_mod_full_path } from '@/helpers/instance' export async function isDev() { return await invoke('is_dev') } export async function areUpdatesEnabled() { return await invoke('are_updates_enabled') } export async function getUpdateSize(updateRid) { return await invoke('get_update_size', { rid: updateRid }) } export async function enqueueUpdateForInstallation(updateRid) { return await invoke('enqueue_update_for_installation', { rid: updateRid }) } export async function removeEnqueuedUpdate() { return await invoke('remove_enqueued_update') } export async function setRestartAfterPendingUpdate(should_restart) { return await invoke('set_restart_after_pending_update', { shouldRestart: should_restart }) } // One of 'Windows', 'Linux', 'MacOS' export async function getOS() { return await invoke('plugin:utils|get_os') } export async function isNetworkMetered() { return await invoke('plugin:utils|is_network_metered') } export async function openPath(path) { return await invoke('plugin:utils|open_path', { path }) } export async function highlightInFolder(path) { return await invoke('plugin:utils|highlight_in_folder', { path }) } export async function showLauncherLogsFolder() { return await invoke('plugin:utils|show_launcher_logs_folder', {}) } export async function createInstanceShortcut(instanceName, instanceId, options = {}) { const outputPath = await save({ defaultPath: `Modrinth - ${instanceName}`, }) if (!outputPath) return null return await invoke('plugin:shortcuts|create_instance_shortcut', { instanceName, instanceId, outputPath, server: options.server, singleplayerWorld: options.singleplayerWorld, }) } export async function showAppDbBackupsFolder() { return await invoke('plugin:utils|show_app_db_backups_folder', {}) } // Opens an instance's folder in the OS file explorer export async function showInstanceInFolder(instanceId) { const fullPath = await get_full_path(instanceId) return await openPath(fullPath) } export async function highlightModInInstance(instanceId, projectPath) { const fullPath = await get_mod_full_path(instanceId, projectPath) return await highlightInFolder(fullPath) } export async function restartApp() { return await invoke('restart_app') } export const releaseColor = (releaseType) => { switch (releaseType) { case 'release': return 'green' case 'beta': return 'orange' case 'alpha': return 'red' default: return '' } } export async function copyToClipboard(text) { await navigator.clipboard.writeText(text) }