From 9d4047f21dbd207364f7b4e596f8ed5026bbe896 Mon Sep 17 00:00:00 2001 From: c9s Date: Sun, 21 Feb 2021 18:08:22 +0800 Subject: [PATCH] call sync api to check sync status --- frontend/api/bbgo.js | 6 ++++++ frontend/pages/_app.tsx | 48 +++++++++++++++++++++++++++++++++++++++-- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/frontend/api/bbgo.js b/frontend/api/bbgo.js index 84700149e..3feae9f61 100644 --- a/frontend/api/bbgo.js +++ b/frontend/api/bbgo.js @@ -8,6 +8,12 @@ export function ping(cb) { }); } +export function querySyncStatus(cb) { + return axios.get(baseURL + '/api/environment/syncing').then(response => { + cb(response.data.syncing) + }); +} + export function testDatabaseConnection(params, cb) { return axios.post(baseURL + '/api/setup/test-db', params).then(response => { cb(response.data) diff --git a/frontend/pages/_app.tsx b/frontend/pages/_app.tsx index b955454bc..1351101dd 100644 --- a/frontend/pages/_app.tsx +++ b/frontend/pages/_app.tsx @@ -4,21 +4,46 @@ import Head from 'next/head'; import {ThemeProvider} from '@material-ui/core/styles'; +import Dialog from '@material-ui/core/Dialog'; +import DialogContent from '@material-ui/core/DialogContent'; +import DialogContentText from '@material-ui/core/DialogContentText'; +import DialogTitle from '@material-ui/core/DialogTitle'; + import CssBaseline from '@material-ui/core/CssBaseline'; import theme from '../src/theme'; import '../styles/globals.css' +import {querySyncStatus} from "../api/bbgo"; export default function MyApp(props) { const {Component, pageProps} = props; + const [syncing, setSyncing] = React.useState(true) + React.useEffect(() => { // Remove the server-side injected CSS. const jssStyles = document.querySelector('#jss-server-side'); if (jssStyles) { jssStyles.parentElement.removeChild(jssStyles); } + + let poller = null + const pollSyncStatus = () => { + querySyncStatus((status) => { + setSyncing(status) + if (!status) { + clearInterval(poller) + } + }).catch((err) => { + console.error(err) + }) + } + poller = setInterval(pollSyncStatus, 1000) + + }, []); + const handleClose = (e) => {} + return ( @@ -28,8 +53,27 @@ export default function MyApp(props) { {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */} - - + { + syncing ? ( + + + {"Syncing Trades"} + + + The environment is syncing trades from the exchange sessions. + Please wait a moment... + + + + + ) : ( + + ) + } );