1
- use std:: {
2
- cell:: RefCell ,
3
- rc:: Rc ,
4
- sync:: { Arc , Mutex } ,
5
- } ;
1
+ use std:: { cell:: RefCell , rc:: Rc , sync:: Arc } ;
6
2
3
+ use futures:: lock:: Mutex ;
7
4
use leptos:: { html:: * , * } ;
8
5
use leptos_use:: { use_document, use_event_listener} ;
9
6
use monaco:: {
@@ -17,26 +14,15 @@ use crate::{modals, store::tabs::TabsStore};
17
14
pub type ModelCell = Rc < RefCell < Option < CodeEditor > > > ;
18
15
19
16
pub fn component ( ) -> impl IntoView {
20
- let tabs_store = Arc :: new ( Mutex :: new ( use_context :: < TabsStore > ( ) . unwrap ( ) ) ) ;
21
- let run_query = create_action ( move |tabs_store : & Arc < Mutex < TabsStore > > | {
22
- let tabs_store = tabs_store. clone ( ) ;
23
- async move {
24
- tabs_store. lock ( ) . unwrap ( ) . run_query ( ) . await . unwrap ( ) ;
25
- }
26
- } ) ;
17
+ let tabs_store = Rc :: new ( RefCell :: new ( use_context :: < TabsStore > ( ) . unwrap ( ) ) ) ;
27
18
let show = create_rw_signal ( false ) ;
28
19
let _ = use_event_listener ( use_document ( ) , ev:: keydown, move |event| {
29
20
if event. key ( ) == "Escape" {
30
21
show. set ( false ) ;
31
22
}
32
23
} ) ;
33
24
let node_ref = create_node_ref ( ) ;
34
- let tabs_store_clone = tabs_store. clone ( ) ;
35
- let _ = use_event_listener ( node_ref, ev:: keydown, move |event| {
36
- if event. key ( ) == "Enter" && event. ctrl_key ( ) {
37
- run_query. dispatch ( tabs_store_clone. clone ( ) ) ;
38
- }
39
- } ) ;
25
+
40
26
let tabs_store_clone = tabs_store. clone ( ) ;
41
27
node_ref. on_load ( move |node| {
42
28
let div_element: & web_sys:: HtmlDivElement = & node;
@@ -62,7 +48,20 @@ pub fn component() -> impl IntoView {
62
48
63
49
// TODO: Fix this
64
50
let e = Rc :: new ( RefCell :: new ( Some ( e) ) ) ;
65
- tabs_store_clone. lock ( ) . unwrap ( ) . add_editor ( e) ;
51
+ tabs_store_clone. borrow_mut ( ) . add_editor ( e) ;
52
+ } ) ;
53
+ let tabs_store = Arc :: new ( Mutex :: new ( use_context :: < TabsStore > ( ) . unwrap ( ) ) ) ;
54
+ let run_query = create_action ( move |tabs_store : & Arc < Mutex < TabsStore > > | {
55
+ let tabs_store = tabs_store. clone ( ) ;
56
+ async move {
57
+ tabs_store. lock ( ) . await . run_query ( ) . await . unwrap ( ) ;
58
+ }
59
+ } ) ;
60
+ let tabs_store_clone = tabs_store. clone ( ) ;
61
+ let _ = use_event_listener ( node_ref, ev:: keydown, move |event| {
62
+ if event. key ( ) == "Enter" && event. ctrl_key ( ) {
63
+ run_query. dispatch ( tabs_store_clone. clone ( ) ) ;
64
+ }
66
65
} ) ;
67
66
68
67
div ( )
0 commit comments