working on pulling settings from file using viper, finished basic RSS feed and cron job
This commit is contained in:
		@@ -14,6 +14,7 @@ let torrents= [];
 | 
			
		||||
let peerList = [];
 | 
			
		||||
let fileList = [];
 | 
			
		||||
let RSSList = [];
 | 
			
		||||
let RSSTorrentList = [];
 | 
			
		||||
 | 
			
		||||
var torrentListRequest = {
 | 
			
		||||
    messageType: "torrentListRequest"
 | 
			
		||||
@@ -100,14 +101,25 @@ ws.onmessage = function (evt) { //When we recieve a message from the websocket
 | 
			
		||||
            RSSList = [];
 | 
			
		||||
            for (var i = 0; i < serverMessage.TotalRSSFeeds; i++){
 | 
			
		||||
                RSSList.push({
 | 
			
		||||
                    RSSURL: serverMessage.RSSFeeds[i]
 | 
			
		||||
                    RSSURL: serverMessage.RSSFeeds[i].RSSFeedURL,
 | 
			
		||||
                    RSSName: serverMessage.RSSFeeds[i].RSSName,
 | 
			
		||||
                })
 | 
			
		||||
            }
 | 
			
		||||
            console.log("RSSURLS", RSSList)
 | 
			
		||||
            console.log("FIRSTURL", RSSList[0])
 | 
			
		||||
            console.log("FULLURL", RSSList[0].RSSURL)
 | 
			
		||||
            console.log("FIRSTURL", RSSList[1])
 | 
			
		||||
            console.log("FULLURL", RSSList[1].RSSURL)
 | 
			
		||||
            break;
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        case "rssTorrentList":
 | 
			
		||||
            //console.log("RSSTorrentList recieved", evt.data)
 | 
			
		||||
            RSSTorrentList = [];
 | 
			
		||||
            for (var i = 0; i < serverMessage.TotalTorrents; i++){
 | 
			
		||||
                RSSTorrentList.push({
 | 
			
		||||
                    TorrentName: serverMessage.Torrents[i].Title,
 | 
			
		||||
                    TorrentLink: serverMessage.Torrents[i].Link,
 | 
			
		||||
                    PublishDate: serverMessage.Torrents[i].PubDate,
 | 
			
		||||
                })
 | 
			
		||||
            }
 | 
			
		||||
    }
 | 
			
		||||
                                    
 | 
			
		||||
}
 | 
			
		||||
