Skip to content
代码片段 群组 项目
提交 c74c9b3f 编辑于 作者: Jing Teng's avatar Jing Teng
浏览文件

pop Notify error dialogue when session creation fails.

A .zap configuration can fail to be loaded into the backend when the backend db is corrupt / etc.
BUG: ZAPP-489
上级 e1b66161
No related branches found
No related tags found
无相关合并请求
......@@ -197,11 +197,29 @@ function sendDirtyFlagStatus() {
)
}
/**
* Notify front-end that current session failed to load.
* @param {} err
*/
function sendSessionCreationErrorStatus(err) {
let { error, errorMessage, project} = err;
querySession.getAllSessions(env.mainDatabase()).then((sessions) =>
sessions.forEach((session) => {
let socket = wsServer.clientSocket(session.sessionKey)
if (socket) {
wsServer.sendWebSocketMessage(socket, {
category: dbEnum.wsCategory.sessionCreationError,
payload: err,
})
}
})
)
}
exports.getProjectInfo = getProjectInfo
// exports.addComponent = addComponent
// exports.removeComponent = removeComponent
exports.updateComponentByComponentIds = updateComponentByComponentIds
exports.updateComponentByClusterIdAndComponentId = updateComponentByClusterIdAndComponentId
exports.projectName = projectName
exports.initializeReporting = initializeReporting
exports.clearReporting = clearReporting
exports.sendSessionCreationErrorStatus = sendSessionCreationErrorStatus
......@@ -30,6 +30,10 @@ const http = require('http-status-codes')
const queryConfig = require('../db/query-config.js')
const dbEnum = require('../../src-shared/db-enum.js')
const { queryEndpoints } = require('../db/query-endpoint.js')
const webSocket = require('../server/ws-server.js')
const httpServer = require('../server/http-server.js')
const studio = require('../ide-integration/studio-rest-api.js')
/**
* HTTP GET: IDE open
*
......@@ -54,10 +58,10 @@ function httpGetIdeOpen(db) {
res.send(response)
})
.catch(function (err) {
let msg = `Studio: Failed to load project(${zapFile})`
env.logError(msg)
res.status(http.StatusCodes.BAD_REQUEST).send({ error: msg })
env.logError(err)
err.project = zapFile
studio.sendSessionCreationErrorStatus(err)
env.logError(JSON.stringify(err))
res.status(http.StatusCodes.BAD_REQUEST).send(err)
})
} else {
let msg = 'Opening/Loading project: Missing "project" query string'
......
......@@ -29,6 +29,7 @@ const querySession = require('../db/query-session.js')
const util = require('../util/util.js')
const webSocket = require('./ws-server.js')
const studio = require('../ide-integration/studio-rest-api.js')
const dbEnum = require('../../src-shared/db-enum.js')
const restApiModules = [
'../rest/admin.js',
......@@ -132,8 +133,12 @@ async function initHttpServer(db, port, studioPort) {
next()
})
.catch((err) => {
env.logError('Could not create session: ' + err.message)
env.logError(err)
let resp = {
error: 'Could not create session: ' + err.message,
errorMessage: err,
}
studio.sendSessionCreationErrorStatus(resp)
env.logError(resp)
})
}
})
......
......@@ -84,6 +84,7 @@ exports.pathRelativity = {
exports.wsCategory = {
generic: 'generic',
dirtyFlag: 'dirtyFlag',
sessionCreationError: 'sessionCreationError',
init: 'init',
tick: 'tick',
}
......
......@@ -17,6 +17,7 @@
import Vue from 'vue'
import Events from 'events'
import dbEnum from '../../src-shared/db-enum.js'
import { Notify } from 'quasar'
let eventEmitter = new Events.EventEmitter()
......@@ -102,8 +103,24 @@ onWebSocket(dbEnum.wsCategory.tick, (data) =>
onWebSocket(dbEnum.wsCategory.dirtyFlag, (data) => {
document.documentElement.setAttribute('isdirty', data)
console.log(`Dirty flag received: ${data}`)
}
)
})
onWebSocket(dbEnum.wsCategory.sessionCreationError, (data) => {
let html = `<center>
<strong>${data.error}</strong>
<br>
${data.errorMessage}
</center>`
Notify.create({
message: html,
color: 'negative',
position: 'top',
html: true,
timeout: 0,
})
console.log(`sessionCreationError: ${JSON.stringify(data)}`)
})
onWebSocket(dbEnum.wsCategory.generic, (data) =>
console.log(`Generic message received: ${JSON.stringify(data)}`)
......
0% 加载中 .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册