move onsuccess to it's own function
This commit is contained in:
parent
3bc4541390
commit
1d4d37b6ea
1 changed files with 71 additions and 78 deletions
|
@ -177,25 +177,55 @@ async fn fetch_resources(
|
|||
};
|
||||
let db_open_req = open_idb()?;
|
||||
|
||||
// On success callback
|
||||
let on_success = Closure::once(Box::new(move |event: Event| {
|
||||
let transaction: IdbObjectStore = as_idb_db(&event)
|
||||
let on_success = Closure::once(Box::new(move |event| {
|
||||
on_success(&event, &decrypted, &expires);
|
||||
}));
|
||||
|
||||
db_open_req.set_onsuccess(Some(on_success.into_js_value().unchecked_ref()));
|
||||
db_open_req.set_onerror(Some(
|
||||
Closure::once(Box::new(|e: Event| log!(e)))
|
||||
.into_js_value()
|
||||
.unchecked_ref(),
|
||||
));
|
||||
let on_upgrade = Closure::once(Box::new(move |event: Event| {
|
||||
let db = as_idb_db(&event);
|
||||
let _obj_store = db.create_object_store("decrypted data").unwrap();
|
||||
}));
|
||||
db_open_req.set_onupgradeneeded(Some(on_upgrade.into_js_value().unchecked_ref()));
|
||||
}
|
||||
Ok(resp) if resp.status() == StatusCode::NOT_FOUND => {
|
||||
render_message("Either the paste was burned or it never existed.".into());
|
||||
}
|
||||
Ok(resp) if resp.status() == StatusCode::BAD_REQUEST => {
|
||||
render_message("Invalid paste URL.".into());
|
||||
}
|
||||
Ok(err) => {
|
||||
render_message(err.status_text().into());
|
||||
}
|
||||
Err(err) => {
|
||||
render_message(format!("{}", err).into());
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn on_success(event: &Event, decrypted: &DecryptedData, expires: &str) {
|
||||
let transaction: IdbObjectStore = as_idb_db(event)
|
||||
.transaction_with_str_and_mode("decrypted data", IdbTransactionMode::Readwrite)
|
||||
.unwrap()
|
||||
.object_store("decrypted data")
|
||||
.unwrap();
|
||||
|
||||
let decrypted_object = match &decrypted {
|
||||
let decrypted_object = match decrypted {
|
||||
DecryptedData::String(s) => IdbObject::new()
|
||||
.string()
|
||||
.expiration_text(&expires)
|
||||
.expiration_text(expires)
|
||||
.data(&JsValue::from_str(s)),
|
||||
DecryptedData::Blob(blob) => {
|
||||
IdbObject::new().blob().expiration_text(&expires).data(blob)
|
||||
}
|
||||
DecryptedData::Blob(blob) => IdbObject::new().blob().expiration_text(expires).data(blob),
|
||||
DecryptedData::Image(blob, size) => IdbObject::new()
|
||||
.image()
|
||||
.expiration_text(&expires)
|
||||
.expiration_text(expires)
|
||||
.data(blob)
|
||||
.extra(
|
||||
"file_size",
|
||||
|
@ -203,17 +233,11 @@ async fn fetch_resources(
|
|||
.get_appropriate_unit(true)
|
||||
.to_string(),
|
||||
),
|
||||
DecryptedData::Audio(blob) => IdbObject::new()
|
||||
.audio()
|
||||
.expiration_text(&expires)
|
||||
.data(blob),
|
||||
DecryptedData::Video(blob) => IdbObject::new()
|
||||
.video()
|
||||
.expiration_text(&expires)
|
||||
.data(blob),
|
||||
DecryptedData::Audio(blob) => IdbObject::new().audio().expiration_text(expires).data(blob),
|
||||
DecryptedData::Video(blob) => IdbObject::new().video().expiration_text(expires).data(blob),
|
||||
DecryptedData::Archive(blob, entries) => IdbObject::new()
|
||||
.archive()
|
||||
.expiration_text(&expires)
|
||||
.expiration_text(expires)
|
||||
.data(blob)
|
||||
.extra(
|
||||
"entries",
|
||||
|
@ -247,35 +271,4 @@ async fn fetch_resources(
|
|||
.into_js_value()
|
||||
.unchecked_ref(),
|
||||
));
|
||||
}) as Box<dyn FnOnce(Event)>);
|
||||
|
||||
db_open_req.set_onsuccess(Some(on_success.into_js_value().unchecked_ref()));
|
||||
db_open_req.set_onerror(Some(
|
||||
Closure::wrap(Box::new(|e| {
|
||||
log!(e);
|
||||
}) as Box<dyn Fn(Event)>)
|
||||
.into_js_value()
|
||||
.unchecked_ref(),
|
||||
));
|
||||
let on_upgrade = Closure::wrap(Box::new(move |event: Event| {
|
||||
let db = as_idb_db(&event);
|
||||
let _obj_store = db.create_object_store("decrypted data").unwrap();
|
||||
}) as Box<dyn FnMut(Event)>);
|
||||
db_open_req.set_onupgradeneeded(Some(on_upgrade.into_js_value().unchecked_ref()));
|
||||
}
|
||||
Ok(resp) if resp.status() == StatusCode::NOT_FOUND => {
|
||||
render_message("Either the paste was burned or it never existed.".into());
|
||||
}
|
||||
Ok(resp) if resp.status() == StatusCode::BAD_REQUEST => {
|
||||
render_message("Invalid paste URL.".into());
|
||||
}
|
||||
Ok(err) => {
|
||||
render_message(err.status_text().into());
|
||||
}
|
||||
Err(err) => {
|
||||
render_message(format!("{}", err).into());
|
||||
}
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue