From 74976de6cf806428876369230d0a6b86cd77aa7b Mon Sep 17 00:00:00 2001 From: Mitchell Gerber Date: Wed, 4 Oct 2017 20:56:55 -0500 Subject: [PATCH] audio clips - client done --- client/app/Wrapper.tsx | 37 +++++-------- client/app/app.tsx | 2 + .../{Navbar.component.tsx => Navbar.tsx} | 1 + client/app/components/Navbar/index.ts | 1 + .../SoundList}/SoundList.scss | 0 .../SoundList/SoundList.tsx} | 53 ++++++------------- client/app/components/SoundList/index.ts | 1 + client/app/pages/Clips/Clips.tsx | 46 ++++++++++++++++ client/app/pages/Clips/index.ts | 1 + client/app/pages/Downloader/Downloader.tsx | 10 +--- client/app/pages/Home/Home.tsx | 20 ++++++- client/app/pages/Pubg/Pubg.tsx | 2 +- client/app/pages/Soundboard/Soundboard.tsx | 35 +++++++++--- config.template.json | 1 + server/bothandlers/sounds.go | 11 ++-- server/config/config.go | 1 + server/webserver/handlers/soundlist.go | 29 ++++++++++ server/webserver/server.go | 16 +++--- 18 files changed, 175 insertions(+), 92 deletions(-) rename client/app/components/Navbar/{Navbar.component.tsx => Navbar.tsx} (88%) create mode 100644 client/app/components/Navbar/index.ts rename client/app/{pages/Soundboard => components/SoundList}/SoundList.scss (100%) rename client/app/{pages/Soundboard/SoundList.component.tsx => components/SoundList/SoundList.tsx} (59%) create mode 100644 client/app/components/SoundList/index.ts create mode 100644 client/app/pages/Clips/Clips.tsx create mode 100644 client/app/pages/Clips/index.ts diff --git a/client/app/Wrapper.tsx b/client/app/Wrapper.tsx index 832c51b..16ac061 100644 --- a/client/app/Wrapper.tsx +++ b/client/app/Wrapper.tsx @@ -1,31 +1,20 @@ import React from 'react'; -import { Navbar } from './components/Navbar/Navbar.component'; +import { Navbar } from './components/Navbar'; //styling import './scss/index.scss'; -interface Props { +export class Wrapper extends React.Component { + constructor() { + super(); + } -} - -interface State { - -} - -export class Wrapper extends React.Component { - - constructor() { - super(); - } - - render() { - return ( -
- -
- {this.props.children} -
-
- ); - } + render() { + return ( +
+ +
{this.props.children}
+
+ ); + } } diff --git a/client/app/app.tsx b/client/app/app.tsx index c3b30d3..894f458 100644 --- a/client/app/app.tsx +++ b/client/app/app.tsx @@ -8,6 +8,7 @@ import { Soundboard } from './pages/Soundboard/Soundboard'; import { NotFound } from './pages/NotFound/NotFound'; import { Downloader } from './pages/Downloader/Downloader'; import { Pubg } from './pages/Pubg/Pubg'; +import { Clips } from './pages/Clips'; ReactDOM.render( @@ -16,6 +17,7 @@ ReactDOM.render( + diff --git a/client/app/components/Navbar/Navbar.component.tsx b/client/app/components/Navbar/Navbar.tsx similarity index 88% rename from client/app/components/Navbar/Navbar.component.tsx rename to client/app/components/Navbar/Navbar.tsx index d7324e4..615aa2c 100644 --- a/client/app/components/Navbar/Navbar.component.tsx +++ b/client/app/components/Navbar/Navbar.tsx @@ -21,6 +21,7 @@ export class Navbar extends React.Component { Soundboard Youtube Downloader Pubg + Clips ); } diff --git a/client/app/components/Navbar/index.ts b/client/app/components/Navbar/index.ts new file mode 100644 index 0000000..e8a6562 --- /dev/null +++ b/client/app/components/Navbar/index.ts @@ -0,0 +1 @@ +export * from './Navbar'; diff --git a/client/app/pages/Soundboard/SoundList.scss b/client/app/components/SoundList/SoundList.scss similarity index 100% rename from client/app/pages/Soundboard/SoundList.scss rename to client/app/components/SoundList/SoundList.scss diff --git a/client/app/pages/Soundboard/SoundList.component.tsx b/client/app/components/SoundList/SoundList.tsx similarity index 59% rename from client/app/pages/Soundboard/SoundList.component.tsx rename to client/app/components/SoundList/SoundList.tsx index 0c04dab..fb2a82c 100644 --- a/client/app/pages/Soundboard/SoundList.component.tsx +++ b/client/app/components/SoundList/SoundList.tsx @@ -1,54 +1,32 @@ import React from 'react'; -import axios from 'axios'; import './SoundList.scss'; interface Props { - + soundList: SoundType[]; + type: string; } interface State { showAudioControls: boolean[]; - soundList: { - extension: string; - name: string; - prefix: string; - }[]; +} + +export interface SoundType { + extension: string; + name: string; + prefix?: string; } export class SoundList extends React.Component { - private soundListCache: any; constructor() { super(); this.state = { - soundList: [], showAudioControls: [], }; } - componentDidMount() { - this.getSoundList(); - } - - getSoundList() { - if (!this.soundListCache) { - axios.get("/soundlist").then((response) => { - this.soundListCache = response.data; - this.setState({ - soundList: response.data, - }); - }).catch(() => { - //console.warn(error.response.data); - }); - } else { - this.setState({ - soundList: this.soundListCache, - }); - } - } - checkExtension(extension: string) { switch(extension) { case "wav": @@ -72,26 +50,27 @@ export class SoundList extends React.Component { } render() { + + const { soundList, type } = this.props; + return (
- Sounds + {type}