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";
|
2024-08-24 22:02:33 +00:00
|
|
|
import router from "@/router";
|
2024-07-30 17:45:27 +00:00
|
|
|
import { emitStateChanged } from './eventBus'; // Import the function from eventBus.js
|
2024-08-03 15:34:12 +00:00
|
|
|
import { users } from "@/api";
|
2024-09-16 21:01:16 +00:00
|
|
|
import { notify } from "@/notify";
|
2018-02-01 12:17:04 +00:00
|
|
|
|
2024-07-30 17:45:27 +00:00
|
|
|
export const mutations = {
|
2024-08-24 22:02:33 +00:00
|
|
|
setGallerySize: (value) => {
|
|
|
|
|
state.user.gallerySize = value
|
|
|
|
|
emitStateChanged();
|
2024-10-07 22:44:53 +00:00
|
|
|
users.update(state.user,['gallerySize']);
|
2024-08-24 22:02:33 +00:00
|
|
|
},
|
|
|
|
|
setActiveSettingsView: (value) => {
|
|
|
|
|
state.activeSettingsView = value;
|
|
|
|
|
router.push({ hash: "#" + value });
|
|
|
|
|
const element = document.getElementById(value);
|
|
|
|
|
if (element) {
|
|
|
|
|
element.scrollIntoView({
|
|
|
|
|
behavior: "smooth",
|
|
|
|
|
block: "center",
|
|
|
|
|
inline: "nearest",
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
emitStateChanged();
|
|
|
|
|
},
|
|
|
|
|
setSettings: (value) => {
|
|
|
|
|
state.settings = value;
|
|
|
|
|
emitStateChanged();
|
|
|
|
|
},
|
2024-08-03 20:04:50 +00:00
|
|
|
setMobile() {
|
2024-08-24 22:02:33 +00:00
|
|
|
state.isMobile = window.innerWidth <= 800
|
2024-08-03 20:04:50 +00:00
|
|
|
emitStateChanged();
|
|
|
|
|
},
|
2024-08-03 15:34:12 +00:00
|
|
|
toggleDarkMode() {
|
2024-09-16 21:01:16 +00:00
|
|
|
mutations.updateCurrentUser({ "darkMode": !state.user.darkMode });
|
2024-08-03 15:34:12 +00:00
|
|
|
emitStateChanged();
|
|
|
|
|
},
|
|
|
|
|
toggleSidebar() {
|
2024-08-24 22:02:33 +00:00
|
|
|
if (state.user.stickySidebar) {
|
|
|
|
|
localStorage.setItem("stickySidebar", "false");
|
2024-09-16 21:01:16 +00:00
|
|
|
mutations.updateCurrentUser({ "stickySidebar": false }); // turn off sticky when closed
|
2024-08-24 22:02:33 +00:00
|
|
|
state.showSidebar = false;
|
|
|
|
|
} else {
|
|
|
|
|
state.showSidebar = !state.showSidebar;
|
2024-08-03 15:34:12 +00:00
|
|
|
}
|
|
|
|
|
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-08-24 22:02:33 +00:00
|
|
|
if (!state.stickySidebar) {
|
|
|
|
|
state.showSidebar = false;
|
|
|
|
|
}
|
2024-07-30 17:45:27 +00:00
|
|
|
emitStateChanged();
|
2019-01-05 16:12:09 +00:00
|
|
|
},
|
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-08-24 22:02:33 +00:00
|
|
|
setLoading: (loadType, status) => {
|
|
|
|
|
if (status === false) {
|
|
|
|
|
delete state.loading[loadType];
|
|
|
|
|
} else {
|
|
|
|
|
state.loading = { ...state.loading, [loadType]: true };
|
|
|
|
|
}
|
2024-07-30 17:45:27 +00:00
|
|
|
emitStateChanged();
|
2024-09-16 21:01:16 +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-09-16 21:01:16 +00:00
|
|
|
setCurrentUser: (value) => {
|
|
|
|
|
state.user = value;
|
|
|
|
|
// If value is null or undefined, emit state change and exit early
|
|
|
|
|
if (!value) {
|
2024-07-30 17:45:27 +00:00
|
|
|
emitStateChanged();
|
2021-03-21 11:51:58 +00:00
|
|
|
return;
|
2019-01-05 16:12:09 +00:00
|
|
|
}
|
2024-09-16 21:01:16 +00:00
|
|
|
// Ensure locale exists and is valid
|
|
|
|
|
if (!value.locale) {
|
|
|
|
|
value.locale = i18n.detectLocale(); // Default to detected locale if missing
|
2024-08-03 15:34:12 +00:00
|
|
|
}
|
2024-09-16 21:01:16 +00:00
|
|
|
// Emit state change after setting the user and locale
|
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;
|
2024-09-16 21:01:16 +00:00
|
|
|
if (value == true) {
|
|
|
|
|
notify.showMultipleSelection()
|
|
|
|
|
} else {
|
|
|
|
|
notify.closePopUp()
|
|
|
|
|
}
|
2024-07-30 17:45:27 +00:00
|
|
|
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-09-16 21:01:16 +00:00
|
|
|
updateCurrentUser: (value) => {
|
|
|
|
|
// Ensure the input is a valid object
|
|
|
|
|
if (typeof value !== "object" || value === null) return;
|
|
|
|
|
|
|
|
|
|
// Initialize state.user if it's null
|
|
|
|
|
if (!state.user) {
|
2024-02-10 00:13:02 +00:00
|
|
|
state.user = {};
|
|
|
|
|
}
|
2024-09-16 21:01:16 +00:00
|
|
|
|
|
|
|
|
// Store previous state for comparison
|
|
|
|
|
const previousUser = { ...state.user };
|
|
|
|
|
|
|
|
|
|
// Merge the new values into the current user state
|
2024-08-03 15:34:12 +00:00
|
|
|
state.user = { ...state.user, ...value };
|
2024-09-16 21:01:16 +00:00
|
|
|
|
|
|
|
|
// Handle locale change
|
2024-08-03 15:34:12 +00:00
|
|
|
if (state.user.locale !== previousUser.locale) {
|
|
|
|
|
state.user.locale = i18n.detectLocale();
|
|
|
|
|
i18n.setLocale(state.user.locale);
|
|
|
|
|
i18n.default.locale = state.user.locale;
|
|
|
|
|
}
|
2024-09-16 21:01:16 +00:00
|
|
|
|
|
|
|
|
// Update localStorage if stickySidebar exists
|
|
|
|
|
if ('stickySidebar' in state.user) {
|
|
|
|
|
localStorage.setItem("stickySidebar", state.user.stickySidebar);
|
|
|
|
|
}
|
|
|
|
|
// Update users if there's any change in state.user
|
|
|
|
|
if (JSON.stringify(state.user) !== JSON.stringify(previousUser)) {
|
|
|
|
|
users.update(state.user,Object.keys(value));
|
2018-02-01 12:17:04 +00:00
|
|
|
}
|
2024-09-16 21:01:16 +00:00
|
|
|
|
|
|
|
|
// Emit state change event
|
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) => {
|
2024-10-07 22:44:53 +00:00
|
|
|
console.log("going...",value)
|
2024-07-30 17:45:27 +00:00
|
|
|
state.route = value;
|
|
|
|
|
emitStateChanged();
|
|
|
|
|
},
|
|
|
|
|
updateListingSortConfig: ({ field, asc }) => {
|
2024-10-07 22:44:53 +00:00
|
|
|
state.user.sorting.by = field;
|
|
|
|
|
state.user.sorting.asc = asc;
|
2024-07-30 17:45:27 +00:00
|
|
|
emitStateChanged();
|
2023-12-01 23:47:00 +00:00
|
|
|
},
|
2024-07-30 17:45:27 +00:00
|
|
|
updateListingItems: () => {
|
2023-12-01 23:47:00 +00:00
|
|
|
state.req.items.sort((a, b) => {
|
2024-10-07 22:44:53 +00:00
|
|
|
const valueA = a[state.user.sorting.by];
|
|
|
|
|
const valueB = b[state.user.sorting.by];
|
|
|
|
|
if (state.user.sorting.asc) {
|
2023-12-01 23:47:00 +00:00
|
|
|
return valueA > valueB ? 1 : -1;
|
|
|
|
|
} else {
|
|
|
|
|
return valueA < valueB ? 1 : -1;
|
|
|
|
|
}
|
|
|
|
|
});
|
2024-07-30 17:45:27 +00:00
|
|
|
emitStateChanged();
|
2023-12-01 23:47:00 +00:00
|
|
|
},
|
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
|
|
|
|