@@ -175,15 +187,23 @@ class BackendSocket extends React.Component {
 | 
			
		||||
        this.timerID = setInterval(
 | 
			
		||||
          () => this.tick(),
 | 
			
		||||
          2000
 | 
			
		||||
        );    
 | 
			
		||||
      
 | 
			
		||||
        ); 
 | 
			
		||||
        
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    componentWillUnmount() {
 | 
			
		||||
        clearInterval(this.timerID);
 | 
			
		||||
    } 
 | 
			
		||||
 | 
			
		||||
    tick() { // this tick is the main tick that updates ALL of the components that update on tick... which is a lot
 | 
			
		||||
    tick() { // this tick is the main tick that updates ALL of the components that update on tick... which is a lot 
 | 
			
		||||
        if (this.props.RSSList != RSSList & this.props.RSSModalOpen == true) {
 | 
			
		||||
            this.props.newRSSFeedStore(RSSList) //pushing the new RSSList to Redux
 | 
			
		||||
        }
 | 
			
		||||
        if (this.props.RSSTorrentList != RSSTorrentList & this.props.RSSModalOpen == true){
 | 
			
		||||
            this.props.RSSTorrentList(RSSTorrentList) //pushing the new RSSTorrentList to Redux
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        
 | 
			
		||||
        ws.send(JSON.stringify(torrentListRequest))//talking to the server to get the torrent list
 | 
			
		||||
        //console.log("Torrentlist", torrents)
 | 
			
		||||
        this.props.setButtonState(this.props.selection) //forcing an update to the buttons
 | 
			
		||||
@@ -218,7 +238,6 @@ class BackendSocket extends React.Component {
 | 
			
		||||
        if (nextProps.selectionHashes.length === 1){ //if we have a selection pass it on for the tabs to verify
 | 
			
		||||
            this.selectionHandler(nextProps.selectionHashes, nextProps.selectedTab)
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -241,6 +260,8 @@ const mapStateToProps = state => {
 | 
			
		||||
        selectionHashes: state.selectionHashes,
 | 
			
		||||
        selectedTab: state.selectedTab,
 | 
			
		||||
        selection: state.selection,
 | 
			
		||||
        RSSModalOpen: state.RSSModalOpen,
 | 
			
		||||
        RSSTorrentList: state.RSSTorrentList,
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@@ -254,6 +275,7 @@ const mapDispatchToProps = dispatch => {
 | 
			
		||||
        newFileList: (fileList) => dispatch({type: actionTypes.FILE_LIST, fileList}),
 | 
			
		||||
        setButtonState: (buttonState) => dispatch({type: actionTypes.SET_BUTTON_STATE, buttonState}),
 | 
			
		||||
        newRSSFeedStore: (RSSList) => dispatch({type: actionTypes.NEW_RSS_FEED_STORE, RSSList}),
 | 
			
		||||
        RSSTorrentList: (RSSTorrentList) => dispatch({type: actionTypes.RSS_TORRENT_LIST, RSSTorrentList}),
 | 
			
		||||
        //changeSelection: (selection) => dispatch({type: actionTypes.CHANGE_SELECTION, selection}),//forcing an update to the buttons
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -56,13 +56,16 @@ const inlineStyle = {
 | 
			
		||||
    open: false,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  componentWillMount () {
 | 
			
		||||
  componentDidMount () {
 | 
			
		||||
    let RSSRequest = {
 | 
			
		||||
      messageType: "rssFeedRequest",
 | 
			
		||||
    }
 | 
			
		||||
    ws.send(JSON.stringify(RSSRequest)) //Immediatly request an update of the feed when you add a new URL
 | 
			
		||||
    ws.send(JSON.stringify(RSSRequest)) //Immediatly request an update of the feed when you add a new URL    
 | 
			
		||||
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  handleClickOpen = () => {
 | 
			
		||||
    this.setState({ open: true });
 | 
			
		||||
  }
 | 
			
		||||
@@ -104,7 +107,7 @@ const inlineStyle = {
 | 
			
		||||
          <ReactTooltip place="top" type="light" effect="float" />
 | 
			
		||||
          <RSSTorrentIcon />
 | 
			
		||||
        </IconButton>
 | 
			
		||||
        <Dialog fullWidth open={this.state.open} onRequestClose={this.handleRequestClose}>
 | 
			
		||||
        <Dialog fullScreen open={this.state.open} onRequestClose={this.handleRequestClose}>
 | 
			
		||||
          <DialogTitle>Manage RSS Feeds</DialogTitle>
 | 
			
		||||
          <DialogContent>
 | 
			
		||||
            <TextField
 | 
			
		||||
@@ -115,13 +118,13 @@ const inlineStyle = {
 | 
			
		||||
              label="Add New RSS URL"
 | 
			
		||||
              type="text"
 | 
			
		||||
              placeholder="Enter RSS URL Here.."
 | 
			
		||||
              //onChange={this.setTextValue}
 | 
			
		||||
              onChange={this.setTextValue}
 | 
			
		||||
            />
 | 
			
		||||
            <IconButton onClick={this.handleAddRSSFeed} color="primary" data-tip="Manage RSS Feeds" style={smallButton} aria-label="Add RSS Feeds">
 | 
			
		||||
              <ReactTooltip place="top" type="light" effect="float" />
 | 
			
		||||
              <AddRSSIcon />
 | 
			
		||||
            </IconButton>
 | 
			
		||||
            {this.state.open === true &&
 | 
			
		||||
            {this.state.open === true && //if the modal is open mount the list of torrents
 | 
			
		||||
              <RSSModalList />
 | 
			
		||||
            }
 | 
			
		||||
          </DialogContent>
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,8 @@ import Icon from 'material-ui/Icon';
 | 
			
		||||
import IconButton from 'material-ui/IconButton';
 | 
			
		||||
import RSSTorrentIcon from 'material-ui-icons/RssFeed';
 | 
			
		||||
import AddRSSIcon from 'material-ui-icons/AddCircle';
 | 
			
		||||
 | 
			
		||||
import DeleteIcon from 'material-ui-icons/Delete';
 | 
			
		||||
import RSSTorrentList from './addRSSTorrentList';
 | 
			
		||||
 | 
			
		||||
//Redux
 | 
			
		||||
import {connect} from 'react-redux';
 | 
			
		||||
@@ -54,34 +55,77 @@ const inlineStyle = {
 | 
			
		||||
 | 
			
		||||
  state = {
 | 
			
		||||
    testRSSFeeds: [],
 | 
			
		||||
    showList: false,
 | 
			
		||||
    selectedIndex: 0,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  componentWillMount () {
 | 
			
		||||
    console.log("SECONDARY MOUNT", this.props.RSSFeed)
 | 
			
		||||
  componentDidMount () {
 | 
			
		||||
    console.log("SECONDARY MOUNT", this.props.RSSList)
 | 
			
		||||
    this.props.RSSModalOpen(true)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  componentWillUnmount () {
 | 
			
		||||
    this.props.RSSModalOpen(false)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  showRSSFiles = (key) => {
 | 
			
		||||
    let RSSTorrentsRequest = {
 | 
			
		||||
      messageType: "rssTorrentsRequest",
 | 
			
		||||
      Payload: [this.props.RSSList[key].RSSURL]
 | 
			
		||||
    }
 | 
			
		||||
    ws.send(JSON.stringify(RSSTorrentsRequest))
 | 
			
		||||
 | 
			
		||||
    this.setState({selectedIndex: key}) //setting our selected index for styling
 | 
			
		||||
    console.log("RSSFEED", key, "sending message", JSON.stringify(RSSTorrentsRequest))
 | 
			
		||||
 | 
			
		||||
  showRSSFiles = (RSSFeed) => {
 | 
			
		||||
    console.log("RSSFEED", RSSFeed)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  //{this.props.RSSList.map(function(RSSFeed, i){ return (
 | 
			
		||||
  //  <ListItem key={i}><ListItemText primary="FEED" /></ListItem>
 | 
			
		||||
  //  )})}
 | 
			
		||||
  getStyle = (index) => {
 | 
			
		||||
    console.log("SettingStye", selectedIndex, index)
 | 
			
		||||
    if (selectedIndex == index){
 | 
			
		||||
      console.log("Returning activestyle")
 | 
			
		||||
      style = "{{backgroundColor: '#80b3ff'}}"
 | 
			
		||||
      return style
 | 
			
		||||
    }
 | 
			
		||||
    style = "{{backgroundColor: '#f44295'}}"
 | 
			
		||||
    return style
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  deleteRSSFeed = (key) => {
 | 
			
		||||
    let RSSURLDelete = {
 | 
			
		||||
      messageType: "deleteRSSFeed",
 | 
			
		||||
      Payload: [this.props.RSSList[key]]
 | 
			
		||||
    }
 | 
			
		||||
    console.log("Deleting THIS", this.props.RSSList[key])
 | 
			
		||||
    //ws.send(JSON.stringify(RSSURLDelete));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  render() {
 | 
			
		||||
    const { classes, onRequestClose, handleRequestClose, handleSubmit } = this.props;
 | 
			
		||||
    //const { classes, onRequestClose, handleRequestClose, handleSubmit } = this.props;
 | 
			
		||||
    if (this.props.RSSList.length > 0 && this.state.showList == false){
 | 
			
		||||
      console.log("Setting list to show....")
 | 
			
		||||
      this.setState({showList: true})
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return (
 | 
			
		||||
      <div style={inlineStyle}>
 | 
			
		||||
            <List dense>
 | 
			
		||||
            <ListItem  button={true} onClick={ () => this.showRSSFiles('RSSFEEDTEST')}>
 | 
			
		||||
            <ListItemIcon >
 | 
			
		||||
              <AddRSSIcon />
 | 
			
		||||
            </ListItemIcon>
 | 
			
		||||
            <ListItemText primary={this.props.RSSList[0].RSSURL} />
 | 
			
		||||
          </ListItem>
 | 
			
		||||
            </List>        
 | 
			
		||||
        {this.state.showList == true && //if we have any rss torrent feeds then display them in list    }
 | 
			
		||||
          <List dense>
 | 
			
		||||
            {this.props.RSSList.map((RSSFeed, index) => { 
 | 
			
		||||
              return (
 | 
			
		||||
                <ListItem button={true} onClick={() => this.showRSSFiles(index)} key={index}>
 | 
			
		||||
                  <ListItemText primary={RSSFeed.RSSName} />
 | 
			
		||||
                  <ListItemSecondaryAction>
 | 
			
		||||
                    <IconButton key={index} onClick={() => this.deleteRSSFeed(index)} aria-label="Delete">
 | 
			
		||||
                      <DeleteIcon />
 | 
			
		||||
                    </IconButton>
 | 
			
		||||
                  </ListItemSecondaryAction>
 | 
			
		||||
                </ListItem>
 | 
			
		||||
              )})}
 | 
			
		||||
          </List> 
 | 
			
		||||
        }
 | 
			
		||||
      <RSSTorrentList />
 | 
			
		||||
      </div>
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
@@ -94,5 +138,9 @@ const mapStateToProps = state => {
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export default connect(mapStateToProps)(RSSModalList)
 | 
			
		||||
const mapDispatchToProps = dispatch => {
 | 
			
		||||
  return {
 | 
			
		||||
    RSSModalOpen: (RSSModalOpen) => dispatch({type: actionTypes.RSS_MODAL_OPEN, RSSModalOpen}), //sending modal state to backendwebsocket so we can update RSS lists
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
export default connect(mapStateToProps, mapDispatchToProps)(RSSModalList)
 | 
			
		||||
							
								
								
									
										126
									
								
								torrent-project/src/TopMenu/Modals/addRSSTorrentList.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								torrent-project/src/TopMenu/Modals/addRSSTorrentList.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,126 @@
 | 
			
		||||
import React from 'react';
 | 
			
		||||
import ReactDOM from 'react-dom';
 | 
			
		||||
import Button from 'material-ui/Button';
 | 
			
		||||
 | 
			
		||||
import {
 | 
			
		||||
    SortingState, LocalSorting, VirtualTableLayout, SelectionState,
 | 
			
		||||
} from '@devexpress/dx-react-grid';
 | 
			
		||||
 | 
			
		||||
import {
 | 
			
		||||
    Grid, TableHeaderRow, PagingPanel, VirtualTableView, TableColumnResizing,
 | 
			
		||||
    DragDropContext, TableColumnReordering, TableSelection,
 | 
			
		||||
} from '@devexpress/dx-react-grid-material-ui';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import {connect} from 'react-redux';
 | 
			
		||||
import * as actionTypes from '../../store/actions';
 | 
			
		||||
 | 
			
		||||
const tableStyle = {
 | 
			
		||||
    
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
class RSSTorrentList extends React.Component {
 | 
			
		||||
    
 | 
			
		||||
    constructor(props) {
 | 
			
		||||
        super(props);
 | 
			
		||||
        this.state = { //rows are stored in redux they are sent over from the server
 | 
			
		||||
            columns: [
 | 
			
		||||
                { name: 'TorrentName', title: 'Title'},
 | 
			
		||||
                { name: 'TorrentLink', title: 'Magnet Link' },
 | 
			
		||||
                { name: 'PublishDate', title: 'Date Published'},
 | 
			
		||||
            ],
 | 
			
		||||
            sorting: [],
 | 
			
		||||
            columnOrder: ['TorrentName', 'TorrentLink', 'PublishDate'],
 | 
			
		||||
            columnWidths: {TorrentName: 450, TorrentLink: 650, PublishDate: 200},
 | 
			
		||||
            fileSelection: [],
 | 
			
		||||
            selected: [],
 | 
			
		||||
 
 | 
			
		||||
            
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        this.changeColumnOrder = columnOrder => this.setState({columnOrder});
 | 
			
		||||
        this.changeColumnWidths = columnWidths => this.setState({columnWidths});
 | 
			
		||||
        this.changeSorting = sorting => this.setState({sorting});
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    changeSelection = (selection) => {
 | 
			
		||||
        console.log("TorrentList is changing selection now", selection)
 | 
			
		||||
        this.setState({selected: selection})
 | 
			
		||||
         if (selection.length > 0) { //if selection is empty buttons will be default and selectionHashes will be blanked out and pushed to redux
 | 
			
		||||
            console.log("Getting the selected Rows")
 | 
			
		||||
            const selectedRows = [] //array of all the selected Rows
 | 
			
		||||
            selection.forEach(element => {   
 | 
			
		||||
                selectedRows.push(this.props.RSSTorrentList[element])   //pushing the selected rows out of torrentlist
 | 
			
		||||
            });
 | 
			
		||||
           this.setState({fileSelection: selectedRows})
 | 
			
		||||
        }
 | 
			
		||||
       
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    sendMagnetLinks = (priority, sendfileNames) =>  {
 | 
			
		||||
        this.state.fileSelection.forEach(element => {
 | 
			
		||||
            console.log("element", element)
 | 
			
		||||
            sendFileNames.push(element.FilePath)
 | 
			
		||||
        })
 | 
			
		||||
        let setFilePriority = {
 | 
			
		||||
            MessageType: "setFilePriority",
 | 
			
		||||
            Payload: sendFileNames,    
 | 
			
		||||
        }
 | 
			
		||||
        console.log(JSON.stringify(setFilePriority))
 | 
			
		||||
        ws.send(JSON.stringify(setFilePriority))
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    componentWillReceiveProps () {
 | 
			
		||||
        console.log("New torrentlist", this.props.RSSTorrentList)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    render() {
 | 
			
		||||
        return (  
 | 
			
		||||
            //Buttons here 
 | 
			
		||||
            <div>
 | 
			
		||||
                <Button raised color="primary" onClick={this.setHighPriority}>
 | 
			
		||||
                    Download Torrents
 | 
			
		||||
                </Button>
 | 
			
		||||
                <Grid rows={this.props.RSSTorrentList} columns={this.state.columns}>
 | 
			
		||||
                    <SortingState sorting={this.state.sorting} onSortingChange={this.changeSorting} />
 | 
			
		||||
                    <LocalSorting />
 | 
			
		||||
                    <DragDropContext />
 | 
			
		||||
                    <SelectionState onSelectionChange={this.changeSelection} selection={this.state.selection}/>
 | 
			
		||||
                
 | 
			
		||||
                    <VirtualTableView height={300} />
 | 
			
		||||
    
 | 
			
		||||
                    <TableColumnResizing columnWidths={this.state.columnWidths} onColumnWidthsChange={this.changeColumnWidths}/>
 | 
			
		||||
                    <TableColumnReordering order={this.state.columnOrder} onOrderChange={this.changeColumnOrder} />
 | 
			
		||||
                    <TableSelection selectByRowClick highlightSelected />
 | 
			
		||||
                    <TableHeaderRow allowSorting allowResizing allowDragging />
 | 
			
		||||
                </Grid>
 | 
			
		||||
            </div>
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const mapStateToProps = state => {
 | 
			
		||||
    return {
 | 
			
		||||
        selectionHashes: state.selectionHashes,
 | 
			
		||||
        RSSTorrentList: state.RSSTorrentList,
 | 
			
		||||
        //fileSelectionNames: state.fileSelectionNames,
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const mapDispatchToProps = dispatch => {
 | 
			
		||||
    return {
 | 
			
		||||
       
 | 
			
		||||
        //changeFileSelection: (fileSelection) => dispatch({type: actionTypes.CHANGE_FILE_SELECTION, fileSelection}),
 | 
			
		||||
      
 | 
			
		||||
        //sendSelectionHashes: (selectionHashes) => dispatch({type: actionTypes.SELECTION_HASHES, selectionHashes}),
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export default connect(mapStateToProps, mapDispatchToProps)(RSSTorrentList)
 | 
			
		||||
@@ -8,4 +8,6 @@ export const SELECTED_TAB = 'SELECTED_TAB';
 | 
			
		||||
export const PEER_LIST = 'PEER_LIST';
 | 
			
		||||
export const FILE_LIST = 'FILE_LIST';
 | 
			
		||||
export const CHANGE_FILE_SELECTION = 'CHANGE_FILE_SELECTION';
 | 
			
		||||
export const NEW_RSS_FEED_STORE = 'NEW_RSS_FEED_STORE';
 | 
			
		||||
export const NEW_RSS_FEED_STORE = 'NEW_RSS_FEED_STORE';
 | 
			
		||||
export const RSS_MODAL_OPEN = 'RSS_MODAL_OPEN';
 | 
			
		||||
export const RSS_TORRENT_LIST = 'RSS_TORRENT_LIST';
 | 
			
		||||
@@ -16,6 +16,8 @@ const initialState = {
 | 
			
		||||
    torrentDetailInfo: [],
 | 
			
		||||
    selectedTab: 0,
 | 
			
		||||
    RSSList: [],
 | 
			
		||||
    RSSTorrentList: [],
 | 
			
		||||
    RSSModalOpen: false,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -40,6 +42,13 @@ const reducer = (state = initialState, action) => {
 | 
			
		||||
                ...state,
 | 
			
		||||
                RSSList: action.RSSList,
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
        case actionTypes.RSS_TORRENT_LIST:
 | 
			
		||||
            console.log("New RSS Torrent List IN REDUCER", action.RSSTorrentList)
 | 
			
		||||
            return {
 | 
			
		||||
                ...state,
 | 
			
		||||
                RSSTorrentList: action.RSSTorrentList,
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        case actionTypes.SELECTION_HASHES:
 | 
			
		||||
            console.log("Selection hashes REDUX", action.selectionHashes)
 | 
			
		||||
@@ -81,6 +90,12 @@ const reducer = (state = initialState, action) => {
 | 
			
		||||
                ...state,
 | 
			
		||||
                selectedTab: action.selectedTab
 | 
			
		||||
            }
 | 
			
		||||
        
 | 
			
		||||
        case actionTypes.RSS_MODAL_OPEN:
 | 
			
		||||
            return {
 | 
			
		||||
                ...state,
 | 
			
		||||
                RSSModalOpen: action.RSSModalOpen
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
        case actionTypes.SET_BUTTON_STATE:
 | 
			
		||||
            if (action.buttonState.length === 0) { //if selection is empty buttons will be default and selectionHashes will be blanked out and pushed to redux
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user