From 8af93d7366cbcb00ddc6cb2cd031dccd6f1eb5f5 Mon Sep 17 00:00:00 2001 From: "K.K" <4ranci0ne@gmail.com> Date: Thu, 26 Sep 2024 00:40:31 +0900 Subject: [PATCH] =?UTF-8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=81=AE?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E3=81=AB=E5=AF=BE=E5=BF=9C=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=80=82=20(#3)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix open file * migrate svelte/stores to rune * Update src/routes/utils/read-text-file-on-tauri.ts Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> * Coderabbitの修正で発生した問題を修正。 * update read-text-file-on-tauri * add error handling * add robots.txt etc... * add save file * 0.1.1 * bump version * fix error handling --------- Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --- biome.json | 1 + bun.lockb | Bin 153027 -> 155428 bytes package.json | 25 +++--- src-tauri/Cargo.lock | 80 +++++------------- src-tauri/Cargo.toml | 2 +- src-tauri/capabilities/default.json | 1 + src-tauri/tauri.conf.json | 4 +- src/routes/+page.svelte | 83 ++++++++++++------- src/routes/utils/read-text-file-on-tauri.ts | 23 +++-- src/routes/utils/write-text-file-on-tauri.ts | 28 +++++++ static/robots.txt | 2 + static/sitemap.xml | 6 ++ 12 files changed, 143 insertions(+), 112 deletions(-) create mode 100644 src/routes/utils/write-text-file-on-tauri.ts create mode 100644 static/robots.txt create mode 100644 static/sitemap.xml diff --git a/biome.json b/biome.json index 99c2eab..2d26205 100644 --- a/biome.json +++ b/biome.json @@ -12,6 +12,7 @@ ".svelte-kit", "build", "src/lib/components/ui/**", + "src/lib/utils.ts", "src-tauri/**" ] }, diff --git a/bun.lockb b/bun.lockb index d8f67c611a8ddeee6db8c1985d61613d512ef5c5..e3d28a50b793a9d7e3025c6beb9840d39d871a35 100644 GIT binary patch delta 19717 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 delta 18611 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%0AM`O)nCheYcToG3 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 diff --git a/package.json b/package.json index cfa2d06..25fa85b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "narrow", - "version": "0.1.0", + "version": "0.1.1", "description": "", "type": "module", "scripts": { @@ -12,17 +12,18 @@ "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "tauri": "tauri", "lint": "biome lint", - "format": "biome format --write" + "format": "biome format --write", + "bump": "bunx tauri-version patch" }, "license": "MIT", "dependencies": { "@fontsource-variable/m-plus-2": "^5.1.0", "@l4ph/web-novel-parser": "npm:@jsr/l4ph__web-novel-parser", "@macfja/svelte-persistent-store": "^2.4.1", - "@tauri-apps/api": "^2.0.0-rc.4", + "@tauri-apps/api": "^2.0.0-rc.5", "@tauri-apps/cli": "^2.0.0-rc.16", - "@tauri-apps/plugin-dialog": "^2.0.0-rc.1", - "@tauri-apps/plugin-fs": "^2.0.0-rc.2", + "@tauri-apps/plugin-dialog": "github:tauri-apps/tauri-plugin-dialog#v2", + "@tauri-apps/plugin-fs": "github:tauri-apps/tauri-plugin-fs#v2", "bits-ui": "^0.21.15", "clsx": "^2.1.1", "lucide-svelte": "^0.441.0", @@ -38,20 +39,20 @@ "@biomejs/biome": "1.9.2", "@svelte-put/shortcut": "^3.1.1", "@sveltejs/adapter-static": "^3.0.5", - "@sveltejs/kit": "^2.5.27", + "@sveltejs/kit": "^2.5.28", "@sveltejs/vite-plugin-svelte": "^4.0.0-next.7", "@tailwindcss/typography": "^0.5.15", - "@tailwindcss/vite": "^4.0.0-alpha.24", + "@tailwindcss/vite": "^4.0.0-alpha.25", "@types/bun": "latest", - "@types/node": "^22.5.5", + "@types/node": "^22.7.0", "autoprefixer": "^10.4.20", "eslint-plugin-svelte": "^2.44.0", - "svelte": "^5.0.0-next.257", + "svelte": "^5.0.0-next.259", "svelte-check": "^4.0.2", - "tailwindcss": "^4.0.0-alpha.24", - "tslib": "^2.4.1", + "tailwindcss": "^4.0.0-alpha.25", + "tslib": "^2.7.0", "typescript": "^5.6.2", - "vite": "^5.4.7" + "vite": "^5.4.8" }, "module": "index.ts" } diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 9750029..94abde8 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -195,9 +195,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.82" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", @@ -945,9 +945,9 @@ checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fdeflate" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +checksum = "d8090f921a24b04994d9929e204f50b498a33ea6ba559ffaa05e04f7ee7fb5ab" dependencies = [ "simd-adler32", ] @@ -1542,9 +1542,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da62f120a8a37763efb0cf8fdf264b884c7b8b9ac8660b900c8661030c00e6ba" +checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" dependencies = [ "bytes", "futures-channel", @@ -1555,7 +1555,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -1819,9 +1818,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.158" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libloading" @@ -2491,26 +2490,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.77", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2536,9 +2515,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "plist" @@ -2768,9 +2747,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "redox_syscall" -version = "0.5.4" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0884ad60e090bf1345b93da0a5de8923c93884cd03f40dfcfddd3b4bee661853" +checksum = "62871f2d65009c0256aed1b9cfeeb8ac272833c404e13d53d400cd0dad7a2ac0" dependencies = [ "bitflags 2.6.0", ] @@ -3406,9 +3385,9 @@ dependencies = [ [[package]] name = "tao" -version = "0.30.1" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e7ede56f9ef03a0bb384c7b2bed4f3985ee7f3f79ec887c50d8466eec21096" +checksum = "06e48d7c56b3f7425d061886e8ce3b6acfab1993682ed70bef50fd133d721ee6" dependencies = [ "bitflags 2.6.0", "cocoa", @@ -3743,7 +3722,7 @@ dependencies = [ [[package]] name = "tawri" -version = "0.1.0" +version = "0.1.1" dependencies = [ "serde", "serde_json", @@ -3786,18 +3765,18 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", @@ -3949,27 +3928,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", -] - -[[package]] -name = "tower-layer" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" - [[package]] name = "tower-service" version = "0.3.3" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 9130c85..88e45bd 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "tawri" -version = "0.1.0" +version = "0.1.1" description = "A Tauri App" authors = ["L4Ph"] edition = "2021" diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json index b9fac87..21b023f 100644 --- a/src-tauri/capabilities/default.json +++ b/src-tauri/capabilities/default.json @@ -9,6 +9,7 @@ "core:default", "shell:allow-open", "fs:default", + "fs:allow-write-text-file", "dialog:default" ] } \ No newline at end of file diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 7e38ecd..440520d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,6 +1,6 @@ { "productName": "tawri", - "version": "0.1.0", + "version": "0.1.1", "identifier": "moe.l4ph.tawri", "build": { "beforeDevCommand": "bun run dev", @@ -31,4 +31,4 @@ "icons/icon.ico" ] } -} +} \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index 2302aa9..1ddc14b 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -6,11 +6,6 @@ import { insertRubyToTextarea } from "./utils/insert-ruby-to-textarea"; import { insertEmphasisToTextarea } from "./utils/insert-emphasis-to-textarea"; import * as Dialog from "$lib/components/ui/dialog"; import Button from "@/components/ui/button/button.svelte"; -import { - persist, - type PersistentStore, - createLocalStorage, -} from "@macfja/svelte-persistent-store"; import { writable } from "svelte/store"; import CodeMirror from "svelte-codemirror-editor"; import ScrollArea from "@/components/ui/scroll-area/scroll-area.svelte"; @@ -27,28 +22,29 @@ import { isTauriApp } from "./utils/is-tauri-app"; import { open as openDialog } from "@tauri-apps/plugin-dialog"; import { listen } from "@tauri-apps/api/event"; import { readTextFileOnTauri } from "./utils/read-text-file-on-tauri"; +import { writeTextFileOnTauri } from "./utils/write-text-file-on-tauri"; -let inputText: PersistentStore = persist( - writable(""), - createLocalStorage(), - "inputText", -); -let preview = ""; +let inputText = $state(""); let textarea: Textarea; -let open = true; -let fileInput: HTMLInputElement; +let open = $state(true); +let fileInput = $state(null); +let textFilePath = $state(""); +let preview = $derived.by(() => { + const parsedHtml = parseNarouNovel(inputText); + return parsedHtml; +}); let urlSearchParams = $page.url.searchParams; if (urlSearchParams) { const result = generateSearchParamsToText(urlSearchParams); if (result) { - inputText.set(result); + inputText = result; } } function handleFileChange(event: Event) { readTextFileOnBrowser(event, (text: string) => { - inputText.set(text); + inputText = text; }); } @@ -57,8 +53,6 @@ function CopyUrlToClipboard(inputText: string) { navigator.clipboard.writeText(url); } -$: preview = parseNarouNovel($inputText); - if (isTauriApp()) { listen("open_file", async () => { try { @@ -72,11 +66,37 @@ if (isTauriApp()) { }, ], }); - readTextFileOnTauri(filePath); + if (filePath) { + textFilePath = filePath; + } + const text = await readTextFileOnTauri(filePath); + if (text !== undefined) { + inputText = text; + toast.success("ファイルを正常に読み込みました。"); + } } catch (error) { console.error("エラーが発生しました:", error); } }); + + listen("save_file", async () => { + try { + writeTextFileOnTauri(textFilePath, inputText); + toast.success("ファイルが正常に保存されました。"); + } catch (error) { + console.error("ファイル保存中にエラーが発生しました:", error); + toast.error("ファイルの保存に失敗しました。"); + } + }); + + listen("save_as", async () => { + try { + toast.info(`"名前を付けて保存"機能は現在開発中です。`); + } catch (error) { + console.error("ファイル保存中にエラーが発生しました:", error); + toast.error("ファイルの保存に失敗しました。"); + } + }); } @@ -87,16 +107,16 @@ if (isTauriApp()) { key: 'i', modifier: 'ctrl', callback: () => { - const updatedText = insertRubyToTextarea(textarea, $inputText) || $inputText; - inputText.set(updatedText); + const updatedText = insertRubyToTextarea(textarea, inputText) || inputText; + inputText = updatedText; } }, { key: 'b', modifier: 'ctrl', callback: () => { - const updatedText = insertEmphasisToTextarea(textarea, $inputText) || $inputText; - inputText.set(updatedText); + const updatedText = insertEmphasisToTextarea(textarea, inputText) || inputText; + inputText = updatedText; } }, ], @@ -104,7 +124,7 @@ if (isTauriApp()) { />
- {#if ($inputText === "" || !inputText) && !isTauriApp() } + {#if (inputText === "" || !inputText) && !isTauriApp() } @@ -114,11 +134,11 @@ if (isTauriApp()) {

Ctrl + iでルビ / Ctrl + bで傍点が入力できます。

- - +
@@ -127,7 +147,7 @@ if (isTauriApp()) {
- {CopyUrlToClipboard($inputText)} }>URLをコピー - {toast("未実装です。")} }>小説本文をコピー + {#if !isTauriApp()} + {CopyUrlToClipboard(inputText)} }>URLをコピー + {/if} + { + // TODO: 小説本文のコピー機能を実装する + toast.info(`"小説本文をコピー"機能は現在開発中です。`); + } }>小説本文をコピー ルビを振る diff --git a/src/routes/utils/read-text-file-on-tauri.ts b/src/routes/utils/read-text-file-on-tauri.ts index fbd3921..75d1701 100644 --- a/src/routes/utils/read-text-file-on-tauri.ts +++ b/src/routes/utils/read-text-file-on-tauri.ts @@ -1,12 +1,21 @@ import { readTextFile } from "@tauri-apps/plugin-fs"; -export function readTextFileOnTauri(filePath: string | null) { - if (filePath && typeof filePath === "string") { - console.log("選択されたファイルのパス:", filePath); - const text = readTextFile(filePath); - console.log("ファイルの内容:", text); - // inputText.set(text) - } else { +export async function readTextFileOnTauri( + filePath: string | null, +): Promise { + if (!filePath || typeof filePath !== "string") { console.log("ファイルが選択されませんでした"); + return undefined; + } + + try { + const text = await readTextFile(filePath); + return text; + } catch (error) { + console.error( + `ファイル '${filePath}' の読み込み中にエラーが発生しました:`, + error, + ); + return undefined; } } diff --git a/src/routes/utils/write-text-file-on-tauri.ts b/src/routes/utils/write-text-file-on-tauri.ts new file mode 100644 index 0000000..d77deb9 --- /dev/null +++ b/src/routes/utils/write-text-file-on-tauri.ts @@ -0,0 +1,28 @@ +import { writeTextFile } from "@tauri-apps/plugin-fs"; + +export async function writeTextFileOnTauri( + filePath: string, + inputText: string, +) { + try { + await writeTextFile(filePath, inputText); + console.log("ファイルの書き込みに成功しました。"); + return true; + } catch (error) { + console.error("ファイルの書き込み中にエラーが発生しました:", error); + if (error instanceof Error) { + return { + success: false, + error: { + message: error.message, + name: error.name, + stack: error.stack, + }, + }; + } + return { + success: false, + error: "不明なエラーが発生しました。", + }; + } +} diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 0000000..cbcf866 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Sitemap : https://tawri.l4ph.moe/sitemap.xml \ No newline at end of file diff --git a/static/sitemap.xml b/static/sitemap.xml new file mode 100644 index 0000000..3da40a7 --- /dev/null +++ b/static/sitemap.xml @@ -0,0 +1,6 @@ + + + + https://tawri.l4ph.moe + + \ No newline at end of file