1- use std:: {
2- cell:: RefCell ,
3- rc:: Rc ,
4- sync:: { Arc , Mutex } ,
5- } ;
1+ use std:: { cell:: RefCell , rc:: Rc , sync:: Arc } ;
62
3+ use futures:: lock:: Mutex ;
74use leptos:: { html:: * , * } ;
85use leptos_use:: { use_document, use_event_listener} ;
96use monaco:: {
@@ -17,26 +14,15 @@ use crate::{modals, store::tabs::TabsStore};
1714pub type ModelCell = Rc < RefCell < Option < CodeEditor > > > ;
1815
1916pub 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 ( ) ) ) ;
2718 let show = create_rw_signal ( false ) ;
2819 let _ = use_event_listener ( use_document ( ) , ev:: keydown, move |event| {
2920 if event. key ( ) == "Escape" {
3021 show. set ( false ) ;
3122 }
3223 } ) ;
3324 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+
4026 let tabs_store_clone = tabs_store. clone ( ) ;
4127 node_ref. on_load ( move |node| {
4228 let div_element: & web_sys:: HtmlDivElement = & node;
@@ -62,7 +48,20 @@ pub fn component() -> impl IntoView {
6248
6349 // TODO: Fix this
6450 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+ }
6665 } ) ;
6766
6867 div ( )
0 commit comments