1- use std:: { cell:: RefCell , rc:: Rc } ;
1+ use std:: {
2+ cell:: RefCell ,
3+ rc:: Rc ,
4+ sync:: { Arc , Mutex } ,
5+ } ;
26
37use leptos:: { html:: * , * } ;
48use leptos_use:: { use_document, use_event_listener} ;
@@ -8,19 +12,16 @@ use monaco::{
812} ;
913use wasm_bindgen:: { closure:: Closure , JsCast } ;
1014
11- use crate :: {
12- modals,
13- store:: { editor:: EditorStore , query:: QueryStore } ,
14- } ;
15+ use crate :: { modals, store:: tabs:: TabsStore } ;
1516
1617pub type ModelCell = Rc < RefCell < Option < CodeEditor > > > ;
1718
1819pub fn component ( ) -> impl IntoView {
19- let query_store = use_context :: < QueryStore > ( ) . unwrap ( ) ;
20- let run_query = create_action ( move |query_store : & QueryStore | {
21- let query_store = * query_store ;
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 ( ) ;
2223 async move {
23- query_store . run_query ( ) . await . unwrap ( ) ;
24+ tabs_store . lock ( ) . unwrap ( ) . run_query ( ) . await . unwrap ( ) ;
2425 }
2526 } ) ;
2627 let show = create_rw_signal ( false ) ;
@@ -29,14 +30,14 @@ pub fn component() -> impl IntoView {
2930 show. set ( false ) ;
3031 }
3132 } ) ;
32- let mut editors = use_context :: < EditorStore > ( ) . unwrap ( ) ;
3333 let node_ref = create_node_ref ( ) ;
34+ let tabs_store_clone = tabs_store. clone ( ) ;
3435 let _ = use_event_listener ( node_ref, ev:: keydown, move |event| {
3536 if event. key ( ) == "Enter" && event. ctrl_key ( ) {
36- run_query. dispatch ( query_store ) ;
37+ run_query. dispatch ( tabs_store_clone . clone ( ) ) ;
3738 }
3839 } ) ;
39-
40+ let tabs_store_clone = tabs_store . clone ( ) ;
4041 node_ref. on_load ( move |node| {
4142 let div_element: & web_sys:: HtmlDivElement = & node;
4243 let html_element = div_element. unchecked_ref :: < web_sys:: HtmlElement > ( ) ;
@@ -61,7 +62,7 @@ pub fn component() -> impl IntoView {
6162
6263 // TODO: Fix this
6364 let e = Rc :: new ( RefCell :: new ( Some ( e) ) ) ;
64- editors . add_editor ( e) ;
65+ tabs_store_clone . lock ( ) . unwrap ( ) . add_editor ( e) ;
6566 } ) ;
6667
6768 div ( )
@@ -85,7 +86,7 @@ pub fn component() -> impl IntoView {
8586 . child (
8687 button ( )
8788 . classes ( "p-1 border-1 border-neutral-200 bg-white hover:bg-neutral-200 rounded-md" )
88- . on ( ev:: click, move |_| run_query. dispatch ( query_store ) )
89+ . on ( ev:: click, move |_| run_query. dispatch ( tabs_store . clone ( ) ) )
8990 . child ( "Query" ) ,
9091 ) ,
9192 ) ,
0 commit comments