diff --git a/admin/src/Dashboard.jsx b/admin/src/Dashboard.jsx index 9c2fccc..58c9443 100644 --- a/admin/src/Dashboard.jsx +++ b/admin/src/Dashboard.jsx @@ -1,7 +1,7 @@ -import React, { Component } from "react"; -import firebase from "firebase/app"; -import "firebase/auth"; -import "firebase/firestore"; +import React, { Component } from 'react'; +import firebase from 'firebase/app'; +import 'firebase/auth'; +import 'firebase/firestore'; import { Button, Card, @@ -21,7 +21,7 @@ import { Collapse, Modal, Select, -} from "antd"; +} from 'antd'; import { getPartyDashboardData, getServerDashboardData, @@ -29,7 +29,7 @@ import { postUpdateVideoSelectors, postUpdateVideoNameSelectors, postSendMessage, -} from "./Api"; +} from './Api'; import { CheckCircleTwoTone, CloseCircleTwoTone, @@ -43,42 +43,45 @@ import { LogoutOutlined, SendOutlined, PlusCircleOutlined, -} from "@ant-design/icons"; +} from '@ant-design/icons'; const PLAYER_SOURCES = [ - { text: "Netflix", value: "netflix." }, - { text: "Amazon", value: "amazon." }, - { text: "Hulu", value: "hulu." }, - { text: "Disney+", value: "disneyplus." }, - { text: "YouTube", value: "youtube." }, - { text: "HBO Now", value: "hbonow." }, - { text: "HBO Max", value: "hbomax." }, - { text: "Peacock", value: "peacocktv." }, - { text: "Google Play", value: "play.google." }, - { text: "Crunchyroll", value: "crunchyroll." }, + { text: 'Netflix', value: 'netflix.' }, + { text: 'Amazon', value: 'amazon.' }, + { text: 'Hulu', value: 'hulu.' }, + { text: 'Disney+', value: 'disneyplus.' }, + { text: 'YouTube', value: 'youtube.' }, + { text: 'HBO Now', value: 'hbonow.' }, + { text: 'HBO Max', value: 'hbomax.' }, + { text: 'Peacock', value: 'peacocktv.' }, + { text: 'Google Play', value: 'play.google.' }, + { text: 'Crunchyroll', value: 'crunchyroll.' }, + { text: 'Apple TV+', value: 'tv.apple.' }, + { text: 'Viki', value: 'viki.' }, + { text: 'Funimation', value: 'funimation.' }, ]; const MESSAGE_TYPES = [ { - text: "REPLY", - value: "interactive/text", + text: 'REPLY', + value: 'interactive/text', }, { - text: "LINK", - value: "interactive/link", + text: 'LINK', + value: 'interactive/link', }, { - text: "MESSAGE", - value: "", + text: 'MESSAGE', + value: '', }, ]; const emptyMessage = { - type: "", - text: "", - uid: "", - name: "", - endpoint: "", + type: '', + text: '', + uid: '', + name: '', + endpoint: '', // time set on send, }; @@ -87,7 +90,7 @@ export default class Dashboard extends Component { super(props); this.state = { partiesOverview: null, - activeTab: "1", + activeTab: '1', refreshing: true, selectedParties: [], nameSelectors: {}, @@ -120,12 +123,12 @@ export default class Dashboard extends Component { this.setState({ refreshing: true }); const { activeTab } = this.state; switch (activeTab) { - case "1": + case '1': this.getPartiesOverview(); break; - case "2": - case "3": - case "4": + case '2': + case '3': + case '4': this.getVersionsOverview(); break; default: @@ -138,18 +141,14 @@ export default class Dashboard extends Component { updateVersionMessage = (message, version) => { this.setState({ refreshing: true }); const { versions } = this.state; - const versionData = versions.filter( - (v) => v.version.split(".").join("") === version - )[0]; + const versionData = versions.filter((v) => v.version.split('.').join('') === version)[0]; versionData.message = message; this.updateVersion(version, versionData); }; updateVersionActive = (active, version) => { this.setState({ refreshing: true }); const { versions } = this.state; - const versionData = versions.filter( - (v) => v.version.split(".").join("") === version - )[0]; + const versionData = versions.filter((v) => v.version.split('.').join('') === version)[0]; versionData.active = active; this.updateVersion(version, versionData); }; @@ -159,7 +158,7 @@ export default class Dashboard extends Component { .catch((err) => notification.error({ description: err.message, - message: "Unable To Update", + message: 'Unable To Update', }) ); }; @@ -179,7 +178,7 @@ export default class Dashboard extends Component { .catch((err) => { notification.error({ description: err.message, - message: "Unable To Update", + message: 'Unable To Update', }); this.setState({ refreshing: false }); @@ -192,43 +191,32 @@ export default class Dashboard extends Component { }; handleAlertTitleChange = (value, version, index) => { const { versions } = this.state; - versions.filter((vs) => vs.version === version)[0].alerts[ - index - ].title = value; + versions.filter((vs) => vs.version === version)[0].alerts[index].title = value; this.setState({ versions }); }; handleAlertDescriptionChange = (value, version, index) => { const { versions } = this.state; - versions.filter((vs) => vs.version === version)[0].alerts[ - index - ].description = value; + versions.filter((vs) => vs.version === version)[0].alerts[index].description = value; this.setState({ versions }); }; handleAlertLinkChange = (value, version, index) => { const { versions } = this.state; - versions.filter((vs) => vs.version === version)[0].alerts[ - index - ].link = value; + versions.filter((vs) => vs.version === version)[0].alerts[index].link = value; this.setState({ versions }); }; handleAlertLinkTextChange = (value, version, index) => { const { versions } = this.state; - versions.filter((vs) => vs.version === version)[0].alerts[ - index - ].linkText = value; + versions.filter((vs) => vs.version === version)[0].alerts[index].linkText = value; this.setState({ versions }); }; deleteAlert = (version, index) => { const { versions } = this.state; versions.filter((vs) => vs.version === version)[0].alerts.splice(index, 1); if ( - versions.filter((vs) => vs.version === version)[0].importantAlert === - index || + versions.filter((vs) => vs.version === version)[0].importantAlert === index || versions.filter((vs) => vs.version === version)[0].alerts.length < index ) { - versions.filter( - (vs) => vs.version === version - )[0].importantAlert = undefined; + versions.filter((vs) => vs.version === version)[0].importantAlert = undefined; } this.setState({ versions }); }; @@ -237,10 +225,10 @@ export default class Dashboard extends Component { versions .filter((vs) => vs.version === version)[0] .alerts.push({ - title: "", - description: "", - link: "", - linkText: "", + title: '', + description: '', + link: '', + linkText: '', }); this.setState({ versions }); }; @@ -248,12 +236,11 @@ export default class Dashboard extends Component { this.setState({ refreshing: true }); const { versions } = this.state; const versionData = versions.filter((v) => v.version === version)[0]; - if (versionData.alerts.length > 0) - this.updateVersion(version.split(".").join(""), versionData); + if (versionData.alerts.length > 0) this.updateVersion(version.split('.').join(''), versionData); else { notification.error({ - message: "Missing Alerts", - description: "Must have atleast one alert", + message: 'Missing Alerts', + description: 'Must have atleast one alert', }); this.setState({ refreshing: false }); @@ -262,9 +249,7 @@ export default class Dashboard extends Component { changeImportantAlert = (active, version, index) => { const { versions } = this.state; if (active === false) { - versions.filter( - (vs) => vs.version === version - )[0].importantAlert = undefined; + versions.filter((vs) => vs.version === version)[0].importantAlert = undefined; } else { versions.filter((vs) => vs.version === version)[0].importantAlert = index; } @@ -273,16 +258,16 @@ export default class Dashboard extends Component { getAddMessageText = () => { const { activeTab } = this.state; switch (activeTab) { - case "1": - return "Send Message"; - case "2": - return "Add Version"; - case "3": - return "Add Video Selector"; - case "4": - return "Add Name Selector"; + case '1': + return 'Send Message'; + case '2': + return 'Add Version'; + case '3': + return 'Add Video Selector'; + case '4': + return 'Add Name Selector'; default: - return ""; + return ''; } }; getPrettyTime = (t) => { @@ -303,7 +288,7 @@ export default class Dashboard extends Component { .catch((err) => { notification.error({ description: err.message, - message: "Unable To Update", + message: 'Unable To Update', }); this.setState({ refreshing: false }); @@ -312,7 +297,7 @@ export default class Dashboard extends Component { sendOrAdd = () => { const { activeTab } = this.state; switch (activeTab) { - case "1": + case '1': this.setState({ messageModel: true }); break; default: @@ -331,17 +316,17 @@ export default class Dashboard extends Component { await postSendMessage({ selectedParties, newMessage }).catch((err) => { notification.error({ description: err.message, - message: "Unable To Send Message", + message: 'Unable To Send Message', }); }); this.setState({ refreshing: false, newMessage: { - type: "", - text: "", - uid: "", - name: "", - endpoint: "", + type: '', + text: '', + uid: '', + name: '', + endpoint: '', }, messageModel: false, }); @@ -363,62 +348,57 @@ export default class Dashboard extends Component { const partiesColumns = [ { - title: "Party Name", - dataIndex: "id", + title: 'Party Name', + dataIndex: 'id', sorter: (a, b) => (a.id.toLowerCase() < b.id.toLowerCase() ? -1 : 1), }, { - title: "Source", - dataIndex: "source", - sorter: (a, b) => - a.source.toLowerCase() < b.source.toLowerCase() ? -1 : 1, + title: 'Source', + dataIndex: 'source', + sorter: (a, b) => (a.source.toLowerCase() < b.source.toLowerCase() ? -1 : 1), filters: [ ...PLAYER_SOURCES, { - text: "Is Playing", - value: "PLAYING", + text: 'Is Playing', + value: 'PLAYING', }, { - text: "Is Paused", - value: "PAUSED", + text: 'Is Paused', + value: 'PAUSED', }, ], onFilter: (v, r) => r.source === v || r.status === v, render: (a, r) => ( ), }, { - title: "Created At", - dataIndex: "createTime", - defaultSortOrder: "descend", + title: 'Created At', + dataIndex: 'createTime', + defaultSortOrder: 'descend', sorter: (a, b) => Date.parse(a.createTime) - Date.parse(b.createTime), render: (a) => new Date(Date.parse(a)).toLocaleString(), }, { - title: "Updated At", - dataIndex: "updateTime", + title: 'Updated At', + dataIndex: 'updateTime', filters: [ { - text: "Active", - value: "a", + text: 'Active', + value: 'a', }, { - text: "Inactive", - value: "i", + text: 'Inactive', + value: 'i', }, ], onFilter: (v, r) => - v === "a" + v === 'a' ? (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), @@ -428,11 +408,7 @@ export default class Dashboard extends Component { return ( {dS} @@ -441,15 +417,15 @@ export default class Dashboard extends Component { }, }, { - title: "On Call", - dataIndex: "onCall", + title: 'On Call', + dataIndex: 'onCall', filters: [ { - text: "On Call", + text: 'On Call', value: true, }, { - text: "Not On Call", + text: 'Not On Call', value: false, }, ], @@ -465,23 +441,22 @@ export default class Dashboard extends Component { const versionsColumns = [ { - title: "Version", - dataIndex: "version", - defaultSortOrder: "descend", + title: 'Version', + dataIndex: 'version', + defaultSortOrder: 'descend', sorter: (a, b) => - parseInt(a.version.split(".").join("")) - - parseInt(b.version.split(".").join("")), + parseInt(a.version.split('.').join('')) - parseInt(b.version.split('.').join('')), }, { - title: "Active", - dataIndex: "active", + title: 'Active', + dataIndex: 'active', filters: [ { - text: "Active", + text: 'Active', value: true, }, { - text: "Inactive", + text: 'Inactive', value: false, }, ], @@ -489,22 +464,18 @@ export default class Dashboard extends Component { render: (a, r) => ( - this.updateVersionActive(c, r.version.split(".").join("")) - } + onChange={(c) => this.updateVersionActive(c, r.version.split('.').join(''))} checked={a} /> ), }, { - title: "Inactive Message", - dataIndex: "message", + title: 'Inactive Message', + dataIndex: 'message', render: (a, r) => ( - this.updateVersionMessage(v, r.version.split(".").join("")) - } + onSearch={(v) => this.updateVersionMessage(v, r.version.split('.').join(''))} value={a} onChange={(e) => this.handleVersionMessageChange(e, r.version)} enterButton={} @@ -547,7 +518,7 @@ export default class Dashboard extends Component { okText="Send Message" > this.editMessage(e.target.value, "endpoint")} - placeholder={ - newMessage.type === "interactive/link" ? "Link" : "Endpoint" - } + onChange={(e) => this.editMessage(e.target.value, 'endpoint')} + placeholder={newMessage.type === 'interactive/link' ? 'Link' : 'Endpoint'} /> )} - {newMessage.type === "interactive/link" && ( + {newMessage.type === 'interactive/link' && ( this.editMessage(e.target.value, "name")} + onChange={(e) => this.editMessage(e.target.value, 'name')} placeholder="Link Text" /> )} @@ -587,7 +555,7 @@ export default class Dashboard extends Component { ), - activeTab === "1" && ( + activeTab === '1' && ( : - } - disabled={activeTab === "1" && selectedParties.length === 0} + icon={activeTab === '1' ? : } + disabled={activeTab === '1' && selectedParties.length === 0} > {this.getAddMessageText()} , - activeTab === "3" && ( + activeTab === '3' && (