Open4

Tauri覚書

uboaruboar

ResponseType:Binaryの型

普通にArrayで帰ってくる

import { getClient, Body, ResponseType } from '@tauri-apps/api/http'

const client = await getClient();
const synthesis = await client.post(`${apiUrl}/synthesis?speaker=${speakerId}`, 
Body.json(audioQuery.data), {
    responseType: ResponseType.Binary //arrayだよ
});
new Audio(window.URL.createObjectURL(new Blob([Uint8Array.from(synthesis.data as Array<number>)]))).play();
uboaruboar

allowList.http.scopeの設定

参考
globパターン用にhttps://**とかいる

"http":{
  "all": true,
  "request": true,
  "scope": ["https://**", "http://**"]
}
uboaruboar

Shell:tauri.config.json

事前にscopeで使うコマンドを設定する必要がある

      "shell": {
        "all": true,
        "scope": [
          {
            "name": "tamiyasu",
            "cmd": "vrx",
            "args": true
          }
        ]
      },

多分現状ファイルパス指定してexe実行とかは出来ない?

uboaruboar

(たぶん)直下のファイルを読む

allowList.fs.scope$RESOURCE/*を入れておく

import { resourceDir } from '@tauri-apps/api/path'
import { readTextFile, writeTextFile, exists, BaseDirectory } from '@tauri-apps/api/fs';

export const loadConfig = async (): Promise<Config> => {
    let config = initialConfig;
    if (await exists('config.json', { dir: BaseDirectory.Resource }) as unknown) { // boolean?
        config = JSON.parse(await readTextFile('config.json', { dir: BaseDirectory.Resource })) as Config;
        console.info(`コンフィグファイルを${await resourceDir()}から読み込みました`);
    } else {
        //コンフィグファイルを生成する
        await writeTextFile('config.json', JSON.stringify(config), { dir: BaseDirectory.Resource });
        console.info(`コンフィグファイルを${await resourceDir()}に生成しました`);
    }
    return config;
}

exists()の返り値がPromise<void>になっているがこれは間違いなんだろうか…うーん