159 lines
6.5 KiB
JavaScript
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; |