From 09f964451d7d92e9891430ec4595c1276d486aab Mon Sep 17 00:00:00 2001 From: zwlucas Date: Fri, 5 Jun 2026 17:52:54 -0300 Subject: feat: upload Signed-off-by: zwlucas --- src/lib/languageMap.ts | 23 +++++++++++++++++++++++ src/lib/tauri.ts | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/lib/languageMap.ts create mode 100644 src/lib/tauri.ts (limited to 'src/lib') diff --git a/src/lib/languageMap.ts b/src/lib/languageMap.ts new file mode 100644 index 0000000..ec8d6b7 --- /dev/null +++ b/src/lib/languageMap.ts @@ -0,0 +1,23 @@ +import type { Language } from '@/types' + +const extensionMap: Record = { + ts: 'typescript', + tsx: 'typescript', + js: 'javascript', + jsx: 'javascript', + mjs: 'javascript', + cjs: 'javascript', + rs: 'rust', + json: 'json', + md: 'markdown', + mdx: 'markdown', + html: 'html', + htm: 'html', + css: 'css', + py: 'python', +} + +export function detectLanguage(filename: string): Language { + const ext = filename.split('.').pop()?.toLowerCase() ?? '' + return extensionMap[ext] ?? 'plaintext' +} diff --git a/src/lib/tauri.ts b/src/lib/tauri.ts new file mode 100644 index 0000000..294f117 --- /dev/null +++ b/src/lib/tauri.ts @@ -0,0 +1,46 @@ +import { invoke } from '@tauri-apps/api/tauri' +import type { FileEntry } from '@/types' + +export async function readFile(path: string): Promise { + return invoke('read_file', { path }) +} + +export async function writeFile(path: string, content: string): Promise { + return invoke('write_file', { path, content }) +} + +export async function openDir(path: string): Promise { + return invoke('open_dir', { path }) +} + +export async function pickDirectory(): Promise { + const { open } = await import('@tauri-apps/api/dialog') + const selected = await open({ + directory: true, + multiple: false, + title: 'Open Folder', + }) + return selected as string | null +} + +export async function createDir(path: string): Promise { + return invoke('create_dir', { path }) +} + +export async function pickFile(): Promise { + const { open } = await import('@tauri-apps/api/dialog') + const selected = await open({ + multiple: false, + title: 'Open File', + }) + return (selected as string) ?? null +} + +export async function saveDialog(defaultName?: string): Promise { + const { save } = await import('@tauri-apps/api/dialog') + const selected = await save({ + defaultPath: defaultName, + title: 'Save File', + }) + return selected ?? null +} -- cgit v1.2.3