Skip to content

Commit

Permalink
Refactored toggles
Browse files Browse the repository at this point in the history
  • Loading branch information
nukeop committed Mar 1, 2018
1 parent e1088e4 commit 5cc5a18
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 18 deletions.
11 changes: 11 additions & 0 deletions app/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import logoIcon from '../resources/media/icon.png';
import artPlaceholder from '../resources/media/art_placeholder.png';

import { config as PluginConfig } from './plugins/config';
import settingsConst from './constants/settings';

import Footer from './components/Footer';
import Navbar from './components/Navbar';
Expand Down Expand Up @@ -78,6 +79,10 @@ class App extends React.Component {
settings
} = this.props;

let {
toggleOption
} = this.props.actions;

return (
<div className={styles.app_container}>
<Navbar className={styles.navbar}>
Expand Down Expand Up @@ -133,6 +138,12 @@ class App extends React.Component {
<FontAwesome name="search" /> { !settings.compactMenuBar && 'Search results' }
</SidebarMenuItem>
</NavLink>
<Spacer />
<div className='sidebar_footer'>
<a onClick={() => toggleOption(_.find(settingsConst, ['name', 'compactMenuBar']), settings)} href="#">
<FontAwesome name={settings.compactMenuBar ? 'angle-right' : 'angle-left'} />
</a>
</div>
</SidebarMenu>
</VerticalPanel>
<VerticalPanel className={styles.center_panel}>
Expand Down
7 changes: 7 additions & 0 deletions app/actions/settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,10 @@ export function setBooleanOption(option, state) {
payload: {option, state}
};
}

export function toggleOption(option, state) {
let optionState = state[option.name];
return optionState !==undefined
? setBooleanOption(option.name, !optionState)
: setBooleanOption(option.name, !option.default);
}
14 changes: 5 additions & 9 deletions app/components/PlayQueue/QueueMenu/index.js
Original file line number Diff line number Diff line change
@@ -1,24 +1,19 @@
import React from 'react';
import FontAwesome from 'react-fontawesome';
import _ from 'lodash';

import InputDialog from '../../InputDialog';
import Spacer from '../../Spacer';

import styles from './styles.scss';
import globalStyles from '../../../app.global.scss';
import settingsConst from '../../../constants/settings';

class QueueMenu extends React.Component {
constructor(props){
super(props);
}

toggleOption(option) {
let state = this.props.settings[option];
state !== undefined
? this.props.setBooleanOption(option, !state)
: this.props.setBooleanOption(option, true);
}

handleAddPlaylist(fun, items) {
return name => {
fun(items, name);
Expand All @@ -30,14 +25,15 @@ class QueueMenu extends React.Component {
addPlaylist,
clearQueue,
items,
toggleOption,
settings
} = this.props;

return (
<div className={styles.queue_menu_container}>
<div className={styles.queue_menu_buttons}>
<a href='#' className='compactButton' onClick={() => this.toggleOption('compactQueueBar')}>
<FontAwesome name={settings['compactQueueBar'] ? 'angle-left' : 'angle-right'} />
<a href='#' className='compactButton' onClick={() => toggleOption(_.find(settingsConst, ['name', 'compactQueueBar']), settings)}>
<FontAwesome name={settings.compactQueueBar ? 'angle-left' : 'angle-right'} />
</a>
<a href='#' onClick={clearQueue}><FontAwesome name="trash-o" /></a>

Expand Down
4 changes: 2 additions & 2 deletions app/components/PlayQueue/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ class PlayQueue extends React.Component {
let {
clearQueue,
addPlaylist,
setBooleanOption
toggleOption
} = this.props.actions;

return (
<div className={classnames(styles.play_queue_container, {'compact': compact})}>
<QueueMenu
clearQueue={clearQueue}
addPlaylist={addPlaylist}
setBooleanOption={setBooleanOption}
toggleOption={toggleOption}
settings={settings}
items={items}
/>
Expand Down
8 changes: 1 addition & 7 deletions app/components/Settings/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,6 @@ class Settings extends React.Component {
lastFmScrobblingEnabled ? disableScrobbling(): enableScrobbling();
}

toggleOption(option, state) {
state !== undefined
? this.props.actions.setBooleanOption(option.name, !state)
: this.props.actions.setBooleanOption(option.name, !option.default);
}

isChecked(option) {
return this.props.settings[option.name] !== undefined
? this.props.settings[option.name]
Expand Down Expand Up @@ -113,7 +107,7 @@ class Settings extends React.Component {
<Spacer />
<Radio
toggle
onChange={() => this.toggleOption(option, settings[option.name])}
onChange={() => this.props.actions.toggleOption(option, settings)}
checked={this.isChecked(option)}
/>
</div>
Expand Down
25 changes: 25 additions & 0 deletions app/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -112,3 +112,28 @@
text-align: center;
padding: 1rem;
}

.sidebar_footer {
display: flex;
flex-flow: row;
justify-content: flex-end;
margin: 0.5rem;

a {
display: flex;
justify-content: center;
align-items: center;
background: $background2;
color: $white !important;
width: 2rem;
height: 2rem;

&:hover {
background: lighten($background2, 10%);
}

&:active {
background: lighten($background2, 20%);
}
}
}

0 comments on commit 5cc5a18

Please sign in to comment.