Files
BugReport/frontend/src/dragDropSettings.js
T
veronika b747b586b3 added CRUD for Projects,
added set project for report
2026-08-22 23:48:15 +02:00

59 lines
1.5 KiB
JavaScript

const DRAG_DROP_STORAGE_KEY = "bugreport_drag_drop_enabled";
const DRAG_DROP_MEDIA_QUERY = "(max-width: 768px), (any-pointer: coarse)";
let sessionDragDropPreference = null;
function getStorage() {
try {
if (typeof window !== "undefined" && window.localStorage) {
return window.localStorage;
}
} catch (error) {
return null;
}
return null;
}
export function getDragDropMediaQuery() {
if (typeof window === "undefined" || typeof window.matchMedia !== "function") {
return null;
}
return window.matchMedia(DRAG_DROP_MEDIA_QUERY);
}
export function getDragDropPreference() {
if (sessionDragDropPreference != null) return sessionDragDropPreference;
let storage = getStorage();
if (storage != null) {
try {
let storedPreference = storage.getItem(DRAG_DROP_STORAGE_KEY);
if (storedPreference === "true") return true;
if (storedPreference === "false") return false;
} catch (error) {
return null;
}
}
return null;
}
export function getDragDropEnabled(mediaQuery = null) {
let preference = getDragDropPreference();
if (preference != null) return preference;
if (mediaQuery == null) mediaQuery = getDragDropMediaQuery();
return mediaQuery == null || !mediaQuery.matches;
}
export function setDragDropEnabled(enabled) {
sessionDragDropPreference = enabled;
let storage = getStorage();
if (storage == null) return;
try {
storage.setItem(DRAG_DROP_STORAGE_KEY, String(enabled));
} catch (error) {
// The in-memory preference still applies until the page is reloaded.
}
}