mirror of
https://github.com/MetaProvide/nextcloud-swarm-plugin.git
synced 2025-01-11 21:59:13 +00:00
712dadb95d
* First version based on trash_bin * Draft version missing the jquery parse of the webdav response * First working version. * Showing right-click menu action but not disabled for non-Swarm storages * Trying to disable/hide/unregister the menu option * Final adjustments, menuClick and rightClick * Clean and refactor of code * Obsolete files removed * lint fix * Changes to PR * Backward compatibility for NC 23-25 * Optimization * Removed deprecated reference for loading scripts --------- Co-authored-by: Ron <> Co-authored-by: Magnus Walbeck <mw@mwalbeck.org>
73 lines
2.8 KiB
JavaScript
73 lines
2.8 KiB
JavaScript
/*
|
|
* @copyright Copyright (c) 2023, MetaProvide Holding EKF
|
|
*
|
|
* @author Ron Trevor <ecoron@proton.me>
|
|
*
|
|
* @license GNU AGPL version 3 or any later version
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as
|
|
* published by the Free Software Foundation, either version 3 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Affero General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
var actions = {
|
|
isSwarm: function () {
|
|
OCA.Files_External.StatusManager.getMountPointList(function (mounts) {
|
|
mountdir = new URLSearchParams(location.search).get("dir").split('/')[1];
|
|
isSwarm = mounts?.find(el => el.mount_point == mountdir && el.backend == "files_external_ethswarm");
|
|
});
|
|
return isSwarm;
|
|
},
|
|
}
|
|
|
|
// fileActionsMenu mutation observer
|
|
const fileActionsTargetNode = document.querySelector("#app-content-files > table.list-container");
|
|
|
|
const fileActionsConfig = { attributes: false, childList: true, subtree: true };
|
|
const fileActionsCallback = (mutationList, observer) => {
|
|
for (const mutation of mutationList) {
|
|
if (
|
|
mutation.addedNodes.length > 0 &&
|
|
mutation.target.classList.contains("fileActionsMenu")
|
|
) {
|
|
isSwarmDir = actions.isSwarm();
|
|
if (!isSwarmDir && document.body.getElementsByClassName("action-ethswarmcopyref-container").length > 0) {
|
|
document.body
|
|
.getElementsByClassName("action-ethswarmcopyref-container")[0]
|
|
.classList.add("hidden");
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const fileActionsObserver = new MutationObserver(fileActionsCallback);
|
|
fileActionsObserver.observe(fileActionsTargetNode, fileActionsConfig);
|
|
|
|
// Right click menu mutation observer
|
|
const rightClickTargetNode = document.getElementById("rightClickMenus");
|
|
const rightClickConfig = { attributes: false, childList: true, subtree: true };
|
|
const rightClickCallback = (mutationList, observer) => {
|
|
for (const mutation of mutationList) {
|
|
if (
|
|
mutation.addedNodes.length > 0 &&
|
|
mutation.addedNodes[0].classList.contains("rightClickMenu")
|
|
) {
|
|
isSwarmDir = actions.isSwarm();
|
|
if (!isSwarmDir && document.body.getElementsByClassName("option-ethswarmcopyref").length > 0) {
|
|
document.body.getElementsByClassName("option-ethswarmcopyref")[0].parentElement.classList.add("hidden");
|
|
}
|
|
}
|
|
}
|
|
};
|
|
const rightClickObserver = new MutationObserver(rightClickCallback);
|
|
rightClickObserver.observe(rightClickTargetNode, rightClickConfig);
|
|
});
|