feat: 移植截图中心(浏览/分组/编辑/导出)
This commit is contained in:
1 parent
300df18aca
commit
b5406c2da0
34 files changed
+7954
-1124
No files matched your search
@@ -9,7 +9,7 @@ import {
|
||||
type ContentItem,
|
||||
type ContentOwner,
|
||||
} from '@modrinth/ui'
|
||||
import { invoke } from '@tauri-apps/api/core'
|
||||
import { convertFileSrc, invoke } from '@tauri-apps/api/core'
|
||||
|
||||
import { isOfflineMode } from '@/composables/useNetworkStatus'
|
||||
import { buildGcCandidateChain, resolveAutoGcStrategy } from '@/helpers/gc/auto-selector'
|
||||
@@ -1124,3 +1124,90 @@ export async function check_symlink_capability(): Promise<SymlinkCapability> {
|
||||
export async function allow_symlink_target(path: string): Promise<void> {
|
||||
return await invoke('allow_symlink_target', { path })
|
||||
}
|
||||
|
||||
export type ScreenshotKey = { instance_id: string; file_name: string }
|
||||
export type InstanceScreenshot = {
|
||||
id: string
|
||||
instance_id: string
|
||||
instance_name: string
|
||||
file_name: string
|
||||
created_at: string
|
||||
modified_at: number
|
||||
group_id: string | null
|
||||
path: string
|
||||
url: string
|
||||
}
|
||||
export type ScreenshotGroup = { id: string; name: string }
|
||||
export type ScreenshotGroupImport = ScreenshotGroup & { screenshot_ids: string[] }
|
||||
export type ScreenshotGroupMembershipUpdate = { screenshot_id: string; group_id: string | null }
|
||||
|
||||
export async function list_screenshots(instanceId: string): Promise<InstanceScreenshot[]> {
|
||||
return await invoke('plugin:instance|instance_list_screenshots', { instanceId })
|
||||
}
|
||||
export async function list_all_screenshots(): Promise<InstanceScreenshot[]> {
|
||||
return await invoke('plugin:instance|instance_list_all_screenshots')
|
||||
}
|
||||
export async function list_synced_screenshots(): Promise<InstanceScreenshot[]> {
|
||||
return await invoke('plugin:instance|instance_list_synced_screenshots')
|
||||
}
|
||||
export async function list_screenshot_groups(): Promise<ScreenshotGroup[]> {
|
||||
return await invoke('plugin:instance|instance_list_screenshot_groups')
|
||||
}
|
||||
export async function create_screenshot_group(
|
||||
name: string,
|
||||
screenshotIds: string[],
|
||||
): Promise<ScreenshotGroup> {
|
||||
return await invoke('plugin:instance|instance_create_screenshot_group', {
|
||||
name,
|
||||
ids: screenshotIds,
|
||||
})
|
||||
}
|
||||
export async function rename_screenshot_group(
|
||||
id: string,
|
||||
newName: string,
|
||||
): Promise<ScreenshotGroup> {
|
||||
return await invoke('plugin:instance|instance_rename_screenshot_group', { id, newName })
|
||||
}
|
||||
export async function delete_screenshot_group(id: string): Promise<void> {
|
||||
return await invoke('plugin:instance|instance_delete_screenshot_group', { id })
|
||||
}
|
||||
export async function set_screenshot_group_memberships(
|
||||
updates: ScreenshotGroupMembershipUpdate[],
|
||||
): Promise<void> {
|
||||
return await invoke('plugin:instance|instance_set_screenshot_group_memberships', { updates })
|
||||
}
|
||||
export async function import_screenshot_groups(groups: ScreenshotGroupImport[]): Promise<void> {
|
||||
return await invoke('plugin:instance|instance_import_screenshot_groups', { groups })
|
||||
}
|
||||
export async function save_edited_screenshot(
|
||||
key: ScreenshotKey,
|
||||
pngBytes: Uint8Array,
|
||||
mode: 'create_copy' | 'replace_edit',
|
||||
): Promise<InstanceScreenshot> {
|
||||
return await invoke('plugin:instance|instance_save_edited_screenshot', {
|
||||
key,
|
||||
bytes: Array.from(pngBytes),
|
||||
mode,
|
||||
})
|
||||
}
|
||||
export async function delete_screenshots(keys: ScreenshotKey[]): Promise<void> {
|
||||
return await invoke('plugin:instance|instance_delete_screenshots', { keys })
|
||||
}
|
||||
export async function export_screenshots(keys: ScreenshotKey[], path: string): Promise<void> {
|
||||
return await invoke('plugin:instance|instance_export_screenshots', { keys, path })
|
||||
}
|
||||
export async function open_screenshot(key: ScreenshotKey): Promise<void> {
|
||||
return await invoke('plugin:instance|instance_open_screenshot', { key })
|
||||
}
|
||||
export async function move_screenshots(
|
||||
keys: ScreenshotKey[],
|
||||
targetInstanceId: string,
|
||||
): Promise<ScreenshotKey[]> {
|
||||
return await invoke('plugin:instance|instance_move_screenshots', {
|
||||
keys,
|
||||
target: targetInstanceId,
|
||||
})
|
||||
}
|
||||
export function getInstanceIconUrl(iconPath?: string | null): string | undefined {
|
||||
return iconPath ? convertFileSrc(iconPath) : undefined
|
||||
}
|
||||
Reference in new issue
Block a user