v1.6.4/release

-admin sources update
This commit is contained in:
2020-08-28 16:25:01 -04:00
parent 0b4b0a4a1c
commit 06890a0f44
+144 -212
View File
@@ -1,7 +1,7 @@
import React, { Component } from "react"; import React, { Component } from 'react';
import firebase from "firebase/app"; import firebase from 'firebase/app';
import "firebase/auth"; import 'firebase/auth';
import "firebase/firestore"; import 'firebase/firestore';
import { import {
Button, Button,
Card, Card,
@@ -21,7 +21,7 @@ import {
Collapse, Collapse,
Modal, Modal,
Select, Select,
} from "antd"; } from 'antd';
import { import {
getPartyDashboardData, getPartyDashboardData,
getServerDashboardData, getServerDashboardData,
@@ -29,7 +29,7 @@ import {
postUpdateVideoSelectors, postUpdateVideoSelectors,
postUpdateVideoNameSelectors, postUpdateVideoNameSelectors,
postSendMessage, postSendMessage,
} from "./Api"; } from './Api';
import { import {
CheckCircleTwoTone, CheckCircleTwoTone,
CloseCircleTwoTone, CloseCircleTwoTone,
@@ -43,42 +43,45 @@ import {
LogoutOutlined, LogoutOutlined,
SendOutlined, SendOutlined,
PlusCircleOutlined, PlusCircleOutlined,
} from "@ant-design/icons"; } from '@ant-design/icons';
const PLAYER_SOURCES = [ const PLAYER_SOURCES = [
{ text: "Netflix", value: "netflix." }, { text: 'Netflix', value: 'netflix.' },
{ text: "Amazon", value: "amazon." }, { text: 'Amazon', value: 'amazon.' },
{ text: "Hulu", value: "hulu." }, { text: 'Hulu', value: 'hulu.' },
{ text: "Disney+", value: "disneyplus." }, { text: 'Disney+', value: 'disneyplus.' },
{ text: "YouTube", value: "youtube." }, { text: 'YouTube', value: 'youtube.' },
{ text: "HBO Now", value: "hbonow." }, { text: 'HBO Now', value: 'hbonow.' },
{ text: "HBO Max", value: "hbomax." }, { text: 'HBO Max', value: 'hbomax.' },
{ text: "Peacock", value: "peacocktv." }, { text: 'Peacock', value: 'peacocktv.' },
{ text: "Google Play", value: "play.google." }, { text: 'Google Play', value: 'play.google.' },
{ text: "Crunchyroll", value: "crunchyroll." }, { text: 'Crunchyroll', value: 'crunchyroll.' },
{ text: 'Apple TV+', value: 'tv.apple.' },
{ text: 'Viki', value: 'viki.' },
{ text: 'Funimation', value: 'funimation.' },
]; ];
const MESSAGE_TYPES = [ const MESSAGE_TYPES = [
{ {
text: "REPLY", text: 'REPLY',
value: "interactive/text", value: 'interactive/text',
}, },
{ {
text: "LINK", text: 'LINK',
value: "interactive/link", value: 'interactive/link',
}, },
{ {
text: "MESSAGE", text: 'MESSAGE',
value: "", value: '',
}, },
]; ];
const emptyMessage = { const emptyMessage = {
type: "", type: '',
text: "", text: '',
uid: "<system>", uid: '<system>',
name: "", name: '',
endpoint: "", endpoint: '',
// time set on send, // time set on send,
}; };
@@ -87,7 +90,7 @@ export default class Dashboard extends Component {
super(props); super(props);
this.state = { this.state = {
partiesOverview: null, partiesOverview: null,
activeTab: "1", activeTab: '1',
refreshing: true, refreshing: true,
selectedParties: [], selectedParties: [],
nameSelectors: {}, nameSelectors: {},
@@ -120,12 +123,12 @@ export default class Dashboard extends Component {
this.setState({ refreshing: true }); this.setState({ refreshing: true });
const { activeTab } = this.state; const { activeTab } = this.state;
switch (activeTab) { switch (activeTab) {
case "1": case '1':
this.getPartiesOverview(); this.getPartiesOverview();
break; break;
case "2": case '2':
case "3": case '3':
case "4": case '4':
this.getVersionsOverview(); this.getVersionsOverview();
break; break;
default: default:
@@ -138,18 +141,14 @@ export default class Dashboard extends Component {
updateVersionMessage = (message, version) => { updateVersionMessage = (message, version) => {
this.setState({ refreshing: true }); this.setState({ refreshing: true });
const { versions } = this.state; const { versions } = this.state;
const versionData = versions.filter( const versionData = versions.filter((v) => v.version.split('.').join('') === version)[0];
(v) => v.version.split(".").join("") === version
)[0];
versionData.message = message; versionData.message = message;
this.updateVersion(version, versionData); this.updateVersion(version, versionData);
}; };
updateVersionActive = (active, version) => { updateVersionActive = (active, version) => {
this.setState({ refreshing: true }); this.setState({ refreshing: true });
const { versions } = this.state; const { versions } = this.state;
const versionData = versions.filter( const versionData = versions.filter((v) => v.version.split('.').join('') === version)[0];
(v) => v.version.split(".").join("") === version
)[0];
versionData.active = active; versionData.active = active;
this.updateVersion(version, versionData); this.updateVersion(version, versionData);
}; };
@@ -159,7 +158,7 @@ export default class Dashboard extends Component {
.catch((err) => .catch((err) =>
notification.error({ notification.error({
description: err.message, description: err.message,
message: "Unable To Update", message: 'Unable To Update',
}) })
); );
}; };
@@ -179,7 +178,7 @@ export default class Dashboard extends Component {
.catch((err) => { .catch((err) => {
notification.error({ notification.error({
description: err.message, description: err.message,
message: "Unable To Update", message: 'Unable To Update',
}); });
this.setState({ refreshing: false }); this.setState({ refreshing: false });
@@ -192,43 +191,32 @@ export default class Dashboard extends Component {
}; };
handleAlertTitleChange = (value, version, index) => { handleAlertTitleChange = (value, version, index) => {
const { versions } = this.state; const { versions } = this.state;
versions.filter((vs) => vs.version === version)[0].alerts[ versions.filter((vs) => vs.version === version)[0].alerts[index].title = value;
index
].title = value;
this.setState({ versions }); this.setState({ versions });
}; };
handleAlertDescriptionChange = (value, version, index) => { handleAlertDescriptionChange = (value, version, index) => {
const { versions } = this.state; const { versions } = this.state;
versions.filter((vs) => vs.version === version)[0].alerts[ versions.filter((vs) => vs.version === version)[0].alerts[index].description = value;
index
].description = value;
this.setState({ versions }); this.setState({ versions });
}; };
handleAlertLinkChange = (value, version, index) => { handleAlertLinkChange = (value, version, index) => {
const { versions } = this.state; const { versions } = this.state;
versions.filter((vs) => vs.version === version)[0].alerts[ versions.filter((vs) => vs.version === version)[0].alerts[index].link = value;
index
].link = value;
this.setState({ versions }); this.setState({ versions });
}; };
handleAlertLinkTextChange = (value, version, index) => { handleAlertLinkTextChange = (value, version, index) => {
const { versions } = this.state; const { versions } = this.state;
versions.filter((vs) => vs.version === version)[0].alerts[ versions.filter((vs) => vs.version === version)[0].alerts[index].linkText = value;
index
].linkText = value;
this.setState({ versions }); this.setState({ versions });
}; };
deleteAlert = (version, index) => { deleteAlert = (version, index) => {
const { versions } = this.state; const { versions } = this.state;
versions.filter((vs) => vs.version === version)[0].alerts.splice(index, 1); versions.filter((vs) => vs.version === version)[0].alerts.splice(index, 1);
if ( if (
versions.filter((vs) => vs.version === version)[0].importantAlert === versions.filter((vs) => vs.version === version)[0].importantAlert === index ||
index ||
versions.filter((vs) => vs.version === version)[0].alerts.length < index versions.filter((vs) => vs.version === version)[0].alerts.length < index
) { ) {
versions.filter( versions.filter((vs) => vs.version === version)[0].importantAlert = undefined;
(vs) => vs.version === version
)[0].importantAlert = undefined;
} }
this.setState({ versions }); this.setState({ versions });
}; };
@@ -237,10 +225,10 @@ export default class Dashboard extends Component {
versions versions
.filter((vs) => vs.version === version)[0] .filter((vs) => vs.version === version)[0]
.alerts.push({ .alerts.push({
title: "", title: '',
description: "", description: '',
link: "", link: '',
linkText: "", linkText: '',
}); });
this.setState({ versions }); this.setState({ versions });
}; };
@@ -248,12 +236,11 @@ export default class Dashboard extends Component {
this.setState({ refreshing: true }); this.setState({ refreshing: true });
const { versions } = this.state; const { versions } = this.state;
const versionData = versions.filter((v) => v.version === version)[0]; const versionData = versions.filter((v) => v.version === version)[0];
if (versionData.alerts.length > 0) if (versionData.alerts.length > 0) this.updateVersion(version.split('.').join(''), versionData);
this.updateVersion(version.split(".").join(""), versionData);
else { else {
notification.error({ notification.error({
message: "Missing Alerts", message: 'Missing Alerts',
description: "Must have atleast one alert", description: 'Must have atleast one alert',
}); });
this.setState({ refreshing: false }); this.setState({ refreshing: false });
@@ -262,9 +249,7 @@ export default class Dashboard extends Component {
changeImportantAlert = (active, version, index) => { changeImportantAlert = (active, version, index) => {
const { versions } = this.state; const { versions } = this.state;
if (active === false) { if (active === false) {
versions.filter( versions.filter((vs) => vs.version === version)[0].importantAlert = undefined;
(vs) => vs.version === version
)[0].importantAlert = undefined;
} else { } else {
versions.filter((vs) => vs.version === version)[0].importantAlert = index; versions.filter((vs) => vs.version === version)[0].importantAlert = index;
} }
@@ -273,16 +258,16 @@ export default class Dashboard extends Component {
getAddMessageText = () => { getAddMessageText = () => {
const { activeTab } = this.state; const { activeTab } = this.state;
switch (activeTab) { switch (activeTab) {
case "1": case '1':
return "Send Message"; return 'Send Message';
case "2": case '2':
return "Add Version"; return 'Add Version';
case "3": case '3':
return "Add Video Selector"; return 'Add Video Selector';
case "4": case '4':
return "Add Name Selector"; return 'Add Name Selector';
default: default:
return ""; return '';
} }
}; };
getPrettyTime = (t) => { getPrettyTime = (t) => {
@@ -303,7 +288,7 @@ export default class Dashboard extends Component {
.catch((err) => { .catch((err) => {
notification.error({ notification.error({
description: err.message, description: err.message,
message: "Unable To Update", message: 'Unable To Update',
}); });
this.setState({ refreshing: false }); this.setState({ refreshing: false });
@@ -312,7 +297,7 @@ export default class Dashboard extends Component {
sendOrAdd = () => { sendOrAdd = () => {
const { activeTab } = this.state; const { activeTab } = this.state;
switch (activeTab) { switch (activeTab) {
case "1": case '1':
this.setState({ messageModel: true }); this.setState({ messageModel: true });
break; break;
default: default:
@@ -331,17 +316,17 @@ export default class Dashboard extends Component {
await postSendMessage({ selectedParties, newMessage }).catch((err) => { await postSendMessage({ selectedParties, newMessage }).catch((err) => {
notification.error({ notification.error({
description: err.message, description: err.message,
message: "Unable To Send Message", message: 'Unable To Send Message',
}); });
}); });
this.setState({ this.setState({
refreshing: false, refreshing: false,
newMessage: { newMessage: {
type: "", type: '',
text: "", text: '',
uid: "<system>", uid: '<system>',
name: "", name: '',
endpoint: "", endpoint: '',
}, },
messageModel: false, messageModel: false,
}); });
@@ -363,62 +348,57 @@ export default class Dashboard extends Component {
const partiesColumns = [ const partiesColumns = [
{ {
title: "Party Name", title: 'Party Name',
dataIndex: "id", dataIndex: 'id',
sorter: (a, b) => (a.id.toLowerCase() < b.id.toLowerCase() ? -1 : 1), sorter: (a, b) => (a.id.toLowerCase() < b.id.toLowerCase() ? -1 : 1),
}, },
{ {
title: "Source", title: 'Source',
dataIndex: "source", dataIndex: 'source',
sorter: (a, b) => sorter: (a, b) => (a.source.toLowerCase() < b.source.toLowerCase() ? -1 : 1),
a.source.toLowerCase() < b.source.toLowerCase() ? -1 : 1,
filters: [ filters: [
...PLAYER_SOURCES, ...PLAYER_SOURCES,
{ {
text: "Is Playing", text: 'Is Playing',
value: "PLAYING", value: 'PLAYING',
}, },
{ {
text: "Is Paused", text: 'Is Paused',
value: "PAUSED", value: 'PAUSED',
}, },
], ],
onFilter: (v, r) => r.source === v || r.status === v, onFilter: (v, r) => r.source === v || r.status === v,
render: (a, r) => ( render: (a, r) => (
<Badge <Badge
status={ status={
r.status === "PLAYING" r.status === 'PLAYING' ? 'success' : r.status === 'PAUSED' ? 'warning' : 'error'
? "success"
: r.status === "PAUSED"
? "warning"
: "error"
} }
text={this.getSourceName(a)} text={this.getSourceName(a)}
/> />
), ),
}, },
{ {
title: "Created At", title: 'Created At',
dataIndex: "createTime", dataIndex: 'createTime',
defaultSortOrder: "descend", defaultSortOrder: 'descend',
sorter: (a, b) => Date.parse(a.createTime) - Date.parse(b.createTime), sorter: (a, b) => Date.parse(a.createTime) - Date.parse(b.createTime),
render: (a) => new Date(Date.parse(a)).toLocaleString(), render: (a) => new Date(Date.parse(a)).toLocaleString(),
}, },
{ {
title: "Updated At", title: 'Updated At',
dataIndex: "updateTime", dataIndex: 'updateTime',
filters: [ filters: [
{ {
text: "Active", text: 'Active',
value: "a", value: 'a',
}, },
{ {
text: "Inactive", text: 'Inactive',
value: "i", value: 'i',
}, },
], ],
onFilter: (v, r) => onFilter: (v, r) =>
v === "a" v === 'a'
? (Date.now() - Date.parse(r.updateTime)) / 60000 < afkLimit ? (Date.now() - Date.parse(r.updateTime)) / 60000 < afkLimit
: (Date.now() - Date.parse(r.updateTime)) / 60000 > afkLimit, : (Date.now() - Date.parse(r.updateTime)) / 60000 > afkLimit,
sorter: (a, b) => Date.parse(a.updateTime) - Date.parse(b.updateTime), sorter: (a, b) => Date.parse(a.updateTime) - Date.parse(b.updateTime),
@@ -428,11 +408,7 @@ export default class Dashboard extends Component {
return ( return (
<Tag <Tag
color={ color={
minutes <= activeLimit minutes <= activeLimit ? 'success' : minutes <= afkLimit ? 'processing' : 'default'
? "success"
: minutes <= afkLimit
? "processing"
: "default"
} }
> >
{dS} {dS}
@@ -441,15 +417,15 @@ export default class Dashboard extends Component {
}, },
}, },
{ {
title: "On Call", title: 'On Call',
dataIndex: "onCall", dataIndex: 'onCall',
filters: [ filters: [
{ {
text: "On Call", text: 'On Call',
value: true, value: true,
}, },
{ {
text: "Not On Call", text: 'Not On Call',
value: false, value: false,
}, },
], ],
@@ -465,23 +441,22 @@ export default class Dashboard extends Component {
const versionsColumns = [ const versionsColumns = [
{ {
title: "Version", title: 'Version',
dataIndex: "version", dataIndex: 'version',
defaultSortOrder: "descend", defaultSortOrder: 'descend',
sorter: (a, b) => sorter: (a, b) =>
parseInt(a.version.split(".").join("")) - parseInt(a.version.split('.').join('')) - parseInt(b.version.split('.').join('')),
parseInt(b.version.split(".").join("")),
}, },
{ {
title: "Active", title: 'Active',
dataIndex: "active", dataIndex: 'active',
filters: [ filters: [
{ {
text: "Active", text: 'Active',
value: true, value: true,
}, },
{ {
text: "Inactive", text: 'Inactive',
value: false, value: false,
}, },
], ],
@@ -489,22 +464,18 @@ export default class Dashboard extends Component {
render: (a, r) => ( render: (a, r) => (
<Switch <Switch
disabled={refreshing} disabled={refreshing}
onChange={(c) => onChange={(c) => this.updateVersionActive(c, r.version.split('.').join(''))}
this.updateVersionActive(c, r.version.split(".").join(""))
}
checked={a} checked={a}
/> />
), ),
}, },
{ {
title: "Inactive Message", title: 'Inactive Message',
dataIndex: "message", dataIndex: 'message',
render: (a, r) => ( render: (a, r) => (
<Input.Search <Input.Search
disabled={refreshing} disabled={refreshing}
onSearch={(v) => onSearch={(v) => this.updateVersionMessage(v, r.version.split('.').join(''))}
this.updateVersionMessage(v, r.version.split(".").join(""))
}
value={a} value={a}
onChange={(e) => this.handleVersionMessageChange(e, r.version)} onChange={(e) => this.handleVersionMessageChange(e, r.version)}
enterButton={<EnterOutlined />} enterButton={<EnterOutlined />}
@@ -547,7 +518,7 @@ export default class Dashboard extends Component {
okText="Send Message" okText="Send Message"
> >
<Select <Select
onChange={(e) => this.editMessage(e, "type")} onChange={(e) => this.editMessage(e, 'type')}
value={newMessage.type} value={newMessage.type}
placeholder="Message Type" placeholder="Message Type"
disabled={refreshing} disabled={refreshing}
@@ -561,25 +532,22 @@ export default class Dashboard extends Component {
<Input.TextArea <Input.TextArea
disabled={refreshing} disabled={refreshing}
value={newMessage.text} value={newMessage.text}
onChange={(e) => this.editMessage(e.target.value, "text")} onChange={(e) => this.editMessage(e.target.value, 'text')}
placeholder="Message" placeholder="Message"
/> />
{(newMessage.type === "interactive/link" || {(newMessage.type === 'interactive/link' || newMessage.type === 'interactive/text') && (
newMessage.type === "interactive/text") && (
<Input <Input
disabled={refreshing} disabled={refreshing}
value={newMessage.endpoint} value={newMessage.endpoint}
onChange={(e) => this.editMessage(e.target.value, "endpoint")} onChange={(e) => this.editMessage(e.target.value, 'endpoint')}
placeholder={ placeholder={newMessage.type === 'interactive/link' ? 'Link' : 'Endpoint'}
newMessage.type === "interactive/link" ? "Link" : "Endpoint"
}
/> />
)} )}
{newMessage.type === "interactive/link" && ( {newMessage.type === 'interactive/link' && (
<Input <Input
disabled={refreshing} disabled={refreshing}
value={newMessage.name} value={newMessage.name}
onChange={(e) => this.editMessage(e.target.value, "name")} onChange={(e) => this.editMessage(e.target.value, 'name')}
placeholder="Link Text" placeholder="Link Text"
/> />
)} )}
@@ -587,7 +555,7 @@ export default class Dashboard extends Component {
<Card> <Card>
<PageHeader <PageHeader
extra={[ extra={[
activeTab === "1" && ( activeTab === '1' && (
<Badge key="5" count="ACTIVE" className="active"> <Badge key="5" count="ACTIVE" className="active">
<InputNumber <InputNumber
prefix="Active" prefix="Active"
@@ -596,7 +564,7 @@ export default class Dashboard extends Component {
/> />
</Badge> </Badge>
), ),
activeTab === "1" && ( activeTab === '1' && (
<Badge key="4" count="AFK" className="afk"> <Badge key="4" count="AFK" className="afk">
<InputNumber <InputNumber
prefix="AFK" prefix="AFK"
@@ -617,14 +585,12 @@ export default class Dashboard extends Component {
<Button <Button
key="2" key="2"
onClick={this.sendOrAdd} onClick={this.sendOrAdd}
icon={ icon={activeTab === '1' ? <SendOutlined /> : <PlusCircleOutlined />}
activeTab === "1" ? <SendOutlined /> : <PlusCircleOutlined /> disabled={activeTab === '1' && selectedParties.length === 0}
}
disabled={activeTab === "1" && selectedParties.length === 0}
> >
{this.getAddMessageText()} {this.getAddMessageText()}
</Button>, </Button>,
activeTab === "3" && ( activeTab === '3' && (
<Button <Button
type="primary" type="primary"
onClick={this.updateVideoSelector} onClick={this.updateVideoSelector}
@@ -635,7 +601,7 @@ export default class Dashboard extends Component {
Save Video Selectors Save Video Selectors
</Button> </Button>
), ),
activeTab === "4" && ( activeTab === '4' && (
<Button <Button
type="primary" type="primary"
onClick={this.updateVideoNameSelector} onClick={this.updateVideoNameSelector}
@@ -653,12 +619,11 @@ export default class Dashboard extends Component {
<Table <Table
rowSelection={{ rowSelection={{
selectedRowKeys: selectedParties, selectedRowKeys: selectedParties,
onChange: (selectedParties) => onChange: (selectedParties) => this.setState({ selectedParties }),
this.setState({ selectedParties }),
}} }}
loading={partiesOverview === null || refreshing} loading={partiesOverview === null || refreshing}
pagination={{ pagination={{
position: ["bottomCenter"], position: ['bottomCenter'],
total: partiesOverview ? partiesOverview.length : 0, total: partiesOverview ? partiesOverview.length : 0,
showTotal: (t, r) => `${r[0]} to ${r[1]} of ${t}`, showTotal: (t, r) => `${r[0]} to ${r[1]} of ${t}`,
defaultPageSize: 10, defaultPageSize: 10,
@@ -670,7 +635,7 @@ export default class Dashboard extends Component {
columns={partiesColumns} columns={partiesColumns}
expandable={{ expandable={{
rowExpandable: (r) => true, rowExpandable: (r) => true,
expandedRowClassName: () => "party-details-wrapper", expandedRowClassName: () => 'party-details-wrapper',
expandedRowRender: (r) => ( expandedRowRender: (r) => (
<Descriptions bordered column={5}> <Descriptions bordered column={5}>
<Descriptions.Item span={2} label="# Of Users"> <Descriptions.Item span={2} label="# Of Users">
@@ -688,11 +653,11 @@ export default class Dashboard extends Component {
<Descriptions.Item span={3} label="Show Status"> <Descriptions.Item span={3} label="Show Status">
<Badge <Badge
status={ status={
r.status === "PLAYING" r.status === 'PLAYING'
? "success" ? 'success'
: r.status === "PAUSED" : r.status === 'PAUSED'
? "warning" ? 'warning'
: "error" : 'error'
} }
text={r.status} text={r.status}
/> />
@@ -705,13 +670,13 @@ export default class Dashboard extends Component {
<Tabs.TabPane tab="Versions" key="2"> <Tabs.TabPane tab="Versions" key="2">
<Table <Table
loading={refreshing} loading={refreshing}
pagination={{ position: ["bottomCenter"] }} pagination={{ position: ['bottomCenter'] }}
rowKey={(p) => p.version} rowKey={(p) => p.version}
dataSource={versions} dataSource={versions}
columns={versionsColumns} columns={versionsColumns}
expandable={{ expandable={{
rowExpandable: (r) => r.alerts, rowExpandable: (r) => r.alerts,
expandedRowClassName: () => "alerts-wrapper", expandedRowClassName: () => 'alerts-wrapper',
expandedRowRender: (r) => ( expandedRowRender: (r) => (
<Row> <Row>
{r.alerts.map((a, i) => ( {r.alerts.map((a, i) => (
@@ -727,15 +692,9 @@ export default class Dashboard extends Component {
/>, />,
<Switch <Switch
onClick={(active) => onClick={(active) =>
this.changeImportantAlert( this.changeImportantAlert(active, r.version, i)
active,
r.version,
i
)
}
checked={
r.importantAlert && r.importantAlert === i
} }
checked={r.importantAlert && r.importantAlert === i}
/>, />,
]} ]}
> >
@@ -743,11 +702,7 @@ export default class Dashboard extends Component {
placeholder="title" placeholder="title"
value={a.title} value={a.title}
onChange={(e) => onChange={(e) =>
this.handleAlertTitleChange( this.handleAlertTitleChange(e.target.value, r.version, i)
e.target.value,
r.version,
i
)
} }
/> />
<Input.TextArea <Input.TextArea
@@ -755,11 +710,7 @@ export default class Dashboard extends Component {
autoSize={{ minRows: 2, maxRows: 2 }} autoSize={{ minRows: 2, maxRows: 2 }}
value={a.description} value={a.description}
onChange={(e) => onChange={(e) =>
this.handleAlertDescriptionChange( this.handleAlertDescriptionChange(e.target.value, r.version, i)
e.target.value,
r.version,
i
)
} }
/> />
<Divider orientation="left">Link</Divider> <Divider orientation="left">Link</Divider>
@@ -768,22 +719,14 @@ export default class Dashboard extends Component {
value={a.linkText} value={a.linkText}
placeholder="Link Text" placeholder="Link Text"
onChange={(e) => onChange={(e) =>
this.handleAlertLinkTextChange( this.handleAlertLinkTextChange(e.target.value, r.version, i)
e.target.value,
r.version,
i
)
} }
/> />
<Input <Input
value={a.link} value={a.link}
placeholder="Link" placeholder="Link"
onChange={(e) => onChange={(e) =>
this.handleAlertLinkChange( this.handleAlertLinkChange(e.target.value, r.version, i)
e.target.value,
r.version,
i
)
} }
/> />
</Input.Group> </Input.Group>
@@ -799,10 +742,7 @@ export default class Dashboard extends Component {
</Card> </Card>
</Col> </Col>
<Col> <Col>
<Card <Card onClick={() => this.saveAlerts(r.version)} className="add-alert-card">
onClick={() => this.saveAlerts(r.version)}
className="add-alert-card"
>
<SaveFilled /> <SaveFilled />
</Card> </Card>
</Col> </Col>
@@ -836,24 +776,16 @@ export default class Dashboard extends Component {
<Input <Input
key={`video-selector-${source}-show`} key={`video-selector-${source}-show`}
className="video-selector-input" className="video-selector-input"
addonBefore={"Show"} addonBefore={'Show'}
value={nameSelectors[source]["show"]} value={nameSelectors[source]['show']}
onChange={(e) => onChange={(e) => this.handleVideoNameSelectorChange(e, source, 'show')}
this.handleVideoNameSelectorChange(e, source, "show")
}
/> />
<Input <Input
key={`video-selector-${source}-episode`} key={`video-selector-${source}-episode`}
className="video-selector-input" className="video-selector-input"
addonBefore={"Episode"} addonBefore={'Episode'}
value={nameSelectors[source]["episode"]} value={nameSelectors[source]['episode']}
onChange={(e) => onChange={(e) => this.handleVideoNameSelectorChange(e, source, 'episode')}
this.handleVideoNameSelectorChange(
e,
source,
"episode"
)
}
/> />
</Collapse.Panel> </Collapse.Panel>
))} ))}