2016-10-27 10:02:12 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
export default function reducer(ui = {}, action) {
|
2020-01-17 23:14:43 +13:00
|
|
|
switch (action.type) {
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'LAZY_LOADING':
|
|
|
|
|
return { ...ui, lazy_loading: action.start };
|
2016-10-27 10:02:12 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'SET_SLIM_MODE':
|
|
|
|
|
return { ...ui, slim_mode: action.slim_mode };
|
2016-11-09 15:51:38 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'SET_WINDOW_FOCUS':
|
|
|
|
|
return { ...ui, window_focus: action.window_focus };
|
2017-07-17 07:16:33 +12:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'DEBUG':
|
|
|
|
|
return { ...ui, debug_response: action.response };
|
2018-11-21 21:33:26 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'UI_SET':
|
|
|
|
|
return { ...ui, ...action.data };
|
2016-12-05 10:20:01 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'SET_WINDOW_TITLE':
|
|
|
|
|
if (action.title) {
|
|
|
|
|
return { ...ui, window_title: action.title };
|
|
|
|
|
}
|
|
|
|
|
return ui;
|
2016-11-21 10:06:25 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'TOGGLE_SIDEBAR':
|
|
|
|
|
var new_state = !ui.sidebar_open;
|
|
|
|
|
if (typeof (action.new_state) !== 'undefined') new_state = action.new_state;
|
|
|
|
|
return { ...ui, sidebar_open: new_state };
|
2016-11-21 21:46:53 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'SET_CURRENT_TRACK_TRANSITION':
|
|
|
|
|
return { ...ui, current_track_transition: action.current_track_transition };
|
2018-12-10 19:11:33 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'SET_SELECTED_TRACKS':
|
|
|
|
|
return { ...ui, selected_tracks: Object.assign([], action.keys) };
|
2017-07-21 22:56:28 +12:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'ICON_LOADED':
|
|
|
|
|
var icons = { ...ui.icons };
|
|
|
|
|
icons[action.key] = action.icon;
|
|
|
|
|
return { ...ui, icons };
|
2018-02-18 21:39:03 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'INSTALL_PROMPT':
|
|
|
|
|
return { ...ui, install_prompt: action.event };
|
2018-07-22 21:22:35 +12:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
/**
|
2016-11-09 15:51:38 +13:00
|
|
|
* Context menu
|
2019-09-05 15:36:11 +12:00
|
|
|
* */
|
|
|
|
|
case 'SHOW_CONTEXT_MENU':
|
|
|
|
|
return { ...ui, context_menu: action.data };
|
2016-10-27 10:02:12 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'HIDE_CONTEXT_MENU':
|
2020-06-18 21:06:52 +12:00
|
|
|
return { ...ui, context_menu: { ...ui.context_menu, closing: true } };
|
2017-01-29 16:25:05 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'REMOVE_CONTEXT_MENU':
|
|
|
|
|
return { ...ui, context_menu: null };
|
2017-01-29 16:25:05 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'SHOW_TOUCH_CONTEXT_MENU':
|
|
|
|
|
return { ...ui, touch_context_menu: action.data };
|
2018-11-18 12:54:13 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'HIDE_TOUCH_CONTEXT_MENU':
|
2020-06-18 21:06:52 +12:00
|
|
|
return { ...ui, touch_context_menu: { ...ui.touch_context_menu, closing: true } };
|
2016-11-10 16:17:10 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'REMOVE_TOUCH_CONTEXT_MENU':
|
|
|
|
|
return { ...ui, touch_context_menu: null };
|
2016-11-10 16:17:10 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
/**
|
|
|
|
|
* Dragging
|
|
|
|
|
* */
|
|
|
|
|
case 'DRAG_START':
|
2020-01-17 23:14:43 +13:00
|
|
|
return {
|
|
|
|
|
...ui,
|
2019-09-05 15:36:11 +12:00
|
|
|
dragger: {
|
|
|
|
|
dragging: true,
|
|
|
|
|
active: false,
|
|
|
|
|
context: action.context,
|
|
|
|
|
from_uri: action.from_uri,
|
|
|
|
|
victims: action.victims,
|
|
|
|
|
victims_indexes: action.victims_indexes,
|
|
|
|
|
start_x: action.start_x,
|
|
|
|
|
start_y: action.start_y,
|
2020-01-17 23:14:43 +13:00
|
|
|
},
|
2019-09-05 15:36:11 +12:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
case 'DRAG_ACTIVE':
|
|
|
|
|
var dragger = { ...ui.dragger, active: true };
|
|
|
|
|
return { ...ui, dragger };
|
|
|
|
|
|
|
|
|
|
case 'DRAG_END':
|
|
|
|
|
return { ...ui, dragger: false };
|
|
|
|
|
|
|
|
|
|
/**
|
2016-11-11 23:21:51 +13:00
|
|
|
* Modals
|
2019-09-05 15:36:11 +12:00
|
|
|
* */
|
|
|
|
|
case 'OPEN_MODAL':
|
|
|
|
|
return { ...ui, modal: action.modal };
|
2016-11-11 23:21:51 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'CLOSE_MODAL':
|
|
|
|
|
return { ...ui, modal: false };
|
2016-11-11 23:21:51 +13:00
|
|
|
|
|
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
/**
|
2016-12-13 11:08:13 +13:00
|
|
|
* Notifications
|
2019-09-05 15:36:11 +12:00
|
|
|
* */
|
|
|
|
|
case 'CREATE_NOTIFICATION':
|
|
|
|
|
var notifications = { ...ui.notifications };
|
|
|
|
|
notifications[action.notification.key] = action.notification;
|
|
|
|
|
return { ...ui, notifications };
|
2017-05-29 16:29:49 +12:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'CLOSE_NOTIFICATION':
|
|
|
|
|
var notifications = { ...ui.notifications };
|
|
|
|
|
if (notifications[action.key]) {
|
|
|
|
|
notifications[action.key].closing = true;
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, notifications };
|
2016-12-13 11:08:13 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
case 'REMOVE_NOTIFICATION':
|
|
|
|
|
var notifications = { ...ui.notifications };
|
|
|
|
|
delete notifications[action.key];
|
|
|
|
|
return { ...ui, notifications };
|
2016-12-13 11:08:13 +13:00
|
|
|
|
2017-03-27 14:23:38 +13:00
|
|
|
|
2019-09-05 15:36:11 +12:00
|
|
|
/**
|
2017-04-05 20:28:41 +12:00
|
|
|
* Loading and processes
|
2019-09-05 15:36:11 +12:00
|
|
|
* */
|
|
|
|
|
|
|
|
|
|
case 'START_LOADING':
|
|
|
|
|
var load_queue = { ...(ui.load_queue ? ui.load_queue : {}) };
|
|
|
|
|
load_queue[action.key] = action.source;
|
|
|
|
|
return { ...ui, load_queue };
|
|
|
|
|
|
|
|
|
|
case 'STOP_LOADING':
|
|
|
|
|
var load_queue = { ...(ui.load_queue ? ui.load_queue : {}) };
|
|
|
|
|
if (load_queue[action.key]) {
|
|
|
|
|
delete load_queue[action.key];
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, load_queue };
|
|
|
|
|
|
|
|
|
|
case 'START_PROCESS':
|
|
|
|
|
case 'UPDATE_PROCESS':
|
2020-05-25 20:50:25 +12:00
|
|
|
var processes = { ...(ui.processes || []) };
|
|
|
|
|
var last_run = processes[action.key];
|
|
|
|
|
var status = 'running';
|
|
|
|
|
if (last_run) {
|
|
|
|
|
var data = { ...last_run.data, ...action.data };
|
2020-06-12 22:42:49 +12:00
|
|
|
if (action.type === 'UPDATE_PROCESS') status = last_run.status;
|
2019-09-05 15:36:11 +12:00
|
|
|
} else {
|
|
|
|
|
var { data } = action;
|
|
|
|
|
}
|
|
|
|
|
processes[action.key] = {
|
|
|
|
|
key: action.key,
|
2020-02-13 10:41:20 +13:00
|
|
|
content: action.content,
|
2020-01-17 23:14:43 +13:00
|
|
|
description: action.description,
|
2020-02-13 10:41:20 +13:00
|
|
|
level: action.level,
|
2020-05-25 20:50:25 +12:00
|
|
|
status,
|
2019-09-05 15:36:11 +12:00
|
|
|
data,
|
|
|
|
|
};
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
|
|
|
|
case 'RESUME_PROCESS':
|
|
|
|
|
var processes = { ...(ui.processes ? ui.processes : {}) };
|
|
|
|
|
if (processes[action.key]) {
|
|
|
|
|
processes[action.key] = { ...processes[action.key], status: 'running' };
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
|
|
|
|
case 'CANCEL_PROCESS':
|
|
|
|
|
var processes = { ...(ui.processes ? ui.processes : {}) };
|
|
|
|
|
if (processes[action.key]) {
|
|
|
|
|
processes[action.key] = { ...processes[action.key], status: 'cancelling' };
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
|
|
|
|
case 'PROCESS_CANCELLED':
|
|
|
|
|
var processes = { ...(ui.processes ? ui.processes : {}) };
|
|
|
|
|
if (processes[action.key]) {
|
|
|
|
|
processes[action.key] = { ...processes[action.key], status: 'cancelled' };
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
2020-02-13 10:41:20 +13:00
|
|
|
case 'PROCESS_FINISHED':
|
|
|
|
|
var processes = { ...(ui.processes ? ui.processes : {}) };
|
|
|
|
|
if (processes[action.key]) {
|
|
|
|
|
processes[action.key] = { ...processes[action.key], status: 'finished' };
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
|
|
|
|
case 'CLOSE_PROCESS':
|
2019-09-05 15:36:11 +12:00
|
|
|
var processes = { ...(ui.processes ? ui.processes : {}) };
|
|
|
|
|
if (processes[action.key]) {
|
|
|
|
|
processes[action.key] = { ...processes[action.key], closing: true };
|
|
|
|
|
}
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
2020-02-13 10:41:20 +13:00
|
|
|
case 'REMOVE_PROCESS':
|
2019-09-05 15:36:11 +12:00
|
|
|
var processes = { ...(ui.processes ? ui.processes : {}) };
|
|
|
|
|
if (processes[action.key]) {
|
2020-02-13 10:41:20 +13:00
|
|
|
processes[action.key] = { ...processes[action.key], status: 'completed', closing: false };
|
2019-09-05 15:36:11 +12:00
|
|
|
}
|
|
|
|
|
return { ...ui, processes };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return ui;
|
|
|
|
|
}
|
2016-10-27 10:02:12 +13:00
|
|
|
}
|