Add fastresume to desktop app

This commit is contained in:
Igor Katson 2024-08-21 22:58:02 +01:00
parent e8ef1f170d
commit eb2b9e5a41
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
5 changed files with 22 additions and 1 deletions

View file

@ -53,6 +53,9 @@ pub struct RqbitDesktopConfigPersistence {
#[serde(default)]
pub folder: PathBuf,
#[serde(default)]
pub fastresume: bool,
/// Deprecated, but keeping for backwards compat for serialized / deserialized config.
#[serde(default)]
pub filename: PathBuf,
@ -77,6 +80,7 @@ impl Default for RqbitDesktopConfigPersistence {
Self {
disable: false,
folder,
fastresume: false,
filename: PathBuf::new(),
}
}

View file

@ -101,6 +101,7 @@ async fn api_from_config(
None
},
enable_upnp_port_forwarding: !config.upnp.disable,
fastresume: config.persistence.fastresume,
..Default::default()
},
)
@ -138,7 +139,13 @@ impl State {
.to_owned();
if let Ok(config) = read_config(&config_filename) {
let api = api_from_config(&init_logging, &config).await.ok();
let api = api_from_config(&init_logging, &config)
.await
.map_err(|e| {
warn!(error=?e, "error reading configuration");
e
})
.ok();
let shared = Arc::new(RwLock::new(Some(StateShared { config, api })));
return Self {

View file

@ -17,6 +17,7 @@ interface RqbitDesktopConfigTcpListen {
interface RqbitDesktopConfigPersistence {
disable: boolean;
folder: PathLike;
fastresume: boolean;
}
interface RqbitDesktopConfigPeerOpts {

View file

@ -299,6 +299,14 @@ export const ConfigModal: React.FC<{
onChange={handleInputChange}
disabled={config.persistence.disable}
/>
<FormCheck
label="Enable fast resume (experimental)"
name="persistence.fastresume"
checked={config.persistence.fastresume}
onChange={handleToggleChange}
help="If enabled, restarting will not rehash torrents, and thus will be faster. You should not modify the downloaded files in any way if you use that."
/>
</Fieldset>
</Tab>

View file

@ -19,6 +19,7 @@ async function get_current_config(): Promise<CurrentDesktopState> {
Promise.all([get_version(), get_default_config(), get_current_config()]).then(
([version, defaultConfig, currentState]) => {
console.log(version, defaultConfig, currentState);
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
<StrictMode>
<RqbitDesktop