Skip to content

Perf/change data flow - #19

Open
faithia-anastasia wants to merge 3 commits into
mainfrom
perf/change-data-flow
Open

faithia-anastasia wants to merge 3 commits into
mainfrom
perf/change-data-flow

Conversation

@faithia-anastasia

@faithia-anastasia faithia-anastasia commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

主な変更

App.tsxとRust間でファイルを実データではなくパス名を介して授受することでサイズの大きいファイルの変換を可能にした。

App.tsx

  • 状態をsourceFile, convertedFileではなくのFileNameとFilePathで保持するようにした
  • processSelectedFilePathでは絶対パスからファイル名やフォーマットの情報を切り出し、各変数にセットする。また、MediaDimensionsには絶対パスを渡す。
  • ファイル選択ダイアログにはinputタグの代わりにtauriのopen関数(選択したファイルの絶対パスを返り値とする)を用いたselectFileWithDialog関数を定義した
  • またgetCurrentWebview関数を用いたドラッグによるファイル選択(これも絶対パスを取得する)のリスナーをuseEffectにより登録
  • convertFile関数ではRust側の処理の返り値が一時ディレクトリのパスとなっている。
  • saveFile関数ではユーザーが選択した保存先のパスと一時ディレクトリのパスを用いてファイルのコピーを行っている
  • また、新しいファイルが入力として選択されたとき、あるいは変換が完了したときに一時ディレクトリ内の不要な一時ファイルをcleanupOldTempFile関数により削除している。
  • いくつかの関数をutilsに切り出した

lib.rs

  • アプリの開始時・終了時にconversion::cleanup_temp_dir関数を呼び出し、不要ファイルの削除を行い、メモリを圧迫しないようにした

mod.rs

  • ファイル削除に関する関数を定義し、エラー時などファイルが不要となるときに適宜呼び出している
  • 入力パスの存在確認→一時ディレクトリの作成→タイムスタンプの取得→タイムスタンプを用いた出力ファイルパスの作成→データ処理というフローに変更した
  • 構造体としてTempWorkspaceの代わりにTempFileを実装した。この構造体はスコープを外れるとき、keepがfalseである(変換失敗などにより一時ファイルをこれ以上保持する必要がない)ときに一時ファイルを削除するようにDropトレイトが実装されている。

types.rs

  • 構造体のメンバ変数のうち、data: Vecであった部分をinput_path: Stringとした

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant