Skip to content

Commit f4e640e

Browse files
committed
Add SubscribeCallback
1 parent 6e7eb37 commit f4e640e

File tree

1 file changed

+35
-25
lines changed

1 file changed

+35
-25
lines changed

vault-wasm/src/web_vault.rs

Lines changed: 35 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ export interface FileStream {
3232

3333
#[wasm_bindgen]
3434
extern "C" {
35+
#[derive(Debug)]
36+
#[wasm_bindgen(typescript_type = "() => void")]
37+
pub type SubscribeCallback;
38+
3539
#[wasm_bindgen(typescript_type = "number[] | undefined")]
3640
pub type IdVecOption;
3741

@@ -147,9 +151,11 @@ pub fn to_js<In: serde::ser::Serialize + ?Sized, Out: From<JsValue> + Into<JsVal
147151
serde_wasm_bindgen::to_value(value).unwrap().into()
148152
}
149153

150-
pub fn to_cb(callback: js_sys::Function) -> Box<dyn Fn() + Send + Sync + 'static> {
154+
pub fn to_cb(callback: SubscribeCallback) -> Box<dyn Fn() + Send + Sync + 'static> {
155+
let callback_function: js_sys::Function = callback.dyn_into().unwrap();
156+
151157
let callback: Box<dyn Fn() + 'static> = Box::new(move || {
152-
callback.call0(&JsValue::undefined()).unwrap();
158+
callback_function.call0(&JsValue::undefined()).unwrap();
153159
});
154160

