Files
goTorrent/goTorrentWebUI/lib/store/reducer.js

159 lines
6.5 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _actions = require("./actions");
var actionTypes = _interopRequireWildcard(_actions);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
var initialState = {
buttonStateDefault: [{ startButton: "default", stopButton: "default", deleteButton: "default", fSeedButton: "default", fRecheckButton: "default" }],
buttonState: [{ startButton: "default", stopButton: "default", deleteButton: "default", fSeedButton: "default", fRecheckButton: "default" }],
sorting: [],
selection: [],
selectionHashes: [],
filter: ["Status", ""],
columnName: "Status",
torrentList: [],
peerList: [],
fileList: [],
torrentDetailInfo: [],
selectedTab: 0,
RSSList: [],
RSSTorrentList: [],
RSSModalOpen: false
};
var reducer = function reducer() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments[1];
switch (action.type) {
case actionTypes.CHANGE_SELECTION:
console.log("Change Selection", action.selection);
return _extends({}, state, {
peerList: [], //changing selection will purge out all of the old data
fileList: [],
selectionHashes: [],
selection: action.selection
});
case actionTypes.NEW_RSS_FEED_STORE:
console.log("New RSS Feed Store", action.RSSList);
return _extends({}, state, {
RSSList: action.RSSList
});
case actionTypes.RSS_TORRENT_LIST:
console.log("New RSS Torrent List IN REDUCER", action.RSSTorrentList);
return _extends({}, state, {
RSSTorrentList: action.RSSTorrentList
});
case actionTypes.SELECTION_HASHES:
console.log("Selection hashes REDUX", action.selectionHashes);
return _extends({}, state, {
selectionHashes: action.selectionHashes
});
case actionTypes.SORTLIST:
//TODO do I even need this in redux?
console.log("List Sort", action.sorting);
return state;
case actionTypes.CHANGE_FILTER:
return _extends({}, state, {
filter: action.filter
});
case actionTypes.TORRENT_LIST:
return _extends({}, state, {
torrentList: action.torrentList
});
case actionTypes.PEER_LIST:
return _extends({}, state, {
peerList: action.peerList
});
case actionTypes.FILE_LIST:
return _extends({}, state, {
fileList: action.fileList
});
case actionTypes.SELECTED_TAB:
return _extends({}, state, {
selectedTab: action.selectedTab
});
case actionTypes.RSS_MODAL_OPEN_STATE:
console.log("Setting RSS Modal State...", action.RSSModalOpen);
return _extends({}, 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
var _buttonStateFinal = state.buttonStateDefault; //if no selection dispatch that to redux
return _extends({}, state, {
buttonState: _buttonStateFinal
});
} else {
// if we have selection continue on with logic to determine button state
var selectedRows = []; //array of all the selected Rows
action.buttonState.forEach(function (element) {
selectedRows.push(state.torrentList[element]); //pushing the selected rows out of torrentlist
});
var buttonStateTest = selectedRows.filter(function (element) {
//TODO fix this bad mess... we literally just need to filter for stopped and go from there
var result = [];
if (element.Status === "Downloading" || element.Status === "Awaiting Peers" || element.Status === "Seeding" || element.Status === "Completed") {
result.push(element.Status);
return result;
}
});
var buttonStateTest2 = selectedRows.filter(function (element) {
return element.Status === "Stopped";
});
if (buttonStateTest.length > 0 && buttonStateTest2.length === 0) {
var _buttonStateFinal2 = [{ startButton: "default", stopButton: "primary", deleteButton: "accent", fSeedButton: "default", fRecheckButton: "primary" }];
return _extends({}, state, {
buttonState: _buttonStateFinal2
});
}
if (buttonStateTest.length === 0 && buttonStateTest2.length > 0) {
var _buttonStateFinal3 = [{ startButton: "primary", stopButton: "default", deleteButton: "accent", fSeedButton: "default", fRecheckButton: "primary" }];
return _extends({}, state, {
buttonState: _buttonStateFinal3
});
}
if (buttonStateTest.length > 0 && buttonStateTest2.length > 0) {
var _buttonStateFinal4 = [{ startButton: "primary", stopButton: "primary", deleteButton: "accent", fSeedButton: "default", fRecheckButton: "primary" }];
return _extends({}, state, {
buttonState: _buttonStateFinal4
});
}
}
return _extends({}, state, {
buttonState: buttonStateFinal
});
default:
return state;
};
console.log("no actiontypes found", action);
return state;
};
exports.default = reducer;