filebrowser/frontend/src/store/mutations.js

186 lines
4.6 KiB
JavaScript
Raw Normal View History

2021-03-21 11:51:58 +00:00
import * as i18n from "@/i18n";
2024-07-30 17:45:27 +00:00
import { state } from "./state.js";
import { emitStateChanged } from './eventBus'; // Import the function from eventBus.js
2024-08-03 15:34:12 +00:00
import { users } from "@/api";
2018-02-01 12:17:04 +00:00
2024-07-30 17:45:27 +00:00
export const mutations = {
2024-08-03 20:04:50 +00:00
setMobile() {
state.mobile = window.innerWidth <= 800
emitStateChanged();
},
2024-08-03 15:34:12 +00:00
toggleDarkMode() {
mutations.updateUser({ "darkMode": !state.user.darkMode });
emitStateChanged();
},
toggleSidebar() {
if (!state.showSidebar && state.user.stickySidebar) {
state.user.stickySidebar = false;
mutations.updateUser({ "stickySidebar": false }); // turn off sticky when closed
return
}
state.showSidebar = !state.showSidebar;
emitStateChanged();
},
closeSidebar() {
if (state.showSidebar) {
state.showSidebar = false;
emitStateChanged();
}
},
setUpload(value) {
state.upload = value;
emitStateChanged();
},
2024-07-30 17:45:27 +00:00
setUsage: (value) => {
state.usage = value;
emitStateChanged();
},
closeHovers: () => {
2024-02-10 00:13:02 +00:00
state.prompts = [];
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
toggleShell: () => {
2021-03-21 11:51:58 +00:00
state.showShell = !state.showShell;
2024-07-30 17:45:27 +00:00
emitStateChanged();
},
2024-07-30 17:45:27 +00:00
showHover: (value) => {
if (typeof value === "object") {
2024-02-10 00:13:02 +00:00
state.prompts.push({
2024-07-30 17:45:27 +00:00
name: value?.name,
confirm: value?.confirm,
action: value?.action,
props: value?.props,
});
} else {
state.prompts.push({
name: value,
confirm: value?.confirm,
action: value?.action,
props: value?.props,
2024-02-10 00:13:02 +00:00
});
2018-02-01 12:17:04 +00:00
}
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
showError: () => {
2024-02-10 00:13:02 +00:00
state.prompts.push("error");
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
setLoading: (value) => {
2021-03-21 11:51:58 +00:00
state.loading = value;
2024-07-30 17:45:27 +00:00
emitStateChanged();
2021-03-21 11:51:58 +00:00
},
2024-07-30 17:45:27 +00:00
setReload: (value) => {
2021-03-21 11:51:58 +00:00
state.reload = value;
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
setUser: (value) => {
if (value === null) {
2021-03-21 11:51:58 +00:00
state.user = null;
2024-07-30 17:45:27 +00:00
emitStateChanged();
2021-03-21 11:51:58 +00:00
return;
}
2021-03-21 11:51:58 +00:00
let locale = value.locale;
2024-08-03 15:34:12 +00:00
if (locale === "") {
value.locale = i18n.detectLocale();
2018-02-01 12:17:04 +00:00
}
2024-08-03 15:34:12 +00:00
let previousUser = state.user
2021-03-21 11:51:58 +00:00
state.user = value;
2024-08-03 15:34:12 +00:00
if (state.user != previousUser && state.user.username != "publicUser") {
users.update(state.user);
}
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
setJWT: (value) => {
state.jwt = value;
emitStateChanged();
},
setSession: (value) => {
state.sessionId = value;
emitStateChanged();
},
setMultiple: (value) => {
state.multiple = value;
emitStateChanged();
},
addSelected: (value) => {
state.selected.push(value);
emitStateChanged();
},
removeSelected: (value) => {
2021-03-21 11:51:58 +00:00
let i = state.selected.indexOf(value);
if (i === -1) return;
state.selected.splice(i, 1);
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
resetSelected: () => {
2021-03-21 11:51:58 +00:00
state.selected = [];
2024-07-30 17:45:27 +00:00
mutations.setMultiple(false);
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
updateUser: (value) => {
2021-03-21 11:51:58 +00:00
if (typeof value !== "object") return;
2024-02-10 00:13:02 +00:00
if (state.user === null) {
state.user = {};
}
2024-08-03 15:34:12 +00:00
let previousUser = state.user;
state.user = { ...state.user, ...value };
if (state.user.locale !== previousUser.locale) {
state.user.locale = i18n.detectLocale();
i18n.setLocale(state.user.locale);
i18n.default.locale = state.user.locale;
}
if (state.user != previousUser) {
users.update(state.user);
2018-02-01 12:17:04 +00:00
}
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
updateRequest: (value) => {
2024-02-10 00:13:02 +00:00
const selectedItems = state.selected.map((i) => state.req.items[i]);
2021-03-21 11:51:58 +00:00
state.oldReq = state.req;
state.req = value;
2024-02-10 00:13:02 +00:00
state.selected = [];
if (!state.req?.items) return;
state.selected = state.req.items
.filter((item) => selectedItems.some((rItem) => rItem.url === item.url))
.map((item) => item.index);
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
replaceRequest: (value) => {
state.req = value;
emitStateChanged();
},
setRoute: (value) => {
state.route = value;
emitStateChanged();
},
updateListingSortConfig: ({ field, asc }) => {
state.req.sorting.by = field;
state.req.sorting.asc = asc;
2024-07-30 17:45:27 +00:00
emitStateChanged();
},
2024-07-30 17:45:27 +00:00
updateListingItems: () => {
state.req.items.sort((a, b) => {
const valueA = a[state.req.sorting.by];
const valueB = b[state.req.sorting.by];
if (state.req.sorting.asc) {
return valueA > valueB ? 1 : -1;
} else {
return valueA < valueB ? 1 : -1;
}
});
2024-07-30 17:45:27 +00:00
emitStateChanged();
},
2024-07-30 17:45:27 +00:00
updateClipboard: (value) => {
2021-03-21 11:51:58 +00:00
state.clipboard.key = value.key;
state.clipboard.items = value.items;
state.clipboard.path = value.path;
2024-07-30 17:45:27 +00:00
emitStateChanged();
2018-02-01 12:17:04 +00:00
},
2024-07-30 17:45:27 +00:00
resetClipboard: () => {
2021-03-21 11:51:58 +00:00
state.clipboard.key = "";
state.clipboard.items = [];
2024-07-30 17:45:27 +00:00
emitStateChanged();
2021-03-21 11:51:58 +00:00
},
};
2018-02-01 12:17:04 +00:00