From 3d96d89846a7bb190db62c05504ebadb32dad85f Mon Sep 17 00:00:00 2001 From: akanyan Date: Thu, 27 Feb 2025 01:47:01 +0000 Subject: [PATCH] fix: Microsoft Windows --- bun.lockb | Bin 147178 -> 147218 bytes rust/src/cmd.rs | 17 +++++++++++++++++ rust/src/lib.rs | 1 + rust/src/start.rs | 2 +- src/components/Options.vue | 19 +++++++++++-------- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/bun.lockb b/bun.lockb index fedd93f3735fc8598163b365b02346f7c9b841f8..1b2ff23c5ce0506cb88daf5d55f1b3e9fa816c62 100755 GIT binary patch delta 1520 zcmXZcc~Hz@9LMqB6Qx!}N$xC@%Gr={EeVlh82XEuC@eCBZL8gNtTe7M384usk@bJhm`PR98`-)yi&~FkA6Z}%LGA{`xq502RYhOSh8k*4 z_583>1xBjwnaHbkZ=UWoq_;-*=2N{m_QzV?v*~q>=&ch*2Z~{&>1Jc{CcRL7K6P?{ z9G}K>HX(M^Q<-{sQ+f-@K2(S91(FBpbxz$2q8FokF5PQJuZpZbgSv*A4#q2j`V5P7 zFaG~~_A)H;SDMI=weU>+5rcskgaH_gA&5mk^u-FUu^daGwqzNyY{Ysj zkQM2ob=yhA1VkVb;pmJ`SShU;Vt{!oSKNl}*nyqch27YLy)rLDgrpoK=Aas1P=l|i zMNeKr6nY_o<4AOY+DIRI-cT=kF@AGrwP9+5)Mlzpv>+Bk5F=~3ox2UOEu1WGPaQ!G zqlTlHd=58o9@lUNH*o}xa0RDu6=!kUFeVto2yw{80qjR1 za!`aL$ipEVMm`E~499U29vs9`oRAfnqIKdc;tM>)1Kh)XJjYX1;1M3<8J^%h-k=&E zP=$}E#3#JNTfCOz9in4kPvTIF#wf%aveY43x$pAo?%)ZS?Zg~uuHQ`bo9i#gukC(j{aNC@FZr7U;V?cs%K=ZQuk+=ENRxc8CF~O oIEUS8OHH1WV7H~D&Xle)(aHPY3c0sTob@Z#>s_9da*^f!3nZ-I@&Et; delta 1533 zcmXZccSzJ>9LMqB*U~&I%_Nfs6sD<#X?xhPvTW0!KZ2m4silRU+TArSlcEU1qIxRY zrR{9lHMO0U?P-P3-Zp3uwB8Rs559ap_j!KjJ-_4exBRc~yFb1K!)09Fh>{WVAk+V| zT`WEP;_O+Iqg70n#Hge!Nlf#mtc}c?b!!^4j=G-;JHPS9YZa?Buv!u7AV_mE;T{g29uj`?Rtlyf;te5L!7C~=!rs@32z4Ri( zVY&cvZ__zV*MKh4%NnJxvs|VOB)=x>d(eNFAFClM3Hlypn=Xi4Wx6@0YoT|_2vIGw zr8vGDo9>Pth(k~GLT~gzJo=(5=JC!v%tt;JV4(`kk#?#eN1CZVITGQXKsgbUFd0cm z#uTI=6=@g*e*_>1jS!5+Si$~QVigp;>FVGM`71u68lUh11z3jVmgTlm32D%WU>eeq zflQ3UXoRCRA`pov#BhhPXpatv-~%HOg*MO!$eZ2=-^kzb13&Q#@9{x66CVlH_@a8| zN{{e$#P!&Kjo6GW*oti^#12u_xzfZPN7ko8pMrSwg+9dka8Jch3_}>g(Hc(nJ`l~w z&2f}`499T-Cvgg;D8p%-!C9Qcd0fCn{pDREl;bk4;3_I`4cBo4H_;ynC`1vqV+VF( z7j|P0_F^B3u^$I;5QlIWB{%{PyhQmpBzXK&@-sZg3%tZDyv7^6#XG#m6I9_AZsQK_ z;vVkf0Un|fkMLMI9TM6pkvJGb&>sE3f0@-19r+GB!H*n(zvO@Tt;8uoYQIB5qObA# z25#acJUEID*oEELgS{vg73Gx9D#SFy33i_%m*N;o5Q8aPlZ>w9 z=cqs#jw2Q+tes#Ui9oEz8mz@8=tq!#GB~&{nprD1oi^Q` iJuy8!+Mb+|o1CTAmrA%QFO}1_0(03Y&$2SfbN>hY^55YA diff --git a/rust/src/cmd.rs b/rust/src/cmd.rs index 9816309..8cddc7b 100644 --- a/rust/src/cmd.rs +++ b/rust/src/cmd.rs @@ -2,6 +2,7 @@ use log; use std::collections::HashMap; use std::path::PathBuf; use tokio::sync::Mutex; +use tokio::fs; use crate::pkg::{Package, PkgKey}; use crate::pkg_store::InstallResult; @@ -140,9 +141,25 @@ pub async fn init_profile( new_profile.save().await; appd.profile = Some(new_profile.clone()); + fs::create_dir(new_profile.dir()).await + .map_err(|e| format!("Unable to create profile directory: {}", e))?; + Ok(new_profile) } +#[tauri::command] +pub async fn profile_dir( + state: State<'_, Mutex> +) -> Result { + let appd = state.lock().await; + + if let Some(p) = &appd.profile { + Ok(p.dir()) + } else { + Err("No profile loaded") + } +} + #[tauri::command] pub async fn set_cfg( state: State<'_, Mutex>, diff --git a/rust/src/lib.rs b/rust/src/lib.rs index 9965a77..9e6cdc7 100644 --- a/rust/src/lib.rs +++ b/rust/src/lib.rs @@ -106,6 +106,7 @@ pub async fn run(_args: Vec) { cmd::get_current_profile, cmd::init_profile, cmd::save_profile, + cmd::profile_dir, cmd::startline, cmd::kill, cmd::set_cfg, diff --git a/rust/src/start.rs b/rust/src/start.rs index 65be205..b5afb27 100644 --- a/rust/src/start.rs +++ b/rust/src/start.rs @@ -7,7 +7,7 @@ use crate::profile::Profile; use crate::util; #[cfg(target_os = "windows")] -static CREATE_NO_WINDOW: i32 = 0x08000000; +static CREATE_NO_WINDOW: u32 = 0x08000000; pub fn start(p: &Profile, app: AppHandle) -> Result<()> { use tokio::task::JoinSet; diff --git a/src/components/Options.vue b/src/components/Options.vue index e4bd838..829276c 100644 --- a/src/components/Options.vue +++ b/src/components/Options.vue @@ -5,8 +5,9 @@ import InputNumber from 'primevue/inputnumber'; import InputText from 'primevue/inputtext'; import RadioButton from 'primevue/radiobutton'; import Toggle from 'primevue/toggleswitch'; +import { invoke } from '@tauri-apps/api/core'; import * as path from '@tauri-apps/api/path'; -import { readTextFile, writeTextFile } from '@tauri-apps/plugin-fs'; +import { mkdir, readTextFile, writeTextFile } from '@tauri-apps/plugin-fs'; import { usePkgStore } from '../stores'; const store = usePkgStore(); @@ -28,18 +29,19 @@ const cfgAime = _cfg('aime', false); const aimeCode = ref(''); // temp +let profilePath = ''; let aimePath = ''; (async () => { - aimePath = await path.join( - await path.dataDir(), - 'startliner/profile-ongeki-default/aime.txt' - ); - aimeCode.value = await readTextFile(aimePath); + profilePath = await invoke('profile_dir'); + try { + aimePath = await path.join(profilePath, 'aime.txt'); + aimeCode.value = await readTextFile(aimePath); + } catch (_) { + aimeCode.value = ''; + } })(); -path.homeDir().then(console.log); - const aimeCodeModel = computed({ get() { return aimeCode.value; @@ -47,6 +49,7 @@ const aimeCodeModel = computed({ async set(value: string) { aimeCode.value = value; if (value.match(/^[0-9]{20}$/)) { + await mkdir(profilePath); await writeTextFile(aimePath, aimeCode.value); } },