97 lines
1.7 KiB
JavaScript
97 lines
1.7 KiB
JavaScript
const files = (state = {}, action) =>
|
|
{
|
|
switch (action.type)
|
|
{
|
|
case 'ADD_FILE':
|
|
{
|
|
const { peerId, magnetUri } = action.payload;
|
|
|
|
const newFile = {
|
|
active : false,
|
|
progress : 0,
|
|
files : null,
|
|
peerId : peerId,
|
|
magnetUri : magnetUri
|
|
};
|
|
|
|
return { ...state, [magnetUri]: newFile };
|
|
}
|
|
|
|
case 'ADD_FILE_HISTORY':
|
|
{
|
|
const { fileHistory } = action.payload;
|
|
const newFileHistory = {};
|
|
|
|
// eslint-disable-next-line
|
|
fileHistory.map((file) =>
|
|
{
|
|
const newFile =
|
|
{
|
|
active : false,
|
|
progress : 0,
|
|
files : null,
|
|
...file
|
|
};
|
|
|
|
newFileHistory[file.magnetUri] = newFile;
|
|
});
|
|
|
|
return { ...state, ...newFileHistory };
|
|
}
|
|
|
|
case 'SET_FILE_ACTIVE':
|
|
{
|
|
const { magnetUri } = action.payload;
|
|
const file = state[magnetUri];
|
|
|
|
const newFile = { ...file, active: true };
|
|
|
|
return { ...state, [magnetUri]: newFile };
|
|
}
|
|
|
|
case 'SET_FILE_INACTIVE':
|
|
{
|
|
const { magnetUri } = action.payload;
|
|
const file = state[magnetUri];
|
|
|
|
const newFile = { ...file, active: false };
|
|
|
|
return { ...state, [magnetUri]: newFile };
|
|
}
|
|
|
|
case 'SET_FILE_PROGRESS':
|
|
{
|
|
const { magnetUri, progress } = action.payload;
|
|
const file = state[magnetUri];
|
|
|
|
const newFile = { ...file, progress: progress };
|
|
|
|
return { ...state, [magnetUri]: newFile };
|
|
}
|
|
|
|
case 'SET_FILE_DONE':
|
|
{
|
|
const { magnetUri, sharedFiles } = action.payload;
|
|
const file = state[magnetUri];
|
|
|
|
const newFile = {
|
|
...file,
|
|
files : sharedFiles,
|
|
progress : 1,
|
|
active : false,
|
|
timeout : false
|
|
};
|
|
|
|
return { ...state, [magnetUri]: newFile };
|
|
}
|
|
|
|
case 'CLEAR_FILES':
|
|
return {};
|
|
|
|
default:
|
|
return state;
|
|
}
|
|
};
|
|
|
|
export default files;
|