11import { saveAs } from 'file-saver' ;
2+ import { push } from 'connected-react-router' ;
23import {
3- newBuildErrorAction ,
4+ newErrorAction ,
45 newBuildResultAction ,
56 newImportFileAction ,
67 newLoadingAction ,
@@ -37,23 +38,35 @@ export function newImportFileDispatcher(f: File): Dispatcher {
3738}
3839
3940export function newSnippetLoadDispatcher ( snippetID : string ) : Dispatcher {
40- return async ( dispatch : DispatchFn , getState : StateProvider ) => {
41- console . log ( 'load snippet %s' , snippetID ) ;
41+ return async ( dispatch : DispatchFn , _ : StateProvider ) => {
4242 if ( ! snippetID ) {
4343 dispatch ( newImportFileAction ( 'prog.go' , DEMO_CODE ) ) ;
4444 return ;
4545 }
4646
4747 try {
48+ console . log ( 'loading snippet %s' , snippetID ) ;
4849 const resp = await client . getSnippet ( snippetID ) ;
4950 const { fileName, code } = resp ;
5051 dispatch ( newImportFileAction ( fileName , code ) ) ;
5152 } catch ( err ) {
52- dispatch ( newBuildErrorAction ( err . message ) ) ;
53+ dispatch ( newErrorAction ( err . message ) ) ;
5354 }
5455 }
5556}
5657
58+ export const shareSnippetDispatcher : Dispatcher =
59+ async ( dispatch : DispatchFn , getState : StateProvider ) => {
60+ dispatch ( newLoadingAction ( ) ) ;
61+ try {
62+ const { code} = getState ( ) . editor ;
63+ const res = await client . shareSnippet ( code ) ;
64+ dispatch ( push ( `/snippet/${ res . snippetID } ` ) ) ;
65+ } catch ( err ) {
66+ dispatch ( newErrorAction ( err . message ) ) ;
67+ }
68+ } ;
69+
5770export const saveFileDispatcher : Dispatcher =
5871 ( _ : DispatchFn , getState : StateProvider ) => {
5972 try {
@@ -74,7 +87,7 @@ export const runFileDispatcher: Dispatcher =
7487 const res = await client . evaluateCode ( code ) ;
7588 dispatch ( newBuildResultAction ( res ) ) ;
7689 } catch ( err ) {
77- dispatch ( newBuildErrorAction ( err . message ) ) ;
90+ dispatch ( newErrorAction ( err . message ) ) ;
7891 }
7992 } ;
8093
@@ -89,7 +102,7 @@ export const formatFileDispatcher: Dispatcher =
89102 dispatch ( newBuildResultAction ( res ) ) ;
90103 }
91104 } catch ( err ) {
92- dispatch ( newBuildErrorAction ( err . message ) ) ;
105+ dispatch ( newErrorAction ( err . message ) ) ;
93106 }
94107 } ;
95108
0 commit comments