filebrowser/frontend/src/store/mutations.js

153 lines
3.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
2018-02-01 12:17:04 +00:00
2024-07-30 17:45:27 +00:00
export const mutations = {
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;
if (locale === "") {
locale = i18n.detectLocale();
2018-02-01 12:17:04 +00:00
}
2024-07-30 17:45:27 +00:00
i18n.setLocale(locale);
2021-03-21 11:51:58 +00:00
i18n.default.locale = locale;
state.user = 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
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 = {};
}
2018-02-01 12:17:04 +00:00
for (let field in value) {
2021-03-21 11:51:58 +00:00
if (field === "locale") {
2024-07-30 17:45:27 +00:00
i18n.setLocale(value[field]);
}
2021-03-21 11:51:58 +00:00
state.user[field] = value[field];
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