A photo manager for VRChat.

Fixed the "Start with windows" button appearing on linux

Changed files
+30 -81
src
Components
src-tauri
+1
README.md
··· 1 1 # VRChat Photo Manager (BETA) 2 2 3 3 Install [here](https://cdn.phaz.uk/vrcpm/vrcpm-installer.exe) (Windows) 4 + 4 5 Install [here](https://github.com/phaze-the-dumb/VRChat-Photo-Manager/releases) (Linux) 5 6 6 7 ## Feedback / Bug Reports
+4 -1
changelog
··· 89 89 - Fixed render being called multiple times per frame when using webkitgtk 90 90 91 91 Dev Stuff: 92 - - Implemented a view transition handler, should help with transitions when the app is scaled 92 + - Implemented a view transition handler, should help with transitions when the app is scaled 93 + 94 + v0.2.5: 95 + - Fixed the "Start with windows" button appearing on linux
+1 -2
src-tauri/tauri.conf.json
··· 36 36 "minHeight": 400, 37 37 "visible": false, 38 38 "decorations": false, 39 - "transparent": true, 40 - "titleBarStyle": "Transparent" 39 + "transparent": true 41 40 } 42 41 ] 43 42 }
+24 -78
src/Components/SettingsMenu.tsx
··· 206 206 </label> 207 207 </div> 208 208 209 - <div class="selector"> 210 - <input type="checkbox" id="start-with-win-check" ref={async ( el ) => { 211 - el.checked = await invoke('get_config_value_string', { key: 'start-with-win' }) === "true" ? true : false; 212 - }} onChange={( el ) => { 213 - if(el.target.checked){ 214 - invoke('set_config_value_string', { key: 'start-with-win', value: 'true' }); 215 - invoke("start_with_win", { start: true }); 216 - } else{ 217 - invoke('set_config_value_string', { key: 'start-with-win', value: 'false' }); 218 - invoke("start_with_win", { start: false }); 219 - } 220 - }} /> 221 - Start with windows 209 + <Show when={window.OS === 'windows'}> 210 + <div class="selector"> 211 + <input type="checkbox" id="start-with-win-check" ref={async ( el ) => { 212 + el.checked = await invoke('get_config_value_string', { key: 'start-with-win' }) === "true" ? true : false; 213 + }} onChange={( el ) => { 214 + if(el.target.checked){ 215 + invoke('set_config_value_string', { key: 'start-with-win', value: 'true' }); 216 + invoke("start_with_win", { start: true }); 217 + } else{ 218 + invoke('set_config_value_string', { key: 'start-with-win', value: 'false' }); 219 + invoke("start_with_win", { start: false }); 220 + } 221 + }} /> 222 + Start with windows 222 223 223 - <label for="start-with-win-check"> 224 - <div class="selection-box"> 225 - <div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}> 226 - <img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img> 224 + <label for="start-with-win-check"> 225 + <div class="selection-box"> 226 + <div class="icon" style={{ width: '10px', margin: '0', display: 'inline-flex' }}> 227 + <img draggable="false" width="10" height="10" src="/icon/check-solid.svg"></img> 228 + </div> 227 229 </div> 228 - </div> 229 - </label> 230 - </div> 230 + </label> 231 + </div> 232 + </Show> 231 233 232 234 <div class="selector"> 233 235 <input type="checkbox" id="transparent-check" ref={async ( el ) => { ··· 315 317 <p>VRChat Photo Manager supports photos with extra metadata provided by VRCX.</p> 316 318 </div> 317 319 <div class="settings-block"> 318 - <h1>Account Settings</h1> 319 - 320 - <Show when={window.AccountManager.hasAccount()} fallback={ 321 - <div> 322 - You aren't logged in. To enable cloud sync and sharing features you need to login to your PhazeID.<br /><br /> 323 - <div class="button" onClick={() => { 324 - window.AccountManager.login(); 325 - }}>Login</div> 326 - </div> 327 - }> 328 - <div class="account-profile"> 329 - <div class="account-pfp" style={{ background: `url('https://cdn.phazed.xyz/id/avatars/${window.AccountManager.Profile()?.id}/${window.AccountManager.Profile()?.avatar}.png')` }}></div> 330 - <div class="account-desc"> 331 - <div class="reload-photos" onClick={() => window.AccountManager.Refresh()} style={{ opacity: 1 }}> 332 - <div class="icon" style={{ width: '17px' }}> 333 - <img draggable="false" width="17" height="17" src="/icon/arrows-rotate-solid.svg"></img> 334 - </div> 335 - </div> 336 - <h2>{ window.AccountManager.Profile()?.username }</h2> 337 - 338 - <Show when={window.AccountManager.Storage()?.isSyncing}> 339 - <div class="storage-bar"> 340 - <div class="storage-bar-inner" style={{ width: ((window.AccountManager.Storage()!.used / window.AccountManager.Storage()!.total) * 100) + '%' }}></div> 341 - </div> 342 - 343 - <div> 344 - { bytesToFormatted(window.AccountManager.Storage()!.used, 0) } / { bytesToFormatted(window.AccountManager.Storage()!.total, 0) }<br /><br /> 345 - 346 - <span style={{ 'font-size': '10px' }}>Server Version: { window.AccountManager.Profile()?.serverVersion }</span> 347 - </div> 348 - </Show> 349 - </div> 350 - </div> 351 - 352 - <div class="account-notice">To enable cloud storage or get more storage please contact "_phaz" on discord</div> 353 - 354 - <div class="account-notice" style={{ display: 'flex' }}> 355 - <Show when={false} fallback={ "We are deleting your photos, please leave this window open while we delete them." }> 356 - <div class="button-danger" onClick={() => window.ConfirmationBoxManager.SetConfirmationBox("You are about to delete all your photos from the cloud, and disable syncing. This will NOT delete any local files.", async () => { 357 - // TODO: Rework all of this 358 - 359 - // props.setStorageInfo({ used: 0, storage: 0, sync: false }); 360 - // setDeletingPhotos(true); 361 - 362 - // fetch('https://photos-cdn.phazed.xyz/api/v1/allphotos', { 363 - // method: 'DELETE', 364 - // headers: { auth: (await invoke('get_config_value_string', { key: 'token' }))! } 365 - // }) 366 - // .then(data => data.json()) 367 - // .then(data => { 368 - // console.log(data); 369 - // setDeletingPhotos(false); 370 - // }) 371 - })}>Delete All Photos.</div> <div>This deletes all photos stored in the cloud and disables syncing.</div> 372 - </Show> 373 - </div> 374 - </Show> 320 + <p>WIP</p> 375 321 </div> 376 322 </div> 377 323 ··· 386 332 <div class="slider-text" onMouseDown={() => lastClickedButton = 0}>Program Settings</div> 387 333 <div class="slider-dot"></div> 388 334 <div class="slider-dot"></div> 389 - <div class="slider-text" onMouseDown={() => lastClickedButton = 1}>Account Settings</div> 335 + <div class="slider-text" onMouseDown={() => lastClickedButton = 1}>Sync Settings</div> 390 336 <div class="slider-dot"></div> 391 337 <div class="slider-dot"></div> 392 338 <div class="slider-dot"></div>