155161
let callback: Box<dyn Fn() + Send + Sync + 'static> = unsafe {
@@ -255,7 +261,7 @@ impl WebVault {
255261
// notifications
256262

257263
#[wasm_bindgen(js_name = notificationsSubscribe)]
258-
pub fn notifications_subscribe(&self, cb: js_sys::Function) -> u32 {
264+
pub fn notifications_subscribe(&self, cb: SubscribeCallback) -> u32 {
259265
self.base.notifications_subscribe(to_cb(cb))
260266
}
261267

@@ -283,7 +289,7 @@ impl WebVault {
283289
// dialogs
284290

285291
#[wasm_bindgen(js_name = dialogsSubscribe)]
286-
pub fn dialogs_subscribe(&self, cb: js_sys::Function) -> u32 {
292+
pub fn dialogs_subscribe(&self, cb: SubscribeCallback) -> u32 {
287293
self.base.dialogs_subscribe(to_cb(cb))
288294
}
289295

@@ -293,7 +299,7 @@ impl WebVault {
293299
}
294300

295301
#[wasm_bindgen(js_name = dialogsDialogSubscribe)]
296-
pub fn dialogs_dialog_subscribe(&self, dialog_id: u32, cb: js_sys::Function) -> u32 {
302+
pub fn dialogs_dialog_subscribe(&self, dialog_id: u32, cb: SubscribeCallback) -> u32 {
297303
self.base.dialogs_dialog_subscribe(dialog_id, to_cb(cb))
298304
}
299305

@@ -320,7 +326,7 @@ impl WebVault {
320326
// oauth2
321327

322328
#[wasm_bindgen(js_name = oauth2StatusSubscribe)]
323-
pub fn oauth2_status_subscribe(&self, cb: js_sys::Function) -> u32 {
329+
pub fn oauth2_status_subscribe(&self, cb: SubscribeCallback) -> u32 {
324330
self.base.oauth2_status_subscribe(to_cb(cb))
325331
}
326332

@@ -354,7 +360,7 @@ impl WebVault {
354360
// user
355361

356362
#[wasm_bindgen(js_name = userSubscribe)]
357-
pub fn user_subscribe(&self, cb: js_sys::Function) -> u32 {
363+
pub fn user_subscribe(&self, cb: SubscribeCallback) -> u32 {
358364
self.base.user_subscribe(to_cb(cb))
359365
}
360366

@@ -364,7 +370,7 @@ impl WebVault {
364370
}
365371

366372
#[wasm_bindgen(js_name = userProfilePictureLoadedSubscribe)]
367-
pub fn user_profile_picture_loaded_subscribe(&self, cb: js_sys::Function) -> u32 {
373+
pub fn user_profile_picture_loaded_subscribe(&self, cb: SubscribeCallback) -> u32 {
368374
self.base.user_profile_picture_loaded_subscribe(to_cb(cb))
369375
}
370376

@@ -397,7 +403,7 @@ impl WebVault {
397403
// repos
398404

399405
#[wasm_bindgen(js_name = reposSubscribe)]
400-
pub fn repos_subscribe(&self, cb: js_sys::Function) -> u32 {
406+
pub fn repos_subscribe(&self, cb: SubscribeCallback) -> u32 {
401407
self.base.repos_subscribe(to_cb(cb))
402408
}
403409

@@ -407,7 +413,7 @@ impl WebVault {
407413
}
408414

409415
#[wasm_bindgen(js_name = reposRepoSubscribe)]
410-
pub fn repos_repo_subscribe(&self, repo_id: String, cb: js_sys::Function) -> u32 {
416+
pub fn repos_repo_subscribe(&self, repo_id: String, cb: SubscribeCallback) -> u32 {
411417
self.base.repos_repo_subscribe(repo_id, to_cb(cb))
412418
}
413419

@@ -453,7 +459,7 @@ impl WebVault {
453459
}
454460

455461
#[wasm_bindgen(js_name = repoCreateInfoSubscribe)]
456-
pub fn repo_create_info_subscribe(&self, create_id: u32, cb: js_sys::Function) -> u32 {
462+
pub fn repo_create_info_subscribe(&self, create_id: u32, cb: SubscribeCallback) -> u32 {
457463
self.base.repo_create_info_subscribe(create_id, to_cb(cb))
458464
}
459465

@@ -531,7 +537,7 @@ impl WebVault {
531537
}
532538

533539
#[wasm_bindgen(js_name = repoUnlockInfoSubscribe)]
534-
pub fn repo_unlock_info_subscribe(&self, unlock_id: u32, cb: js_sys::Function) -> u32 {
540+
pub fn repo_unlock_info_subscribe(&self, unlock_id: u32, cb: SubscribeCallback) -> u32 {
535541
self.base.repo_unlock_info_subscribe(unlock_id, to_cb(cb))
536542
}
537543

@@ -558,7 +564,7 @@ impl WebVault {
558564
}
559565

560566
#[wasm_bindgen(js_name = repoRemoveInfoSubscribe)]
561-
pub fn repo_remove_info_subscribe(&self, remove_id: u32, cb: js_sys::Function) -> u32 {
567+
pub fn repo_remove_info_subscribe(&self, remove_id: u32, cb: SubscribeCallback) -> u32 {
562568
self.base.repo_remove_info_subscribe(remove_id, to_cb(cb))
563569
}
564570

@@ -585,7 +591,7 @@ impl WebVault {
585591
}
586592

587593
#[wasm_bindgen(js_name = repoSpaceUsageInfoSubscribe)]
588-
pub fn repo_space_usage_info_subscribe(&self, usage_id: u32, cb: js_sys::Function) -> u32 {
594+
pub fn repo_space_usage_info_subscribe(&self, usage_id: u32, cb: SubscribeCallback) -> u32 {
589595
self.base
590596
.repo_space_usage_info_subscribe(usage_id, to_cb(cb))
591597
}
@@ -608,7 +614,7 @@ impl WebVault {
608614
// repo_files
609615

610616
#[wasm_bindgen(js_name = repoFilesFileSubscribe)]
611-
pub fn repo_files_file_subscribe(&self, file_id: String, cb: js_sys::Function) -> u32 {
617+
pub fn repo_files_file_subscribe(&self, file_id: String, cb: SubscribeCallback) -> u32 {
612618
self.base.repo_files_file_subscribe(file_id, to_cb(cb))
613619
}
614620

@@ -635,7 +641,7 @@ impl WebVault {
635641
// transfers
636642

637643
#[wasm_bindgen(js_name = transfersIsActiveSubscribe)]
638-
pub fn transfers_is_active_subscribe(&self, cb: js_sys::Function) -> u32 {
644+
pub fn transfers_is_active_subscribe(&self, cb: SubscribeCallback) -> u32 {
639645
self.base.transfers_is_active_subscribe(to_cb(cb))
640646
}
641647

@@ -645,7 +651,7 @@ impl WebVault {
645651
}
646652

647653
#[wasm_bindgen(js_name = transfersSummarySubscribe)]
648-
pub fn transfers_summary_subscribe(&self, cb: js_sys::Function) -> u32 {
654+
pub fn transfers_summary_subscribe(&self, cb: SubscribeCallback) -> u32 {
649655
self.base.transfers_summary_subscribe(to_cb(cb))
650656
}
651657

@@ -655,7 +661,7 @@ impl WebVault {
655661
}
656662

657663
#[wasm_bindgen(js_name = transfersListSubscribe)]
658-
pub fn transfers_list_subscribe(&self, cb: js_sys::Function) -> u32 {
664+
pub fn transfers_list_subscribe(&self, cb: SubscribeCallback) -> u32 {
659665
self.base.transfers_list_subscribe(to_cb(cb))
660666
}
661667

@@ -692,7 +698,7 @@ impl WebVault {
692698
// dir_pickers
693699

694700
#[wasm_bindgen(js_name = dirPickersItemsSubscribe)]
695-
pub fn dir_pickers_items_subscribe(&self, picker_id: u32, cb: js_sys::Function) -> u32 {
701+
pub fn dir_pickers_items_subscribe(&self, picker_id: u32, cb: SubscribeCallback) -> u32 {
696702
self.base.dir_pickers_items_subscribe(picker_id, to_cb(cb))
697703
}
698704

@@ -726,7 +732,11 @@ impl WebVault {
726732
}
727733

728734
#[wasm_bindgen(js_name = repoFilesBrowsersInfoSubscribe)]
729-
pub fn repo_files_browsers_info_subscribe(&self, browser_id: u32, cb: js_sys::Function) -> u32 {
735+
pub fn repo_files_browsers_info_subscribe(
736+
&self,
737+
browser_id: u32,
738+
cb: SubscribeCallback,
739+
) -> u32 {
730740
self.base
731741
.repo_files_browsers_info_subscribe(browser_id, to_cb(cb))
732742
}
@@ -825,7 +835,7 @@ impl WebVault {
825835
}
826836

827837
#[wasm_bindgen(js_name = repoFilesDetailsInfoSubscribe)]
828-
pub fn repo_files_details_info_subscribe(&self, details_id: u32, cb: js_sys::Function) -> u32 {
838+
pub fn repo_files_details_info_subscribe(&self, details_id: u32, cb: SubscribeCallback) -> u32 {
829839
self.base
830840
.repo_files_details_info_subscribe(details_id, to_cb(cb))
831841
}
@@ -836,7 +846,7 @@ impl WebVault {
836846
}
837847

838848
#[wasm_bindgen(js_name = repoFilesDetailsFileSubscribe)]
839-
pub fn repo_files_details_file_subscribe(&self, details_id: u32, cb: js_sys::Function) -> u32 {
849+
pub fn repo_files_details_file_subscribe(&self, details_id: u32, cb: SubscribeCallback) -> u32 {
840850
self.base
841851
.repo_files_details_file_subscribe(details_id, to_cb(cb))
842852
}
@@ -850,7 +860,7 @@ impl WebVault {
850860
pub fn repo_files_details_content_bytes_subscribe(
851861
&self,
852862
details_id: u32,
853-
cb: js_sys::Function,
863+
cb: SubscribeCallback,
854864
) -> u32 {
855865
self.base
856866
.repo_files_details_content_bytes_subscribe(details_id, to_cb(cb))
@@ -903,7 +913,7 @@ impl WebVault {
903913
// repo_files_move
904914

905915
#[wasm_bindgen(js_name = repoFilesMoveInfoSubscribe)]
906-
pub fn repo_files_move_info_subscribe(&self, cb: js_sys::Function) -> u32 {
916+
pub fn repo_files_move_info_subscribe(&self, cb: SubscribeCallback) -> u32 {
907917
self.base.repo_files_move_info_subscribe(to_cb(cb))
908918
}
909919

@@ -936,7 +946,7 @@ impl WebVault {
936946
// space_usage
937947

938948
#[wasm_bindgen(js_name = spaceUsageSubscribe)]
939-
pub fn space_usage_subscribe(&self, cb: js_sys::Function) -> u32 {
949+
pub fn space_usage_subscribe(&self, cb: SubscribeCallback) -> u32 {
940950
self.base.space_usage_subscribe(to_cb(cb))
941951
}
942952

0 commit comments

Comments
 (0)