Moved notification settings to DB

This commit is contained in:
Henry Whitaker
2020-07-07 20:51:57 +01:00
parent f543e1345c
commit 4ef0303dff
25 changed files with 837 additions and 112 deletions

179
public/js/app.js vendored
View File

@@ -129337,8 +129337,7 @@ var HistoryGraph = /*#__PURE__*/function (_Component) {
_defineProperty(_assertThisInitialized(_this), "getData", function () {
var days = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _this.state.days;
axios__WEBPACK_IMPORTED_MODULE_2___default.a.get('api/settings/config').then(function (resp) {
var data = resp.data;
console.log(data);
var data = resp.data.graphs;
_this.setState({
graph_ul_dl_enabled: Boolean(Number(data.download_upload_graph_enabled.value)),
@@ -129412,10 +129411,6 @@ var HistoryGraph = /*#__PURE__*/function (_Component) {
var failData = this.state.failData;
var failOptions = this.state.failOptions;
var days = this.state.days;
console.log(failData);
console.log(failOptions);
console.log(pingData);
console.log(pingOptions);
var graph_ul_dl_enabled = this.state.graph_ul_dl_enabled;
var graph_ul_dl_width = this.state.graph_ul_dl_width;
var graph_ping_enabled = this.state.graph_ping_enabled;
@@ -130629,7 +130624,9 @@ var SettingWithModal = /*#__PURE__*/function (_Component) {
axios__WEBPACK_IMPORTED_MODULE_3___default.a.post(url, data).then(function (resp) {
react_toastify__WEBPACK_IMPORTED_MODULE_4__["toast"].success(_this.state.title + ' updated');
_this.toggleShow();
if (_this.state.autoClose) {
_this.toggleShow();
}
})["catch"](function (err) {
if (err.response.status == 422) {
react_toastify__WEBPACK_IMPORTED_MODULE_4__["toast"].error('Your input was invalid');
@@ -130682,7 +130679,8 @@ var SettingWithModal = /*#__PURE__*/function (_Component) {
title: _this.props.title,
description: _this.props.description,
settings: _this.props.settings,
show: false
show: false,
autoClose: _this.props.autoClose
};
return _this;
}
@@ -130716,71 +130714,125 @@ var SettingWithModal = /*#__PURE__*/function (_Component) {
name[0] = _this2.ucfirst(name[0]);
name = name.join(' ');
if (e.obj.description == null) {
var sm = {
span: 12
};
var md = {
span: 12
};
} else {
var sm = {
span: 12
};
var md = {
span: 6
};
}
var readonly = false;
if (window.config.editable[e.obj.name] == false) {
readonly = true;
}
if (e.type == 'checkbox') {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Row"], {
key: e.obj.id,
className: "d-flex align-items-center"
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: {
span: 6
},
sm: {
span: 12
}
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Group, {
controlId: e.obj.name
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Check, {
}, readonly ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Check, {
type: "checkbox",
disabled: true,
label: name,
defaultChecked: Boolean(Number(e.obj.value)),
onInput: _this2.updateValue
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Text, {
className: "text-muted"
}, "This setting is defined as an env variable and is not editable.")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Check, {
type: "checkbox",
label: name,
defaultChecked: Boolean(Number(e.obj.value)),
onInput: _this2.updateValue
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: {
span: 6
},
sm: {
span: 12
}
}))), e.description == null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", null, e.obj.description)));
} else if (e.type == 'number') {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Row"], {
key: e.obj.id
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: {
span: 6
},
sm: {
span: 12
}
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Group, {
controlId: e.obj.name
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Label, null, name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Label, null, name), readonly ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
type: "number",
disabled: true,
min: e.min,
max: e.max,
defaultValue: e.obj.value,
onInput: _this2.updateValue
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Text, {
className: "text-muted"
}, "This setting is defined as an env variable and is not editable.")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
type: "number",
min: e.min,
max: e.max,
defaultValue: e.obj.value,
onInput: _this2.updateValue
}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: {
span: 6
},
sm: {
span: 12
}
}))), e.description == null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", null, e.obj.description)));
} else if (e.type == 'text') {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Row"], {
key: e.obj.id
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Group, {
controlId: e.obj.name
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Label, null, name), readonly ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
type: "text",
disabled: true,
defaultValue: e.obj.value,
onInput: _this2.updateValue
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Text, {
className: "text-muted"
}, "This setting is defined as an env variable and is not editable.")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
type: "text",
defaultValue: e.obj.value,
onInput: _this2.updateValue
}))), e.description == null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", null, e.obj.description)));
} else if (e.type == 'select') {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Row"], {
key: e.obj.id
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: {
span: 6
},
sm: {
span: 12
}
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Group, {
controlId: e.obj.name
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Label, null, name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Label, null, name), readonly ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
as: "select",
disabled: true,
defaultValue: e.obj.value,
onInput: _this2.updateValue
}, e.options.map(function (e, i) {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("option", {
key: i,
value: e.value
}, e.name);
})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Text, {
className: "text-muted"
}, "This setting is defined as an env variable and is not editable.")) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Form"].Control, {
as: "select",
defaultValue: e.obj.value,
onInput: _this2.updateValue
@@ -130789,13 +130841,23 @@ var SettingWithModal = /*#__PURE__*/function (_Component) {
key: i,
value: e.value
}, e.name);
})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: {
span: 6
},
sm: {
span: 12
})))), e.description == null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", null, e.obj.description)));
} else if (e.type == 'button-get') {
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Row"], {
key: e.obj.id
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", null, name), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Button"], {
onClick: function onClick() {
axios__WEBPACK_IMPORTED_MODULE_3___default.a.get(e.url);
}
}, name)), e.description == null && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Col"], {
md: md,
sm: sm
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", null, e.obj.description)));
}
}), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_bootstrap__WEBPACK_IMPORTED_MODULE_2__["Button"], {
@@ -130952,6 +131014,7 @@ var Settings = /*#__PURE__*/function (_Component) {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_SettingWithModal__WEBPACK_IMPORTED_MODULE_6__["default"], {
title: "Graph settings",
description: "Control settings for the graphs.",
autoClose: true,
settings: [{
obj: e.download_upload_graph_enabled,
type: 'checkbox'
@@ -131005,7 +131068,25 @@ var Settings = /*#__PURE__*/function (_Component) {
}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_SettingWithModal__WEBPACK_IMPORTED_MODULE_6__["default"], {
title: "Notification settings",
description: "Control which types of notifications the server sends.",
autoClose: false,
settings: [{
obj: e.slack_webhook,
type: 'text'
}, {
obj: e.telegram_bot_token,
type: 'text'
}, {
obj: e.telegram_chat_id,
type: 'text'
}, {
obj: {
id: Math.floor(Math.random() * 10000) + 1,
name: "Test notifications",
description: "After saving your updated notification settings, use this to check your settings are correct."
},
type: 'button-get',
url: 'api/settings/test-notification'
}, {
obj: e.speedtest_notifications,
type: 'checkbox'
}, {