From ff4429195580f22fa6d6d1893f8802947eb0e5b8 Mon Sep 17 00:00:00 2001 From: crowetic Date: Fri, 27 Feb 2026 18:05:03 -0800 Subject: [PATCH 1/9] Major update - v0.2.0 - see CHANGELOG for changes. --- CHANGELOG.md | 58 + package-lock.json | 38 +- package.json | 2 +- src/App.jsx | 41 +- src/ContextMenuPinnedFiles.tsx | 278 ++- src/File.tsx | 44 +- src/Manager.tsx | 1933 ++++++++++++++--- src/ShowAction.jsx | 6 +- .../PUBLISH_MULTIPLE_QDN_RESOURCES.jsx | 428 ++-- src/actions/PUBLISH_QDN_RESOURCE.jsx | 26 +- src/components/Button.jsx | 3 +- src/components/button.css | 7 + src/storage.ts | 568 ++++- src/utils.ts | 186 +- vite.config.js | 13 +- 15 files changed, 2938 insertions(+), 693 deletions(-) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..55f78ca --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +## [0.2.0] - 2026-02-28 + +### Added + +- Filesystem persistence now supports IndexedDB with localStorage backup/fallback behavior. +- Versioned/timestamped storage records for safer persistence reconciliation. +- QDN filesystem structure sync actions. +- Option to publish filesystem structure to QDN. +- Option to import filesystem structure from QDN. +- Option to discover previously published Q-Manager resources and import them into the UI. +- Automatic import destination folder: `Recovered Imports`. +- Multi-select file workflow with per-item checkboxes in the grid. +- Bulk selected-file action mode in bottom controls: `Move`, `Remove`, `Delete from QDN`. +- Bulk move modal for selected files with target folder selection. +- QDN tombstone delete flow by republishing each selected file identifier with `data64` for `"d"`. +- File preview support from the main grid. +- Right-click context menu action: `preview`. +- Double-click file behavior to open preview. +- Optional `Show thumbnails` checkbox above the main action controls. +- Image thumbnails in file tiles when thumbnail mode is enabled. +- File `displayName` support for UI labels (separate from published `name` / `identifier`). +- Right-click context menu action: `More info` modal with full known file metadata dump. +- Optional live metadata fetch from QDN resource properties (`GET_QDN_RESOURCE_PROPERTIES`) from the `More info` modal. +- Automatic metadata hydration back into file nodes from fetched properties (size, mime, display filename when appropriate). +- Selected-files footer now shows aggregated file size with unknown-count fallback. +- Per-file size display in selected file details dialog. +- File pinning support (`pin file` / `unpin file`) persisted in filesystem data. +- Visual pin badge on pinned file tiles. +- Extension-based preview inference and text preview mode (`.txt`, `.md`, `.json`, etc.). + +### Changed + +- IndexedDB is treated as the primary storage source, with localStorage retained as backup. +- Storage load flow now heals missing/failed IndexedDB state from localStorage fallback data when needed. +- Storage save flow now writes through a combined helper to reduce drift between stores. +- Folder/file tile visuals were refreshed for stronger readability and hierarchy. +- File rename behavior now updates `displayName` for files (folder rename behavior remains structural). +- Selection is cleared when switching top-level mode tabs (`public` / `private` / `groups`) or selected group. +- Missing/discovered file imports now attempt property hydration and use resolved filename for display labels. +- `remove directory` context action now uses a delete icon (pin icon reserved for pinning behavior). + +### Fixed + +- `utils.ts` TypeScript typing issues and Promise/file handling edge cases. +- Publish service default selection precedence bug in single publish flow. +- Publish service dropdown menu rendering/opacity issues in modal context. +- Better error fallback behavior for preview/thumbnails when media cannot be loaded. +- Custom button component now honors the `disabled` prop. +- Discovery/import now ignores tombstoned QDN resources by filtering very small (delete marker) resource sizes. +- Preview fallback now handles text-like resources better when MIME metadata is missing by deriving from filename extension. + +### Notes + +- QDN publish/import works with the in-memory filesystem state, not direct storage backend snapshots. diff --git a/package-lock.json b/package-lock.json index ecd162f..671e88b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "QManager", - "version": "0.0.0", + "version": "0.2.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "QManager", - "version": "0.0.0", + "version": "0.2.0", "dependencies": { "@dnd-kit/core": "^6.2.0", "@dnd-kit/sortable": "^9.0.0", @@ -71,6 +71,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.0", @@ -257,6 +258,7 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "peer": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -321,6 +323,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.2.0.tgz", "integrity": "sha512-KVK/CJmaYGTxTPU6P0+Oy4itgffTUa80B8317sXzfOr1qUzSL29jE7Th11llXiu2haB7B9Glpzo2CDElin+geQ==", + "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -448,6 +451,7 @@ "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.5.tgz", "integrity": "sha512-gnOQ+nGLPvDXgIx119JqGalys64lhMdnNQA9TMxhDA4K0Hq5+++OE20Zs5GxiCV9r814xQ2K5WmtofSpHVW6BQ==", + "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -938,6 +942,7 @@ "version": "5.16.7", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", + "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", "@mui/core-downloads-tracker": "^5.16.7", @@ -1158,6 +1163,7 @@ "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -1296,6 +1302,7 @@ "url": "https://github.com/sponsors/ai" } ], + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -1422,7 +1429,8 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "peer": true }, "node_modules/debug": { "version": "4.3.7", @@ -1684,7 +1692,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "peer": true, "dependencies": { "react-is": "^16.7.0" } @@ -1692,8 +1699,7 @@ "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "peer": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/import-fresh": { "version": "3.3.0", @@ -2089,6 +2095,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -2100,6 +2107,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -2435,6 +2443,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz", "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==", "dev": true, + "peer": true, "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -2630,6 +2639,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, + "peer": true, "requires": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.26.0", @@ -2763,6 +2773,7 @@ "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "peer": true, "requires": { "regenerator-runtime": "^0.14.0" } @@ -2812,6 +2823,7 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.2.0.tgz", "integrity": "sha512-KVK/CJmaYGTxTPU6P0+Oy4itgffTUa80B8317sXzfOr1qUzSL29jE7Th11llXiu2haB7B9Glpzo2CDElin+geQ==", + "peer": true, "requires": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -2920,6 +2932,7 @@ "version": "11.13.5", "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.5.tgz", "integrity": "sha512-gnOQ+nGLPvDXgIx119JqGalys64lhMdnNQA9TMxhDA4K0Hq5+++OE20Zs5GxiCV9r814xQ2K5WmtofSpHVW6BQ==", + "peer": true, "requires": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.13.5", @@ -3168,6 +3181,7 @@ "version": "5.16.7", "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz", "integrity": "sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==", + "peer": true, "requires": { "@babel/runtime": "^7.23.9", "@mui/core-downloads-tracker": "^5.16.7", @@ -3273,6 +3287,7 @@ "version": "18.3.12", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz", "integrity": "sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw==", + "peer": true, "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -3362,6 +3377,7 @@ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, + "peer": true, "requires": { "caniuse-lite": "^1.0.30001669", "electron-to-chromium": "^1.5.41", @@ -3450,7 +3466,8 @@ "csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "peer": true }, "debug": { "version": "4.3.7", @@ -3638,7 +3655,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "peer": true, "requires": { "react-is": "^16.7.0" }, @@ -3646,8 +3662,7 @@ "react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "peer": true + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" } } }, @@ -3920,6 +3935,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, "requires": { "loose-envify": "^1.1.0" } @@ -3928,6 +3944,7 @@ "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, "requires": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -4148,6 +4165,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz", "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==", "dev": true, + "peer": true, "requires": { "esbuild": "^0.18.10", "fsevents": "~2.3.2", diff --git a/package.json b/package.json index 2d78ea1..d7218e0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "QManager", "private": true, - "version": "0.0.0", + "version": "0.2.0", "type": "module", "scripts": { "dev": "vite", diff --git a/src/App.jsx b/src/App.jsx index f6735df..1caefff 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -86,17 +86,6 @@ function App() {
{isLoading && ( - - - - )} - {!isLoading && !myAddress?.name?.name && ( + + + )} + {!isLoading && !myAddress?.name?.name && ( + - To use Q-Manager you need a registered Qortal Name - + }}> + To use Q-Manager you need a registered Qortal Name + - )} - {!isLoading && myAddress?.name?.name && ( - - - )} - + )} + {!isLoading && myAddress?.name?.name && ( + + )} +
); diff --git a/src/ContextMenuPinnedFiles.tsx b/src/ContextMenuPinnedFiles.tsx index edab4e3..9e12caf 100644 --- a/src/ContextMenuPinnedFiles.tsx +++ b/src/ContextMenuPinnedFiles.tsx @@ -1,10 +1,12 @@ -import React, { useState, useRef } from 'react'; +import React, { useEffect, useMemo, useRef, useState } from 'react'; import { Box, List, ListItem, ListItemButton, ListItemIcon, ListItemText, Menu, MenuItem, Modal, Typography, styled } from '@mui/material'; import PushPinIcon from '@mui/icons-material/PushPin'; import FolderIcon from "@mui/icons-material/Folder"; import DeleteIcon from '@mui/icons-material/Delete'; import DriveFileMoveIcon from '@mui/icons-material/DriveFileMove'; import DriveFileRenameOutlineIcon from '@mui/icons-material/DriveFileRenameOutline'; +import VisibilityIcon from '@mui/icons-material/Visibility'; +import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined'; const CustomStyledMenu = styled(Menu)(({ theme }) => ({ '& .MuiPaper-root': { backgroundColor: '#f9f9f9', @@ -22,13 +24,76 @@ const CustomStyledMenu = styled(Menu)(({ theme }) => ({ }, })); +const getValueByKeys = (source, keys = []) => { + if (!source || typeof source !== 'object') return undefined; + for (const key of keys) { + if (source[key] !== undefined && source[key] !== null) { + return source[key]; + } + } + return undefined; +}; + +const normalizeResourceProperties = (properties) => { + if (!properties || typeof properties !== 'object') return {}; + + const filename = getValueByKeys(properties, ['filename', 'fileName']); + const mimeType = getValueByKeys(properties, [ + 'mimeType', + 'mime', + 'contentType', + 'mediaType', + ]); + const rawSize = getValueByKeys(properties, [ + 'sizeInBytes', + 'size', + 'dataSize', + 'createdSize', + 'totalSize', + ]); + const qortalName = getValueByKeys(properties, ['name', 'qortalName', 'ownerName']); + const title = getValueByKeys(properties, ['title']); + const parsedSize = Number(rawSize); + const sizeInBytes = + Number.isFinite(parsedSize) && parsedSize >= 0 ? parsedSize : undefined; + + return { + ...(filename ? { filename } : {}), + ...(mimeType ? { mimeType } : {}), + ...(sizeInBytes !== undefined ? { sizeInBytes } : {}), + ...(qortalName ? { qortalName } : {}), + ...(title ? { title } : {}), + }; +}; + +const buildResourcePropertyPayloads = (item) => { + const basePayload = { + action: 'GET_QDN_RESOURCE_PROPERTIES', + service: item?.service, + identifier: item?.identifier, + }; + const ownerName = item?.qortalName || item?.name; + if (!ownerName) { + return [basePayload]; + } + return [ + { ...basePayload, name: ownerName }, + { ...basePayload, qortalName: ownerName }, + basePayload, + ]; +}; + export const ContextMenuPinnedFiles = ({ children, removeFile, removeDirectory, type, rename, fileSystem, -moveNode, currentPath, item }) => { +moveNode, currentPath, item, onPreview, onHydrateMetadata, pinned, onTogglePin }) => { const [menuPosition, setMenuPosition] = useState(null); const longPressTimeout = useRef(null); const maxHoldTimeout = useRef(null); const preventClick = useRef(false); const [showMoveModal, setShowMoveModal] = useState(false); + const [showInfoModal, setShowInfoModal] = useState(false); + const [resourceProperties, setResourceProperties] = useState(null); + const [resourcePropertiesError, setResourcePropertiesError] = useState(''); + const [isFetchingResourceProperties, setIsFetchingResourceProperties] = useState(false); const [targetPath, setTargetPath] = useState([]); const startTouchPosition = useRef({ x: 0, y: 0 }); // Track initial touch position const handleContextMenu = (event) => { @@ -88,9 +153,8 @@ moveNode, currentPath, item }) => { }; const handleClose = (e) => { - - e.preventDefault(); - e.stopPropagation(); + if (e?.preventDefault) e.preventDefault(); + if (e?.stopPropagation) e.stopPropagation(); setMenuPosition(null); }; @@ -174,6 +238,111 @@ moveNode, currentPath, item }) => { const closeMoveModal = () => { setShowMoveModal(false); }; + const closeInfoModal = () => { + setShowInfoModal(false); + }; + + const hasKnownFileMetadata = useMemo(() => { + if (type !== 'file') return true; + const existingSize = getValueByKeys(item, [ + 'sizeInBytes', + 'size', + 'fileSize', + 'dataSize', + 'createdSize', + 'totalSize', + ]); + return Boolean(item?.mimeType) && existingSize !== undefined; + }, [ + item?.mimeType, + item?.sizeInBytes, + item?.size, + item?.fileSize, + item?.dataSize, + item?.createdSize, + item?.totalSize, + type, + ]); + + const mergedItemInfo = useMemo(() => { + if (!resourceProperties) return item; + return { + ...item, + fetchedResourceProperties: resourceProperties, + }; + }, [item, resourceProperties]); + + const fetchResourceProperties = async () => { + if (type !== 'file' || !item?.service || !item?.identifier) { + return; + } + + setIsFetchingResourceProperties(true); + setResourcePropertiesError(''); + + const payloadAttempts = buildResourcePropertyPayloads(item); + let lastError = null; + + for (const payload of payloadAttempts) { + try { + const response = await qortalRequest(payload); + if (response === undefined || response === null) { + continue; + } + + setResourceProperties(response); + const normalized = normalizeResourceProperties(response); + const metadataToHydrate = { ...normalized }; + if ( + normalized?.filename && + (!item?.displayName || + item?.displayName === item?.name || + item?.displayName === item?.identifier) + ) { + metadataToHydrate.displayName = normalized.filename; + } + if ( + onHydrateMetadata && + typeof onHydrateMetadata === 'function' && + Object.keys(metadataToHydrate).length > 0 + ) { + onHydrateMetadata(metadataToHydrate); + } + setIsFetchingResourceProperties(false); + return; + } catch (error) { + lastError = error; + } + } + + setResourcePropertiesError( + lastError?.error || + lastError?.message || + 'Unable to fetch live QDN properties' + ); + setIsFetchingResourceProperties(false); + }; + + useEffect(() => { + setResourceProperties(null); + setResourcePropertiesError(''); + setIsFetchingResourceProperties(false); + }, [item?.identifier, item?.service, item?.qortalName, item?.name]); + + useEffect(() => { + if (!showInfoModal) return; + if (type !== 'file') return; + if (isFetchingResourceProperties) return; + if (resourceProperties) return; + if (hasKnownFileMetadata) return; + fetchResourceProperties(); + }, [ + showInfoModal, + type, + isFetchingResourceProperties, + resourceProperties, + hasKnownFileMetadata, + ]); const handleMove = () => { if (targetPath.length > 0) { @@ -205,6 +374,32 @@ moveNode, currentPath, item }) => { e.stopPropagation(); }} > + {type === 'file' && !!onPreview && ( + { + handleClose(e); + onPreview() + }}> + + + + + preview + + + )} + {type === 'file' && ( + { + handleClose(e); + onTogglePin?.(); + }}> + + + + + {pinned ? 'unpin file' : 'pin file'} + + + )} {type === 'file' && ( { handleClose(e); @@ -224,7 +419,7 @@ moveNode, currentPath, item }) => { removeDirectory() }}> - + remove directory @@ -254,6 +449,19 @@ moveNode, currentPath, item }) => { Move + + { + handleClose(e); + setShowInfoModal(true); + }} + > + + + + + More info + @@ -295,6 +503,64 @@ moveNode, currentPath, item }) => { + + + + Item details + + Showing all known metadata for this item. + + {type === 'file' && ( + + + {resourcePropertiesError && ( + + {resourcePropertiesError} + + )} + + )} + + {JSON.stringify(mergedItemInfo, null, 2)} + + + + + ); diff --git a/src/File.tsx b/src/File.tsx index 0d70d54..c216f27 100644 --- a/src/File.tsx +++ b/src/File.tsx @@ -27,6 +27,39 @@ import { Spacer } from "./components/Spacer"; import WarningIcon from "@mui/icons-material/Warning"; import { openToast } from "./components/openToast"; +const getDisplayName = (file) => file?.displayName || file?.name || ""; + +const getFileSizeBytes = (file) => { + const candidates = [ + file?.sizeInBytes, + file?.size, + file?.fileSize, + file?.dataSize, + file?.createdSize, + file?.totalSize, + ]; + for (const candidate of candidates) { + const parsed = Number(candidate); + if (Number.isFinite(parsed) && parsed >= 0) return parsed; + } + return null; +}; + +const formatBytes = (value) => { + const bytes = Number(value); + if (!Number.isFinite(bytes) || bytes < 0) return "Unknown"; + if (bytes < 1024) return `${bytes} B`; + const units = ["KB", "MB", "GB", "TB"]; + let size = bytes; + let unitIndex = -1; + while (size >= 1024 && unitIndex < units.length - 1) { + size /= 1024; + unitIndex++; + } + if (unitIndex < 0) return `${bytes} B`; + return `${size >= 10 ? size.toFixed(1) : size.toFixed(2)} ${units[unitIndex]}`; +}; + export const SelectedFile = ({ selectedFile, setSelectedFile, @@ -37,7 +70,8 @@ export const SelectedFile = ({ }) => { const [selectedType, setSelectedType] = useState(0); const [isExpandMore, setIsExpandMore] = useState(false); - const [customFileName, setCustomFileName] = useState(selectedFile?.name) + const [customFileName, setCustomFileName] = useState(getDisplayName(selectedFile)) + const fileSizeBytes = getFileSizeBytes(selectedFile); useEffect(() => { if (selectedFile?.mimeType?.toLowerCase()?.includes("image")) { setSelectedType("IMAGE"); @@ -45,6 +79,9 @@ export const SelectedFile = ({ setSelectedType("ATTACHMENT"); } }, [selectedFile?.mimeType]); + useEffect(() => { + setCustomFileName(getDisplayName(selectedFile)); + }, [selectedFile?.identifier, selectedFile?.service]); const createEmbedLink = async () => { const promise = (async ()=> { @@ -127,7 +164,7 @@ export const SelectedFile = ({ > - {selectedFile?.name} + {getDisplayName(selectedFile)} + + Size: {fileSizeBytes === null ? "Unknown" : formatBytes(fileSizeBytes)} + {mode === 'private' && ( { + if (!file?.service || !file?.qortalName || !file?.identifier) return ""; + return `/arbitrary/${encodeURIComponent(file.service)}/${encodeURIComponent( + file.qortalName + )}/${encodeURIComponent(file.identifier)}`; +}; + +const getFileNameForInference = (file) => { + const candidates = [ + file?.filename, + file?.displayName, + file?.name, + file?.title, + file?.fetchedResourceProperties?.filename, + ]; + for (const candidate of candidates) { + if (typeof candidate === "string" && candidate.trim()) { + return candidate; + } + } + return ""; +}; + +const getFileExtension = (file) => { + const name = getFileNameForInference(file); + const parts = name.split("."); + if (parts.length < 2) return ""; + return parts.pop().toLowerCase(); +}; + +const inferMimeTypeFromExtension = (extension) => { + const ext = (extension || "").toLowerCase(); + if (!ext) return ""; + + const extensionToMime = { + txt: "text/plain", + md: "text/markdown", + markdown: "text/markdown", + json: "application/json", + csv: "text/csv", + tsv: "text/tab-separated-values", + xml: "application/xml", + yaml: "application/yaml", + yml: "application/yaml", + toml: "application/toml", + ini: "text/plain", + log: "text/plain", + js: "application/javascript", + mjs: "application/javascript", + cjs: "application/javascript", + ts: "application/typescript", + jsx: "text/jsx", + tsx: "text/tsx", + css: "text/css", + html: "text/html", + htm: "text/html", + sh: "application/x-sh", + bat: "text/plain", + py: "text/x-python", + java: "text/x-java-source", + c: "text/x-c", + cpp: "text/x-c++", + h: "text/x-c", + hpp: "text/x-c++", + go: "text/x-go", + rs: "text/plain", + sol: "text/plain", + png: "image/png", + jpg: "image/jpeg", + jpeg: "image/jpeg", + gif: "image/gif", + webp: "image/webp", + bmp: "image/bmp", + svg: "image/svg+xml", + avif: "image/avif", + mp4: "video/mp4", + webm: "video/webm", + m4v: "video/x-m4v", + mov: "video/quicktime", + mkv: "video/x-matroska", + avi: "video/x-msvideo", + mp3: "audio/mpeg", + wav: "audio/wav", + ogg: "audio/ogg", + m4a: "audio/mp4", + aac: "audio/aac", + flac: "audio/flac", + }; + + return extensionToMime[ext] || ""; +}; + +const isTextLikeMimeType = (mimeType) => { + const normalized = (mimeType || "").toLowerCase(); + if (!normalized) return false; + if (normalized.startsWith("text/")) return true; + return EXTRA_TEXT_MIME_TYPES.has(normalized); +}; + +const inferPreviewKind = (file) => { + const mime = (file?.mimeType || "").toLowerCase(); + const service = (file?.service || "").toUpperCase(); + const name = getFileNameForInference(file).toLowerCase(); + const extension = getFileExtension(file); + const extensionMime = inferMimeTypeFromExtension(extension); + const effectiveMime = mime || extensionMime; + + if (effectiveMime.startsWith("image/")) return "image"; + if (effectiveMime.startsWith("video/")) return "video"; + if (effectiveMime.startsWith("audio/")) return "audio"; + if (isTextLikeMimeType(effectiveMime) || TEXT_PREVIEW_EXTENSIONS.has(extension)) + return "text"; + + if ( + service.includes("IMAGE") || + service.includes("THUMBNAIL") || + /\.(png|jpg|jpeg|gif|webp|bmp|svg|avif)$/i.test(name) + ) { + return "image"; + } + if (service.includes("VIDEO") || /\.(mp4|webm|m4v|mov|mkv|avi)$/i.test(name)) { + return "video"; + } + if (service.includes("AUDIO") || /\.(mp3|wav|ogg|m4a|aac|flac)$/i.test(name)) { + return "audio"; + } + + return "unknown"; +}; + +const getItemDisplayName = (item) => { + if (!item) return ""; + if (item.type === "file") return item.displayName || item.name || ""; + return item.name || ""; +}; + +const getItemSizeBytes = (item) => { + if (!item || item.type !== "file") return null; + const candidates = [ + item?.sizeInBytes, + item?.size, + item?.fileSize, + item?.dataSize, + item?.createdSize, + item?.totalSize, + ]; + for (const candidate of candidates) { + const numericValue = Number(candidate); + if (Number.isFinite(numericValue) && numericValue >= 0) { + return numericValue; + } + } + return null; +}; +const formatBytes = (value) => { + const bytes = Number(value); + if (!Number.isFinite(bytes) || bytes < 0) return "Unknown"; + if (bytes < 1024) return `${bytes} B`; + const units = ["KB", "MB", "GB", "TB"]; + let size = bytes; + let unitIndex = -1; + while (size >= 1024 && unitIndex < units.length - 1) { + size /= 1024; + unitIndex++; + } + if (unitIndex < 0) return `${bytes} B`; + return `${size >= 10 ? size.toFixed(1) : size.toFixed(2)} ${units[unitIndex]}`; +}; + +const getNodeSelectionKey = (item) => + `${item?.type || ""}|${item?.name || ""}|${item?.identifier || ""}|${ + item?.service || "" + }|${item?.group || 0}`; + +const FilePreviewDialog = ({ file, onClose }) => { + const previewKind = inferPreviewKind(file); + const previewUrl = getResourcePreviewUrl(file); + const [previewError, setPreviewError] = useState(false); + const [textPreview, setTextPreview] = useState(""); + const [textPreviewLoading, setTextPreviewLoading] = useState(false); + const [textPreviewError, setTextPreviewError] = useState(""); + + useEffect(() => { + setPreviewError(false); + }, [file?.identifier, file?.service, file?.qortalName]); + + useEffect(() => { + setTextPreview(""); + setTextPreviewError(""); + setTextPreviewLoading(false); + }, [file?.identifier, file?.service, file?.qortalName, previewKind]); + + useEffect(() => { + if (!file || previewKind !== "text" || !previewUrl) { + return; + } + + const controller = new AbortController(); + let disposed = false; + + const trimForPreview = (textValue) => { + const fullText = textValue || ""; + if (fullText.length <= MAX_TEXT_PREVIEW_CHARS) { + return fullText; + } + return `${fullText.slice( + 0, + MAX_TEXT_PREVIEW_CHARS + )}\n\n[Preview truncated to ${MAX_TEXT_PREVIEW_CHARS.toLocaleString()} characters]`; + }; + + const decodeBase64Utf8 = (encodedText) => { + const binary = atob(encodedText); + const bytes = new Uint8Array(binary.length); + for (let i = 0; i < binary.length; i++) { + bytes[i] = binary.charCodeAt(i); + } + return new TextDecoder("utf-8", { fatal: false }).decode(bytes); + }; + + const fetchTextPreview = async () => { + setTextPreviewLoading(true); + setTextPreviewError(""); + + try { + const base64Response = await fetch(`${previewUrl}?encoding=base64`, { + signal: controller.signal, + }); + if (!base64Response.ok) { + throw new Error(`Base64 fetch failed (${base64Response.status})`); + } + const base64Text = await base64Response.text(); + const decoded = trimForPreview(decodeBase64Utf8(base64Text)); + if (disposed) return; + setTextPreview(decoded); + } catch (base64Error) { + if (controller.signal.aborted || disposed) return; + try { + const plainResponse = await fetch(previewUrl, { signal: controller.signal }); + if (!plainResponse.ok) { + throw new Error(`Text fetch failed (${plainResponse.status})`); + } + const plainText = await plainResponse.text(); + if (disposed) return; + setTextPreview(trimForPreview(plainText)); + } catch (plainError) { + if (controller.signal.aborted || disposed) return; + setTextPreviewError( + plainError?.message || + base64Error?.message || + "Could not load text preview" + ); + } + } finally { + if (!disposed) { + setTextPreviewLoading(false); + } + } + }; + + fetchTextPreview(); + + return () => { + disposed = true; + controller.abort(); + }; + }, [file, previewKind, previewUrl]); + + return ( + + {getItemDisplayName(file) || "Preview"} + + {!previewUrl && ( + Preview unavailable for this file. + )} + {!!previewUrl && previewKind === "image" && !previewError && ( + setPreviewError(true)} + sx={{ + width: "100%", + maxHeight: "70vh", + objectFit: "contain", + borderRadius: "8px", + backgroundColor: "rgba(0,0,0,0.2)", + }} + /> + )} + {!!previewUrl && previewKind === "video" && !previewError && ( + setPreviewError(true)} + src={previewUrl} + sx={{ + width: "100%", + maxHeight: "70vh", + borderRadius: "8px", + backgroundColor: "rgba(0,0,0,0.2)", + }} + /> + )} + {!!previewUrl && previewKind === "audio" && !previewError && ( + setPreviewError(true)} + src={previewUrl} + sx={{ width: "100%" }} + /> + )} + {!!previewUrl && previewKind === "text" && ( + <> + {textPreviewLoading && Loading text preview...} + {!textPreviewLoading && !!textPreviewError && ( + {textPreviewError} + )} + {!textPreviewLoading && !textPreviewError && ( + + {textPreview || "(File is empty)"} + + )} + + )} + {!!previewUrl && + (previewKind === "unknown" || (previewKind !== "text" && previewError)) && ( + + Could not preview this resource inline. It may be encrypted or not a + supported media type. + + )} + + + + + + ); +}; const SortableItem = ({ item, @@ -78,18 +509,44 @@ const SortableItem = ({ fileSystem, moveNode, currentPath, + selected, + onToggleSelect, + onPreview, + showThumbnails, + onHydrateMetadata, + onTogglePin, }) => { const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ id: item.name + item.type, }); + const clickTimeoutRef = useRef(null); + const [thumbnailError, setThumbnailError] = useState(false); + const previewKind = inferPreviewKind(item); + const thumbnailUrl = + showThumbnails && item?.type === "file" && previewKind === "image" + ? getResourcePreviewUrl(item) + : ""; + + useEffect(() => { + setThumbnailError(false); + }, [item?.identifier, item?.service, item?.qortalName, showThumbnails]); + + useEffect(() => { + return () => { + if (clickTimeoutRef.current) { + clearTimeout(clickTimeoutRef.current); + clickTimeoutRef.current = null; + } + }; + }, []); const style = { transform: CSS.Transform.toString(transform), transition, - padding: "10px", - marginBottom: "5px", - borderRadius: "4px", + padding: "12px", + marginBottom: "10px", + borderRadius: "12px", cursor: "grab", }; @@ -103,6 +560,10 @@ const SortableItem = ({ currentPath={currentPath} moveNode={moveNode} item={item} + onPreview={item?.type === "file" ? onPreview : undefined} + onHydrateMetadata={item?.type === "file" ? onHydrateMetadata : undefined} + pinned={Boolean(item?.pinned)} + onTogglePin={item?.type === "file" ? onTogglePin : undefined} > { + if (item?.type !== "file") { + onClick(); + return; + } + if (clickTimeoutRef.current) { + clearTimeout(clickTimeoutRef.current); + } + clickTimeoutRef.current = setTimeout(() => { + onClick(); + clickTimeoutRef.current = null; + }, 220); + }} + onDoubleClick={() => { + if (item?.type !== "file") { + return; + } + if (clickTimeoutRef.current) { + clearTimeout(clickTimeoutRef.current); + clickTimeoutRef.current = null; + } + onPreview?.(); }} - onClick={() => onClick()} > + {item?.type === "file" && ( + { + event.preventDefault(); + event.stopPropagation(); + onToggleSelect?.(); + }} + sx={{ + position: "absolute", + top: "2px", + left: "2px", + zIndex: 2, + p: "2px", + color: "#93b8e7", + "&.Mui-checked": { color: "#59b2ff" }, + backgroundColor: "rgba(15, 17, 22, 0.42)", + borderRadius: "6px", + }} + /> + )} + {item?.type === "file" && Boolean(item?.pinned) && ( + + )} {item.type === "folder" ? ( - + + ) : thumbnailUrl && !thumbnailError ? ( + setThumbnailError(true)} + sx={{ + width: "100%", + height: "100%", + objectFit: "cover", + borderRadius: "inherit", + }} + /> ) : ( - + )} - {item.name} + {getItemDisplayName(item)} @@ -154,36 +708,54 @@ const SortableItem = ({ export const Manager = ({ myAddress, groups }) => { const [fileSystemPublic, setFileSystemPublic] = useState(null); const [fileSystemPrivate, setFileSystemPrivate] = useState(null); - const [fileSystemGroup, setFileSystemGroup] = useState(null); + const [fileSystemGroup, setFileSystemGroup] = useState(initialGroupFileSystem); const [selectedGroup, setSelectedGroup] = useState(null); -const [mode, setMode] = useState('public') + const [mode, setMode] = useState("public"); -const [fileSystem, setFileSystem] = useMemo(() => { - if (mode === 'public') { + const [fileSystem, setFileSystem] = useMemo(() => { + if (mode === "public") { return [fileSystemPublic, setFileSystemPublic]; - } else if (mode === 'group') { + } else if (mode === "group") { if (selectedGroup) { - const selectedGroupState = fileSystemGroup[selectedGroup] || initialFileSystem; - const setSelectedGroupState = (newState) => { - setFileSystemGroup((prev) => ({ - ...(prev || {}), - [selectedGroup]: newState, - })); - }; - return [selectedGroupState, setSelectedGroupState]; + const selectedGroupState = + fileSystemGroup[selectedGroup] || initialFileSystem; + const setSelectedGroupState = (newState) => { + setFileSystemGroup((prev) => ({ + ...(prev || {}), + [selectedGroup]: newState, + })); + }; + return [selectedGroupState, setSelectedGroupState]; } return [fileSystemGroup, setFileSystemGroup]; - } else { + } else { return [fileSystemPrivate, setFileSystemPrivate]; - } -}, [mode, fileSystemPublic, fileSystemPrivate, fileSystemGroup, selectedGroup]); + } + }, [ + mode, + fileSystemPublic, + fileSystemPrivate, + fileSystemGroup, + selectedGroup, + ]); const { isShow, onCancel, onOk, show, type } = useModal(); const [newDirName, setNewDirName] = useState(""); const [newName, setNewName] = useState(""); const [selectedFile, setSelectedFile] = useState(null); + const [previewFile, setPreviewFile] = useState(null); + const [selectedFileKeys, setSelectedFileKeys] = useState([]); + const [showThumbnails, setShowThumbnails] = useState(() => { + try { + return localStorage.getItem(SHOW_THUMBNAILS_KEY) === "1"; + } catch (error) { + return false; + } + }); + const [showBulkMoveModal, setShowBulkMoveModal] = useState(false); + const [bulkMoveTargetPath, setBulkMoveTargetPath] = useState([]); const [currentPath, setCurrentPath] = useState(["Root"]); const [isOpenPublish, setIsOpenPublish] = useState(false); @@ -198,35 +770,48 @@ const [fileSystem, setFileSystem] = useMemo(() => { return folder; }, [currentPath, fileSystem]); - useEffect(()=> { - if(!selectedGroup && groups?.length > 0){ - setSelectedGroup(groups[0]?.groupId) + useEffect(() => { + if (!selectedGroup && groups?.length > 0) { + setSelectedGroup(groups[0]?.groupId); } - }, [groups]) + }, [groups]); + + useEffect(() => { + setSelectedFileKeys([]); + }, [mode, selectedGroup]); + + useEffect(() => { + try { + localStorage.setItem(SHOW_THUMBNAILS_KEY, showThumbnails ? "1" : "0"); + } catch (error) {} + }, [showThumbnails]); const handleNavigate = (folderName) => { + setSelectedFileKeys([]); setCurrentPath((prev) => [...prev, folderName]); }; const handleBack = () => { if (currentPath.length > 1) { + setSelectedFileKeys([]); setCurrentPath((prev) => prev.slice(0, -1)); } }; useEffect(() => { - if(!myAddress?.address) return + if (!myAddress?.address) return; const fetchFileSystem = async () => { - const data = await getFileSystemQManagerFromDB(myAddress?.address); - if (data?.private && data?.public){ - setFileSystemPublic(data?.public) - setFileSystemPrivate(data?.private) - setFileSystemGroup(data?.group || initialFileSystem) + const data = await getPersistedFileSystemQManager(myAddress?.address); + if (data?.private && data?.public) { + setFileSystemPublic(data?.public); + setFileSystemPrivate(data?.private); + const groupData = + data?.group && !Array.isArray(data.group) ? data.group : initialGroupFileSystem; + setFileSystemGroup(groupData); } else { setFileSystemPublic(initialFileSystem); - setFileSystemPrivate(initialFileSystem) - setFileSystemGroup(initialFileSystem) - + setFileSystemPrivate(initialFileSystem); + setFileSystemGroup(initialGroupFileSystem); } }; fetchFileSystem(); @@ -234,9 +819,24 @@ const [fileSystem, setFileSystem] = useMemo(() => { useEffect(() => { if (fileSystemPublic && fileSystemPrivate && myAddress?.address) { - saveFileSystemQManagerToDB({public: fileSystemPublic, private: fileSystemPrivate, group: fileSystemGroup}, myAddress?.address); + const payload = { + public: fileSystemPublic, + private: fileSystemPrivate, + group: fileSystemGroup, + }; + + saveFileSystemQManagerEverywhere(payload, myAddress?.address).catch( + (error) => { + console.error("Failed to persist Q-Manager filesystem state:", error); + } + ); } - }, [fileSystemPublic , fileSystemPrivate, fileSystemGroup, myAddress?.address]); + }, [ + fileSystemPublic, + fileSystemPrivate, + fileSystemGroup, + myAddress?.address, + ]); const addDirectoryToCurrent = (directoryName) => { if (!directoryName || currentPath.length === 0) return false; @@ -321,6 +921,9 @@ const [fileSystem, setFileSystem] = useMemo(() => { .map((child) => child.name); newNode.name = ensureUniqueName(newNode.name, existingNames); + if (newNode.type === "file" && !newNode.displayName) { + newNode.displayName = newNode.name; + } targetNode.children.push(newNode); setFileSystem(updatedFileSystem); // Update the state @@ -391,11 +994,218 @@ const [fileSystem, setFileSystem] = useMemo(() => { return newName; }; + const cloneInitialFileSystem = () => + JSON.parse(JSON.stringify(initialFileSystem)); + + const buildResourceKey = (file) => + `${file?.qortalName || ""}|${file?.service || ""}|${file?.identifier || ""}|${ + file?.group || 0 + }`; + + const collectResourceKeys = (nodes, collected = new Set()) => { + if (!Array.isArray(nodes)) return collected; + for (const node of nodes) { + if (!node) continue; + if (node.type === "file") { + collected.add(buildResourceKey(node)); + } + if (Array.isArray(node.children)) { + collectResourceKeys(node.children, collected); + } + } + return collected; + }; + + const mergeDiscoveredFilesIntoTree = (treeNodes, filesToAdd) => { + const nextTree = + Array.isArray(treeNodes) && treeNodes.length > 0 + ? JSON.parse(JSON.stringify(treeNodes)) + : cloneInitialFileSystem(); + + if (!nextTree[0]) { + nextTree[0] = { type: "folder", name: "Root", children: [] }; + } + nextTree[0].children = nextTree[0].children || []; + + let recoveredFolder = nextTree[0].children.find( + (child) => + child.type === "folder" && child.name === RECOVERED_IMPORTS_FOLDER + ); + + if (!recoveredFolder) { + recoveredFolder = { + type: "folder", + name: RECOVERED_IMPORTS_FOLDER, + children: [], + }; + nextTree[0].children.push(recoveredFolder); + } + + recoveredFolder.children = recoveredFolder.children || []; + + const existingResourceKeys = collectResourceKeys(nextTree); + const existingNames = recoveredFolder.children + .filter((child) => child.type === "file") + .map((child) => child.name); + + let addedCount = 0; + for (const file of filesToAdd) { + const key = buildResourceKey(file); + if (existingResourceKeys.has(key)) continue; + + const uniqueName = ensureUniqueName( + file?.name || file?.identifier || "Recovered file", + existingNames + ); + existingNames.push(uniqueName); + existingResourceKeys.add(key); + + recoveredFolder.children.push({ + ...file, + type: "file", + name: uniqueName, + displayName: file?.displayName || uniqueName, + }); + addedCount++; + } + + return { + nextTree, + addedCount, + }; + }; + + const discoverAndImportPublishedQManagerFiles = async () => { + const promise = (async () => { + const ownerName = myAddress?.name?.name; + if (!ownerName) { + throw new Error("Could not determine your Qortal name"); + } + + const discovered = await discoverQManagerResourcesByName(ownerName); + if (!Array.isArray(discovered) || discovered.length === 0) { + throw new Error("No previously published Q-Manager files were found"); + } + + const groupedByTarget = discovered.reduce( + (acc, resource) => { + const identifier = resource?.identifier || ""; + const groupFromIdentifier = /^grp-(\d+)-q-manager/i.exec(identifier); + const inferredGroupId = + Number(resource?.groupId) || + Number(groupFromIdentifier?.[1]) || + (identifier.startsWith("grp-") ? Number(selectedGroup) || 0 : 0) || + 0; + const normalizedResource = { + type: "file", + name: resource?.name || resource?.identifier, + displayName: + resource?.displayName || + resource?.filename || + resource?.name || + resource?.identifier, + identifier, + service: resource?.service, + qortalName: resource?.qortalName || ownerName, + mimeType: resource?.mimeType, + sizeInBytes: resource?.sizeInBytes, + ...(inferredGroupId > 0 + ? { + group: inferredGroupId, + groupName: + groups?.find( + (groupItem) => groupItem.groupId === inferredGroupId + )?.groupName || `Group ${inferredGroupId}`, + } + : {}), + }; + + if (inferredGroupId > 0) { + if (!acc.group[inferredGroupId]) { + acc.group[inferredGroupId] = []; + } + acc.group[inferredGroupId].push(normalizedResource); + return acc; + } + + const isPrivate = + normalizedResource?.service?.includes("_PRIVATE") || + normalizedResource?.identifier?.startsWith("p-"); + + if (isPrivate) { + acc.private.push(normalizedResource); + } else { + acc.public.push(normalizedResource); + } + return acc; + }, + { public: [], private: [], group: {} } + ); + + let totalAdded = 0; + + const publicMerge = mergeDiscoveredFilesIntoTree( + fileSystemPublic, + groupedByTarget.public + ); + if (publicMerge.addedCount > 0) { + setFileSystemPublic(publicMerge.nextTree); + totalAdded += publicMerge.addedCount; + } + + const privateMerge = mergeDiscoveredFilesIntoTree( + fileSystemPrivate, + groupedByTarget.private + ); + if (privateMerge.addedCount > 0) { + setFileSystemPrivate(privateMerge.nextTree); + totalAdded += privateMerge.addedCount; + } + + if (Object.keys(groupedByTarget.group).length > 0) { + const nextGroupState = + fileSystemGroup && !Array.isArray(fileSystemGroup) + ? { ...fileSystemGroup } + : {}; + + for (const [groupIdKey, files] of Object.entries(groupedByTarget.group)) { + const groupId = Number(groupIdKey); + const currentGroupTree = nextGroupState[groupId] || cloneInitialFileSystem(); + const mergedGroup = mergeDiscoveredFilesIntoTree(currentGroupTree, files); + if (mergedGroup.addedCount > 0) { + nextGroupState[groupId] = mergedGroup.nextTree; + totalAdded += mergedGroup.addedCount; + } + } + + setFileSystemGroup(nextGroupState); + } + + if (totalAdded === 0) { + throw new Error( + "Previously published Q-Manager files were found, but they are already in your current structure" + ); + } + + setCurrentPath(["Root"]); + return { added: totalAdded }; + })(); + + openToast(promise, { + loading: "Finding and importing your published Q-Manager files...", + success: "Published Q-Manager files imported", + error: (err) => `Import failed: ${err?.error || err?.message || err}`, + }); + + return promise; + }; + const renameByPath = async (item) => { try { const pathArray = currentPath; // Get the current path const oldName = item.name; // Original name of the item - setNewName(oldName); + const oldDisplayName = getItemDisplayName(item); + setNewName(oldDisplayName); const newNameInput = await show("rename"); // Prompt user for the new name const type = item.type; // Type of the item (file or folder) @@ -430,7 +1240,7 @@ const [fileSystem, setFileSystem] = useMemo(() => { .map((child) => child.name); // Ensure a unique name if there is a conflict - if (existingNames.includes(newName)) { + if (type === "folder" && existingNames.includes(newName)) { let copyIndex = 1; const baseName = newName.replace(/(-copy\d*)?$/, ""); // Remove any existing "-copy" suffix while (existingNames.includes(newName)) { @@ -444,6 +1254,11 @@ const [fileSystem, setFileSystem] = useMemo(() => { (child) => child.name === oldName && child.type === type ); if (targetNode) { + if (type === "file") { + targetNode.displayName = newName; + setFileSystem(updatedFileSystem); + return true; + } targetNode.name = newName; // Update the name setFileSystem(updatedFileSystem); // Update the state return true; @@ -462,13 +1277,13 @@ const [fileSystem, setFileSystem] = useMemo(() => { const pathArray = currentPath; // Get the current path const name = item.name; // Original name of the item const type = item.type; // Type of the item (file or folder) - + const updatedFileSystem = JSON.parse(JSON.stringify(fileSystem)); // Deep copy to avoid state mutation const targetFolder = pathArray[pathArray.length - 1]; // Current directory const parents = pathArray.slice(0, -1); // Parent directories - + let currentNodes = updatedFileSystem; - + // Traverse through parent directories for (const parent of parents) { const parentNode = currentNodes.find( @@ -480,7 +1295,7 @@ const [fileSystem, setFileSystem] = useMemo(() => { } currentNodes = parentNode.children; // Move deeper into the tree } - + // Find the target folder const currentFolderNode = currentNodes.find( (node) => node.name === targetFolder && node.type === "folder" @@ -489,20 +1304,23 @@ const [fileSystem, setFileSystem] = useMemo(() => { console.error("Current directory not found or empty"); return false; // Current directory not found or empty } - + // Find the target node by name and type const targetNodeIndex = currentFolderNode.children.findIndex( (child) => child.name === name && child.type === type ); - + if (targetNodeIndex !== -1) { // Update the node in the file system - currentFolderNode.children[targetNodeIndex] = { ...currentFolderNode.children[targetNodeIndex], ...item }; - + currentFolderNode.children[targetNodeIndex] = { + ...currentFolderNode.children[targetNodeIndex], + ...item, + }; + setFileSystem(updatedFileSystem); // Update the state return true; } - + console.error("File or folder not found"); return false; // File or folder not found } catch (error) { @@ -510,7 +1328,6 @@ const [fileSystem, setFileSystem] = useMemo(() => { return false; } }; - const handleDragEnd = (event) => { const { active, over } = event; @@ -613,7 +1430,6 @@ const [fileSystem, setFileSystem] = useMemo(() => { sourcePathArray, targetPathArray ) => { - if (!nodeName || !nodeType || sourcePathArray.length === 0) { console.error("Invalid parameters"); return false; @@ -647,7 +1463,6 @@ const [fileSystem, setFileSystem] = useMemo(() => { return false; } - // Locate the target folder const targetFolder = targetPathArray.length > 0 @@ -659,13 +1474,11 @@ const [fileSystem, setFileSystem] = useMemo(() => { return false; } - // Find and remove the node from the source folder const nodeIndex = sourceFolder.children.findIndex( (node) => node.name === nodeName && node.type === nodeType ); - if (nodeIndex === -1) { console.error("Node not found in source folder"); return false; @@ -673,7 +1486,6 @@ const [fileSystem, setFileSystem] = useMemo(() => { const [nodeToMove] = sourceFolder.children.splice(nodeIndex, 1); - // Check for naming conflicts in the target folder const existingNames = targetFolder.children .filter((node) => node.type === nodeType) @@ -684,7 +1496,6 @@ const [fileSystem, setFileSystem] = useMemo(() => { // Add the node to the target folder targetFolder.children.push(nodeToMove); - // Update the state setFileSystem(updatedFileSystem); return true; @@ -706,58 +1517,280 @@ const [fileSystem, setFileSystem] = useMemo(() => { }) ); - if (!fileSystem) return null; + const visibleItems = useMemo(() => { + const baseItems = currentFolder?.children || []; + if (mode !== "group") return baseItems; + return baseItems.filter( + (item) => + item.type === "folder" || + (item.type === "file" && item?.group === selectedGroup) + ); + }, [currentFolder?.children, mode, selectedGroup]); + const selectedVisibleFiles = useMemo(() => { + return visibleItems.filter( + (item) => + item?.type === "file" && + selectedFileKeys.includes(getNodeSelectionKey(item)) + ); + }, [visibleItems, selectedFileKeys]); + + const selectedSizeSummary = useMemo(() => { + let totalBytes = 0; + let knownCount = 0; + for (const item of selectedVisibleFiles) { + const size = getItemSizeBytes(item); + if (size === null) continue; + totalBytes += size; + knownCount++; + } + return { + totalBytes, + knownCount, + unknownCount: selectedVisibleFiles.length - knownCount, + }; + }, [selectedVisibleFiles]); + + const toggleSelectFile = (item) => { + if (item?.type !== "file") return; + const key = getNodeSelectionKey(item); + setSelectedFileKeys((prev) => + prev.includes(key) + ? prev.filter((entry) => entry !== key) + : [...prev, key] + ); + }; + + const togglePinByPath = (item) => { + if (!item || item?.type !== "file") return; + updateByPath({ + ...item, + pinned: !item?.pinned, + }); + }; + + const clearSelection = () => { + setSelectedFileKeys([]); + }; + + const removeSelectedFromManager = () => { + if (selectedVisibleFiles.length === 0) return; + const selectedKeys = new Set( + selectedVisibleFiles.map((item) => getNodeSelectionKey(item)) + ); + const updatedFileSystem = JSON.parse(JSON.stringify(fileSystem)); + let currentNodes = updatedFileSystem; + + for (const parent of currentPath.slice(0, -1)) { + const parentNode = currentNodes.find( + (node) => node.name === parent && node.type === "folder" + ); + if (!parentNode) return; + currentNodes = parentNode.children; + } + + const targetFolder = currentNodes.find( + (node) => + node.name === currentPath[currentPath.length - 1] && + node.type === "folder" + ); + if (!targetFolder || !Array.isArray(targetFolder.children)) return; + + targetFolder.children = targetFolder.children.filter((child) => { + if (child?.type !== "file") return true; + return !selectedKeys.has(getNodeSelectionKey(child)); + }); + + setFileSystem(updatedFileSystem); + clearSelection(); + }; + + const renderFolderTreeForBulkMove = (directories, path = []) => { + return (directories || []) + .filter((node) => node?.type === "folder") + .map((dir) => { + const fullPath = [...path, dir.name]; + const isSelectedTarget = + fullPath.join("/") === bulkMoveTargetPath.join("/"); + const isCurrentPath = fullPath.join("/") === currentPath.join("/"); + + return ( + + { + if (isCurrentPath) return; + setBulkMoveTargetPath(fullPath); + }} + sx={{ + width: "100%", + justifyContent: "flex-start", + px: "8px", + py: "6px", + borderRadius: "8px", + opacity: isCurrentPath ? 0.6 : 1, + backgroundColor: isSelectedTarget + ? "rgba(89,178,255,0.2)" + : "transparent", + }} + > + + {dir.name} + + {Array.isArray(dir.children) && dir.children.length > 0 && ( + + {renderFolderTreeForBulkMove(dir.children, fullPath)} + + )} + + ); + }); + }; + + const moveSelectedToPath = () => { + if (selectedVisibleFiles.length === 0 || bulkMoveTargetPath.length === 0) { + return; + } + + const selectedKeys = new Set( + selectedVisibleFiles.map((item) => getNodeSelectionKey(item)) + ); + + const updatedFileSystem = JSON.parse(JSON.stringify(fileSystem)); + + const traverseFolder = (pathArray) => { + let nodes = updatedFileSystem; + let folder = null; + for (const part of pathArray) { + folder = nodes.find((node) => node.name === part && node.type === "folder"); + if (!folder) return null; + nodes = folder.children; + } + return folder; + }; + + const sourceFolder = traverseFolder(currentPath); + const targetFolder = traverseFolder(bulkMoveTargetPath); + if (!sourceFolder || !targetFolder) return; + + sourceFolder.children = sourceFolder.children || []; + targetFolder.children = targetFolder.children || []; + + const movedNodes = []; + sourceFolder.children = sourceFolder.children.filter((node) => { + if (node?.type !== "file") return true; + if (!selectedKeys.has(getNodeSelectionKey(node))) return true; + movedNodes.push(node); + return false; + }); + + for (const node of movedNodes) { + const existingNames = targetFolder.children + .filter((child) => child.type === node.type) + .map((child) => child.name); + node.name = ensureUniqueName(node.name, existingNames); + targetFolder.children.push(node); + } + + setFileSystem(updatedFileSystem); + + setShowBulkMoveModal(false); + setBulkMoveTargetPath([]); + clearSelection(); + }; + + const deleteSelectedFromQDN = async () => { + if (selectedVisibleFiles.length === 0) return; + const filesToDelete = [...selectedVisibleFiles]; + const tombstoneData64 = btoa("d"); + + const promise = (async () => { + removeSelectedFromManager(); + + for (const file of filesToDelete) { + if (!file?.identifier || !file?.service) continue; + await qortalRequest({ + action: "PUBLISH_QDN_RESOURCE", + service: file.service, + identifier: file.identifier, + data64: tombstoneData64, + }); + } + })(); + + openToast(promise, { + loading: "Deleting selected files from QDN...", + success: "Selected files deleted from QDN", + error: (err) => `Delete failed: ${err?.error || err?.message || err}`, + }); + + return promise; + }; + + if (!fileSystem) return null; - return ( - - { -setCurrentPath(['Root']) -setMode(newValue) - }} centered> - - - - - - - - Q-Manager - - - - {mode === 'group' && ( - - + + { + clearSelection(); + setCurrentPath(["Root"]); + setMode(newValue); + }} + centered + > + + + + + + + + + Q-Manager + + + {mode === "group" && ( + + - - )} - {mode === 'group' && !selectedGroup ? ( - <> - - ) : ( - <> - - {/* Add Folder Button */} - { - try { - await show("export-data"); - } catch (error) {} - }} - sx={{ - gap: '5px', - background: '#4444', - padding: '5px', - borderRadius: '5px', - }} - > - - - Save data - - - { - try { - const dirname = await show("new-directory"); - addDirectoryToCurrent(dirname); - } catch (error) { - } finally { - setNewDirName(""); - } - }} - sx={{ - gap: '5px', - background: '#4444', - padding: '5px', - borderRadius: '5px', - }} - > - - - +Folder - - - - {/* Add File Button */} - { - setIsOpenPublish(true); - }} - sx={{ - gap: '5px', - background: '#4444', - padding: '5px', - borderRadius: '5px', - }} - > - - - +File - - - + + )} - {/* */} - - - - - - item.type === 'folder' || (item.type === 'file' && item?.group === selectedGroup )) : currentFolder?.children)?.map((item) => item.name + item.type)} + + + + - {(mode === 'group' ? currentFolder?.children?.filter((item)=> item.type === 'folder' || (item.type === 'file' && item?.group === selectedGroup) ) : currentFolder?.children)?.map((item) => ( - { - renameByPath(item); - }} - removeFile={() => { - removeByNodePath(undefined, item.name, undefined); - }} - removeDirectory={() => { - deleteFolderInCurrent(item.name); - }} - onClick={() => { - if (item.type === "folder") { - handleNavigate(item.name); - } else if (item.type === "file") { - setSelectedFile(item); - } - }} - /> - ))} - - - - - )} - - + + item.name + item.type)} + > + {visibleItems?.map((item) => ( + toggleSelectFile(item)} + moveNode={moveNodeByPath} + onPreview={() => { + setPreviewFile(item); + }} + onHydrateMetadata={(metadata) => { + if (!metadata || Object.keys(metadata).length === 0) return; + updateByPath({ + ...item, + ...metadata, + }); + setSelectedFile((prev) => { + if (!prev) return prev; + if (getNodeSelectionKey(prev) !== getNodeSelectionKey(item)) { + return prev; + } + return { + ...prev, + ...metadata, + }; + }); + }} + onTogglePin={() => { + togglePinByPath(item); + }} + rename={() => { + renameByPath(item); + }} + removeFile={() => { + removeByNodePath(undefined, item.name, undefined); + }} + removeDirectory={() => { + deleteFolderInCurrent(item.name); + }} + onClick={() => { + if (item.type === "folder") handleNavigate(item.name); + else setSelectedFile(item); + }} + /> + ))} + + + + + )} + {isOpenPublish && ( setIsOpenPublish(false)} selectedAction={{ - action: "PUBLISH_QDN_RESOURCE", + action: "PUBLISH_MULTIPLE_QDN_RESOURCES", + files: [], }} mode={mode} groups={groups} @@ -949,8 +2090,8 @@ setMode(newValue) {isShow && ( - - + + + + }} + > + Import filesystem structure from QDN + + - @@ -1134,17 +2349,73 @@ setMode(newValue) )} )} + { + setShowBulkMoveModal(false); + setBulkMoveTargetPath([]); + }} + > + + + Move {selectedVisibleFiles.length} selected file + {selectedVisibleFiles.length === 1 ? "" : "s"} + + + Choose target folder + + {renderFolderTreeForBulkMove(fileSystem)} + + + + + + {selectedFile && ( )} + {previewFile && ( + setPreviewFile(null)} + /> + )} ); }; @@ -1157,5 +2428,5 @@ export const AppsContainer = styled(Box)(({ theme }) => ({ flexWrap: "wrap", alignItems: "flex-start", alignSelf: "center", - paddingBottom: '50px' + paddingBottom: "50px", })); diff --git a/src/ShowAction.jsx b/src/ShowAction.jsx index 485a4d1..7400929 100644 --- a/src/ShowAction.jsx +++ b/src/ShowAction.jsx @@ -18,10 +18,10 @@ export const Transition = React.forwardRef(function Transition(props, ref) { return ; }); -export const ShowAction = ({ selectedAction, handleClose, myName, addNodeByPath, mode , groups, selectedGroup}) => { +export const ShowAction = ({ selectedAction, handleClose, myName, addNodeByPath, mode , groups, selectedGroup, }) => { const ActionComponent = useMemo(() => { switch (selectedAction?.action) { - + case "PUBLISH_QDN_RESOURCE": return PUBLISH_QDN_RESOURCE; case "PUBLISH_MULTIPLE_QDN_RESOURCES": @@ -70,7 +70,7 @@ export const ShowAction = ({ selectedAction, handleClose, myName, addNodeByPath, overflowY: "auto", }} > - + {/* ` - font-family: 'IBM Plex Sans', sans-serif; - font-size: 14px; - display: block; - margin-bottom: 4px; - font-weight: 400; - ` -); - -export const formatResponse = (code) => { - return beautify.js(code, { - indent_size: 2, // Number of spaces for indentation - space_in_empty_paren: true, // Add spaces inside parentheses - }); -}; -export const PUBLISH_MULTIPLE_QDN_RESOURCES = () => { +import { privateServices, services } from "../constants"; +import { useDropzone } from "react-dropzone"; + +const uid = new ShortUniqueId({ length: 10 }); + +export const Label = styled("label")` + font-family: 'IBM Plex Sans', sans-serif; + font-size: 14px; + display: block; + margin-bottom: 4px; + font-weight: 400; +`; + +export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ + files: initialFiles = [], + addNodeByPath, + myName, + mode, + groups, + selectedGroup, +}) => { + const [files, setFiles] = useState(initialFiles); const [requestData, setRequestData] = useState({ - service: "DOCUMENT", - identifier: "test-identifier", + service: mode === "private" ? "DOCUMENT_PRIVATE" : "DOCUMENT", }); + const [isLoading, setIsLoading] = useState(false); + const [response, setResponse] = useState(""); const { getRootProps, getInputProps } = useDropzone({ - maxFiles: 1, - onDrop: async (acceptedFiles) => { - const fileSelected = acceptedFiles[0]; - if (fileSelected) { - setFile(fileSelected); - } + multiple: true, + onDrop: (acceptedFiles) => { + // append new files to state + setFiles((prev) => [...prev, ...acceptedFiles]); }, }); - const [isLoading, setIsLoading] = useState(false); - const [file, setFile] = useState(null); - const [responseData, setResponseData] = useState( - formatResponse(`{ - "type": "PUBLISH_MULTIPLE_QDN_RESOURCES", - "timestamp": 1697286687406, - "reference": "3jU9WpEPAvu9iL3cMfVd2AUmn9AijJRzkGCxVtXfpuUFZubM8AFDcbk5XA9m5AhPfsbMDFkSDzPJnkjeLA5GA59E", - "fee": "0.01000000", - "signature": "3QJ1EUvX3rskVNaP3RWvJwb9DsGgHPvneWqBWS62PCcuCj5N4Ei9Tr4nFj4nQeMqMU2qNkVD3Sb59e7iUWkawH3s", - "txGroupId": 0, - "approvalStatus": "NOT_REQUIRED", - "creatorAddress": "Qhxphh7g5iNtxAyLLpPMZzp4X85yf2tVam", - "voterPublicKey": "C5spuNU1BAHZDEkxF3wnrAPRDuNrVceaDJ6tDKitenko", - "pollName": "A test poll 3", - "optionIndex": 1 - }`) - ); - const codePollName = ` -await qortalRequest({ - action: "PUBLISH_MULTIPLE_QDN_RESOURCES", - service: "${requestData?.service}", - identifier: "${requestData?.identifier}", // optional - data64: ${requestData?.data64 ? `"${requestData?.data64}"` : "empty"}, // base64 string. Remove this param if you are putting in a FILE object - file: ${file ? 'FILE OBJECT' : "empty"} // File Object. Remove this param if you are putting in a base64 string. -}); -`.trim(); - - const executeQortalRequest = async () => { - try { + // Utility: derive filename parts & identifier + const makeMeta = (file) => { + const ext = file.name.includes(".") + ? file.name.split(".").pop() + : ""; + const title = file.name + .split(".") + .slice(0, -1) + .join(".") + .replace(/\s+/g, "_") + .slice(0, 20) || "untitled"; + const filename = ext ? `${title}.${ext}` : title; + const base = title.toLowerCase(); + const prefix = + mode === "public" + ? "pub" + : mode === "private" + ? "pvt" + : `grp-${selectedGroup}`; + const identifier = `${prefix}-q-manager-${base}`; + return { filename, identifier }; + }; + + const executeMulti = async () => { + const promise = (async () => { + if (mode === "group" && !selectedGroup) + throw new Error("Please select a group"); + if (!requestData?.service) throw new Error("Please select a service"); setIsLoading(true); - let account = await qortalRequest({ + + // 1) build resources array + const resources = []; + const localMetaByIdentifier = new Map(); + for (const file of files) { + const { filename, identifier } = makeMeta(file); + const data64 = await fileToBase64(file); + localMetaByIdentifier.set(identifier, { + filename, + mimeType: file?.type || "application/octet-stream", + sizeInBytes: Number(file?.size) || 0, + }); + + if (mode === "group") { + // group‐encrypt + const encrypted = await qortalRequest({ + action: "ENCRYPT_QORTAL_GROUP_DATA", + data64, + groupId: selectedGroup, + }); + resources.push({ + service: requestData.service, + identifier, + filename, + mimeType: file.type, + data64: encrypted, + externalEncrypt: true, + }); + } else if (mode === "private") { + // private‐encrypt + const encrypted = await qortalRequest({ + action: "ENCRYPT_DATA_WITH_SHARING_KEY", + data64, + }); + resources.push({ + service: requestData.service, + identifier, + filename, + mimeType: file.type, + data64: encrypted, + }); + } else { + // public + resources.push({ + service: requestData.service, + identifier, + filename, + mimeType: file.type, + file, // raw File object + }); + } + } + + // 2) send multi-publish request + const result = await qortalRequest({ action: "PUBLISH_MULTIPLE_QDN_RESOURCES", - service: requestData?.service, - identifier: requestData?.identifier, - file, - data64: requestData?.data64 + resources, }); - setResponseData(formatResponse(JSON.stringify(account))); - } catch (error) { - setResponseData(formatResponse(JSON.stringify(error))); - console.error(error); + // 3) update tree exactly like single publish + for (const res of Array.isArray(result) ? result : [result]) { + const { identifier, service, filename, mimeType } = res; + const localMeta = localMetaByIdentifier.get(identifier) || {}; + const resolvedFilename = filename || localMeta?.filename || identifier; + const resolvedMimeType = + mimeType || localMeta?.mimeType || "application/octet-stream"; + const resolvedSizeValue = + res?.sizeInBytes ?? + res?.size ?? + res?.dataSize ?? + res?.createdSize ?? + res?.totalSize ?? + localMeta?.sizeInBytes; + const parsedSize = Number(resolvedSizeValue); + const sizeInBytes = + Number.isFinite(parsedSize) && parsedSize >= 0 ? parsedSize : undefined; + const groupEntry = + mode === "group" + ? { + group: selectedGroup, + groupName: groups?.find((g) => g.groupId === selectedGroup)?.groupName, + } + : {}; + + addNodeByPath(undefined, { + type: "file", + name: resolvedFilename, + mimeType: resolvedMimeType, + ...(sizeInBytes !== undefined ? { sizeInBytes } : {}), + qortalName: myName, + identifier, + service, + ...groupEntry, + }); + } + + setFiles([]); // clear selection + return result; + })(); + + await openToast(promise, { + loading: "Publishing files...", + success: "All files published!", + error: (e) => `Publish failed: ${e.message || e.error || e}`, + }); + + try { + const final = await promise; + setResponse(JSON.stringify(final, null, 2)); + } catch (e) { + setResponse(JSON.stringify(e, null, 2)); } finally { setIsLoading(false); } }; - const handleChange = (e) => { - setRequestData((prev) => { - return { - ...prev, - [e.target.name]: e.target.value, - }; - }); - }; return ( -
-
-
+ + + - - - - {file && ( - { - setFile(null) - }}>Remove file - )} - - -
-
- - -

Request

-
+
+ + -

Response

- {isLoading ? ( - - - - ) : ( - - )} + + + Click or drag files here to add more ({files.length}) +
+ + {files.length} file{files.length !== 1 ? "s" : ""} selected: + +
    + {files.map((f, i) => ( +
  • + {f.name}{" "} + + setFiles((prev) => prev.filter((_, idx) => idx !== i)) + } + > + Remove + +
  • + ))} +
+
+ +
+ ); }; diff --git a/src/actions/PUBLISH_QDN_RESOURCE.jsx b/src/actions/PUBLISH_QDN_RESOURCE.jsx index 8d529b3..daff104 100644 --- a/src/actions/PUBLISH_QDN_RESOURCE.jsx +++ b/src/actions/PUBLISH_QDN_RESOURCE.jsx @@ -8,15 +8,12 @@ import { Typography, styled, } from "@mui/material"; -import { DisplayCode } from "../components/DisplayCode"; -import { DisplayCodeResponse } from "../components/DisplayCodeResponse"; import ShortUniqueId from "short-unique-id"; import Button from "../components/Button"; import { useDropzone } from "react-dropzone"; import { privateServices, services } from "../constants"; import { fileToBase64 } from "../utils"; -import toast from 'react-hot-toast'; import { openToast } from "../components/openToast"; const uid = new ShortUniqueId({ length: 10 }); @@ -33,7 +30,9 @@ export const Label = styled("label")( export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile, updateByPath , groups, selectedGroup}) => { const [requestData, setRequestData] = useState({ - service: existingFile?.service || mode === 'private' ? "DOCUMENT_PRIVATE" : "DOCUMENT" + service: + existingFile?.service || + (mode === "private" ? "DOCUMENT_PRIVATE" : "DOCUMENT"), }); const { getRootProps, getInputProps } = useDropzone({ @@ -55,6 +54,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile const promise = (async () => { try { if (!file) throw new Error('Please select a file') + if (!requestData?.service) throw new Error("Please select a service") if(!selectedGroup) throw new Error('Please select a group') const findGroup = groups?.find((group)=> group.groupId === selectedGroup) if(!findGroup) throw new Error('Cannot find group') @@ -95,6 +95,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile updateByPath({ ...existingFile, mimeType: file?.type, + sizeInBytes: file?.size, }); setFile(""); return true; // Success @@ -106,6 +107,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile type: "file", name: filename, mimeType: file?.type, + sizeInBytes: file?.size, qortalName: myName, identifier: constructedIdentifier, service: requestData?.service, @@ -140,6 +142,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile const promise = (async () => { try { if (!file) return; + if (!requestData?.service) throw new Error("Please select a service") setIsLoading(true); const fileExtension = file?.name?.includes(".") ? file.name.split(".").pop() : ""; @@ -174,6 +177,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile updateByPath({ ...existingFile, mimeType: file?.type, + sizeInBytes: file?.size, }); setFile(""); return true; // Success @@ -185,6 +189,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile type: "file", name: filename, mimeType: file?.type, + sizeInBytes: file?.size, qortalName: myName, identifier: constructedIdentifier, service: requestData?.service, @@ -216,6 +221,9 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile setIsLoading(true); const promise = (async () => { + if (!requestData?.service) { + throw new Error("Please select a service"); + } const fileExtension = file?.name?.includes(".") ? file.name.split(".").pop() : ""; @@ -245,6 +253,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile updateByPath({ ...existingFile, mimeType: file?.type, + sizeInBytes: file?.size, }); setFile(""); return; @@ -256,6 +265,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile type: "file", name: filename, mimeType: file?.type, + sizeInBytes: file?.size, qortalName: myName, identifier: constructedIdentifier, service: requestData?.service, @@ -322,13 +332,15 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, mode, existingFile MenuProps={{ PaperProps: { sx: { - backgroundColor: "#333333", // Background of the dropdown - color: "#ffffff", // Text color + backgroundColor: "#1f2530", + color: "#ffffff", + backgroundImage: "none", + maxHeight: 380, }, }, }} > - + No service selected {(mode === 'private' ? privateServices : services)?.map((service) => { diff --git a/src/components/Button.jsx b/src/components/Button.jsx index 5b08a65..9c54c04 100644 --- a/src/components/Button.jsx +++ b/src/components/Button.jsx @@ -1,13 +1,14 @@ import React from "react"; import "./button.css"; -const Button = ({ name, onClick, bgColor }) => { +const Button = ({ name, onClick, bgColor, disabled = false }) => { return (
diff --git a/src/components/button.css b/src/components/button.css index f3ca937..dda1bb5 100644 --- a/src/components/button.css +++ b/src/components/button.css @@ -25,3 +25,10 @@ .button:focus { outline: none; } + +.button:disabled { + opacity: 0.5; + cursor: not-allowed; + filter: none; + box-shadow: none; +} diff --git a/src/storage.ts b/src/storage.ts index d3a4cf0..6ed2cc1 100644 --- a/src/storage.ts +++ b/src/storage.ts @@ -1,12 +1,69 @@ +// @ts-nocheck +import { + base64ToUint8Array, + objectToBase64, + uint8ArrayToObject, +} from "./utils"; +import { privateServices, services } from "./constants"; + +const DB_NAME = "FileSystemDB"; +const DB_VERSION = 1; +const STORE_NAME = "fileSystemQManager"; +const LOCAL_STORAGE_PREFIX = "q-manager-filesystem-v1"; + +const QDN_STRUCTURE_IDENTIFIER = "q-manager-filesystem-v1"; +const QDN_STRUCTURE_FILENAME = "q-manager-filesystem-v1.txt"; +const LEGACY_QDN_BACKUP_IDENTIFIER = "qmgr-db-backup"; +const STORAGE_RECORD_VERSION = 2; + +const getLocalStorageKey = (address) => `${LOCAL_STORAGE_PREFIX}:${address}`; + +const isValidFileSystemQManager = (data) => { + return ( + data && + typeof data === "object" && + Array.isArray(data.public) && + Array.isArray(data.private) && + data.group !== undefined + ); +}; + +const getNow = () => Date.now(); + +const toStorageRecord = (fileSystemQManager, updatedAt = getNow()) => ({ + version: STORAGE_RECORD_VERSION, + updatedAt, + data: fileSystemQManager, +}); + +const parseFileSystemRecord = (raw) => { + if (!raw || typeof raw !== "object") return null; + + if (isValidFileSystemQManager(raw?.data)) { + return { + data: raw.data, + updatedAt: Number(raw.updatedAt) || 0, + }; + } + + if (isValidFileSystemQManager(raw)) { + return { + data: raw, + updatedAt: Number(raw.updatedAt || raw._updatedAt) || 0, + }; + } + + return null; +}; + const initializeDB = () => { return new Promise((resolve, reject) => { - const request = indexedDB.open("FileSystemDB", 1); + const request = indexedDB.open(DB_NAME, DB_VERSION); request.onupgradeneeded = (event) => { const db = event.target.result; - if (!db.objectStoreNames.contains("fileSystemQManager")) { - // Create object store with `address` as the keyPath - db.createObjectStore("fileSystemQManager", { keyPath: "address" }); + if (!db.objectStoreNames.contains(STORE_NAME)) { + db.createObjectStore(STORE_NAME, { keyPath: "address" }); } }; @@ -15,47 +72,472 @@ const initializeDB = () => { }); }; - +export const saveFileSystemQManagerToLocalStorage = ( + fileSystemQManager, + address, + updatedAt = getNow() +) => { + if (!address) return; - export const saveFileSystemQManagerToDB = async ( fileSystemQManager, address) => { - try { - const db = await initializeDB(); - const transaction = db.transaction("fileSystemQManager", "readwrite"); - const store = transaction.objectStore("fileSystemQManager"); - - // Save or update data for the specific address - store.put({ address, data: fileSystemQManager }); - - return new Promise((resolve, reject) => { - transaction.oncomplete = () => resolve(`FileSystemQManager for address ${address} saved successfully`); - transaction.onerror = (event) => reject(event.target.error); - }); - } catch (error) { - console.error("Error saving fileSystemQManager to IndexedDB:", error); + try { + const key = getLocalStorageKey(address); + localStorage.setItem( + key, + JSON.stringify(toStorageRecord(fileSystemQManager, updatedAt)) + ); + } catch (error) { + console.error("Error saving fileSystemQManager to localStorage:", error); + } +}; + +const getFileSystemQManagerRecordFromLocalStorage = (address) => { + if (!address) return null; + + try { + const key = getLocalStorageKey(address); + const stored = localStorage.getItem(key); + if (!stored) return null; + const parsed = JSON.parse(stored); + return parseFileSystemRecord(parsed); + } catch (error) { + console.error("Error reading fileSystemQManager from localStorage:", error); + return null; + } +}; + +export const getFileSystemQManagerFromLocalStorage = (address) => { + const record = getFileSystemQManagerRecordFromLocalStorage(address); + return record?.data || null; +}; + +export const saveFileSystemQManagerToDB = async ( + fileSystemQManager, + address, + updatedAt = getNow() +) => { + if (!address) throw new Error("Address is required to save filesystem."); + + try { + const db = await initializeDB(); + const transaction = db.transaction(STORE_NAME, "readwrite"); + const store = transaction.objectStore(STORE_NAME); + + store.put({ + address, + ...toStorageRecord(fileSystemQManager, updatedAt), + }); + + return new Promise((resolve) => { + transaction.oncomplete = () => resolve(true); + transaction.onerror = () => resolve(false); + }); + } catch (error) { + console.error("Error saving fileSystemQManager to IndexedDB:", error); + return false; + } +}; + +const getFileSystemQManagerRecordFromDB = async (address) => { + if (!address) return null; + + try { + const db = await initializeDB(); + const transaction = db.transaction(STORE_NAME, "readonly"); + const store = transaction.objectStore(STORE_NAME); + + return new Promise((resolve, reject) => { + const request = store.get(address); + + request.onsuccess = (event) => { + if (event.target.result) { + resolve(parseFileSystemRecord(event.target.result)); + } else { + resolve(null); + } + }; + request.onerror = (event) => reject(event.target.error); + }); + } catch (error) { + console.error("Error retrieving fileSystemQManager from IndexedDB:", error); + return null; + } +}; + +export const getFileSystemQManagerFromDB = async (address) => { + const record = await getFileSystemQManagerRecordFromDB(address); + return record?.data || null; +}; + +export const saveFileSystemQManagerEverywhere = async ( + fileSystemQManager, + address +) => { + if (!address) throw new Error("Address is required to save filesystem."); + const updatedAt = getNow(); + + const dbSaved = await saveFileSystemQManagerToDB( + fileSystemQManager, + address, + updatedAt + ); + + // Keep localStorage as a backup snapshot and fallback path. + if (dbSaved) { + saveFileSystemQManagerToLocalStorage(fileSystemQManager, address, updatedAt); + return { + updatedAt, + primary: "indexeddb", + fallbackUsed: false, + }; + } + + saveFileSystemQManagerToLocalStorage(fileSystemQManager, address, updatedAt); + return { + updatedAt, + primary: "localstorage", + fallbackUsed: true, + }; +}; + +export const getPersistedFileSystemQManager = async (address) => { + if (!address) return null; + + const dbRecord = await getFileSystemQManagerRecordFromDB(address); + const localRecord = getFileSystemQManagerRecordFromLocalStorage(address); + + if (dbRecord?.data && localRecord?.data) { + const dbUpdatedAt = Number(dbRecord.updatedAt) || 0; + const localUpdatedAt = Number(localRecord.updatedAt) || 0; + + // Prefer the newer snapshot. If equal/unknown, keep IndexedDB as source of truth. + if (localUpdatedAt > dbUpdatedAt) { + await saveFileSystemQManagerToDB( + localRecord.data, + address, + localUpdatedAt || getNow() + ); + return localRecord.data; } + + saveFileSystemQManagerToLocalStorage( + dbRecord.data, + address, + dbUpdatedAt || getNow() + ); + return dbRecord.data; + } + + if (dbRecord?.data) { + const synchronizedAt = Number(dbRecord.updatedAt) || getNow(); + saveFileSystemQManagerToLocalStorage( + dbRecord.data, + address, + synchronizedAt + ); + return dbRecord.data; + } + + // IndexedDB unavailable/empty: fallback to local backup and heal DB opportunistically. + if (localRecord?.data) { + const synchronizedAt = Number(localRecord.updatedAt) || getNow(); + await saveFileSystemQManagerToDB(localRecord.data, address, synchronizedAt); + return localRecord.data; + } + + return null; +}; + +export const publishFileSystemQManagerToQDN = async ({ + fileSystemQManager, +}) => { + if (!fileSystemQManager) { + throw new Error("No filesystem data available to publish"); + } + + const plainData64 = await objectToBase64(fileSystemQManager); + const encryptedData = await qortalRequest({ + action: "ENCRYPT_DATA", + data64: plainData64, + }); + + if (!encryptedData) { + throw new Error("Failed to encrypt filesystem data"); + } + + return qortalRequest({ + action: "PUBLISH_QDN_RESOURCE", + service: "DOCUMENT_PRIVATE", + identifier: QDN_STRUCTURE_IDENTIFIER, + filename: QDN_STRUCTURE_FILENAME, + data64: encryptedData, + }); +}; + +export const importFileSystemQManagerFromQDN = async (name) => { + if (!name) { + throw new Error("Qortal name is required to import from QDN"); + } + + const response = await fetch( + `/arbitrary/DOCUMENT_PRIVATE/${name}/${QDN_STRUCTURE_IDENTIFIER}?encoding=base64` + ); + + if (!response.ok) { + throw new Error(`Could not fetch filesystem resource from QDN (${response.status})`); + } + + const encryptedData = await response.text(); + if (!encryptedData) { + throw new Error("No filesystem data found in QDN resource"); + } + + const decryptedData = await qortalRequest({ + action: "DECRYPT_DATA", + encryptedData, + }); + + if (!decryptedData) { + throw new Error("Could not decrypt filesystem data"); + } + + const decryptedBytes = base64ToUint8Array(decryptedData); + const parsed = uint8ArrayToObject(decryptedBytes); + if (!isValidFileSystemQManager(parsed)) { + throw new Error("QDN filesystem data is invalid"); + } + + return parsed; +}; + +const normalizeResourceList = (payload) => { + if (Array.isArray(payload)) return payload; + if (Array.isArray(payload?.resources)) return payload.resources; + if (Array.isArray(payload?.data)) return payload.data; + return []; +}; + +const fetchResourcesFromEndpoint = async (url) => { + try { + const response = await fetch(url); + if (!response.ok) return []; + const json = await response.json(); + return normalizeResourceList(json); + } catch (error) { + return []; + } +}; + +const getResourceField = (resource, keys) => { + for (const key of keys) { + if (resource?.[key] !== undefined && resource?.[key] !== null) { + return resource[key]; + } + } + return undefined; +}; + +const isDeleteTombstoneResource = (resource) => { + const rawSize = getResourceField(resource, [ + "size", + "sizeInBytes", + "dataSize", + "createdSize", + "totalSize", + ]); + const numericSize = Number(rawSize); + if (!Number.isFinite(numericSize)) return false; + return numericSize <= 1; +}; + +const normalizeDiscoveredResource = (resource, ownerName) => { + const identifier = getResourceField(resource, [ + "identifier", + "id", + "resourceId", + ]); + if (!identifier || typeof identifier !== "string") return null; + + const identifierLower = identifier.toLowerCase(); + if (!identifierLower.includes("q-manager")) return null; + if (identifier === QDN_STRUCTURE_IDENTIFIER) return null; + if (identifier === LEGACY_QDN_BACKUP_IDENTIFIER) return null; + if (isDeleteTombstoneResource(resource)) return null; + + const service = getResourceField(resource, ["service", "serviceName"]); + if (!service || typeof service !== "string") return null; + + const qortalName = getResourceField(resource, ["name", "qortalName"]) || ownerName; + if (!qortalName) return null; + + const filename = getResourceField(resource, ["filename", "fileName"]); + const title = getResourceField(resource, ["title"]); + const mimeType = getResourceField(resource, [ + "mimeType", + "mime", + "contentType", + "mediaType", + ]); + const groupId = getResourceField(resource, ["groupId", "group", "groupid"]); + const rawSize = getResourceField(resource, [ + "sizeInBytes", + "size", + "dataSize", + "createdSize", + "totalSize", + ]); + const parsedSize = Number(rawSize); + const sizeInBytes = + Number.isFinite(parsedSize) && parsedSize >= 0 ? parsedSize : undefined; + + return { + type: "file", + name: filename || title || identifier, + displayName: filename || title || identifier, + ...(filename ? { filename } : {}), + ...(title ? { title } : {}), + identifier, + service, + qortalName, + mimeType: mimeType || "application/octet-stream", + groupId: Number(groupId) || 0, + ...(sizeInBytes !== undefined ? { sizeInBytes } : {}), }; - - export const getFileSystemQManagerFromDB = async (address) => { +}; + +const buildGetResourcePropertiesPayloads = (resource) => { + const basePayload = { + action: "GET_QDN_RESOURCE_PROPERTIES", + service: resource?.service, + identifier: resource?.identifier, + }; + const ownerName = resource?.qortalName || resource?.name; + if (!ownerName) return [basePayload]; + return [ + { ...basePayload, name: ownerName }, + { ...basePayload, qortalName: ownerName }, + basePayload, + ]; +}; + +const hydrateDiscoveredResourceFromProperties = async (resource) => { + if (!resource?.service || !resource?.identifier) return resource; + if (resource?.filename) return resource; + if (typeof qortalRequest !== "function") return resource; + + const payloads = buildGetResourcePropertiesPayloads(resource); + let properties = null; + + for (const payload of payloads) { try { - const db = await initializeDB(); - const transaction = db.transaction("fileSystemQManager", "readonly"); - const store = transaction.objectStore("fileSystemQManager"); - - return new Promise((resolve, reject) => { - const request = store.get(address); - - request.onsuccess = (event) => { - if (event.target.result) { - resolve(event.target.result.data); - } else { - resolve(null); // No data found for this address - } - }; - request.onerror = (event) => reject(event.target.error); - }); - } catch (error) { - console.error("Error retrieving fileSystemQManager from IndexedDB:", error); + const response = await qortalRequest(payload); + if (response === undefined || response === null) continue; + properties = response; + break; + } catch (error) {} + } + + if (!properties || typeof properties !== "object") return resource; + + const filename = getResourceField(properties, ["filename", "fileName"]); + const mimeType = getResourceField(properties, [ + "mimeType", + "mime", + "contentType", + "mediaType", + ]); + const rawSize = getResourceField(properties, [ + "sizeInBytes", + "size", + "dataSize", + "createdSize", + "totalSize", + ]); + const parsedSize = Number(rawSize); + const sizeInBytes = + Number.isFinite(parsedSize) && parsedSize >= 0 ? parsedSize : undefined; + + const next = { ...resource }; + if (filename) { + next.filename = filename; + if (!next.displayName || next.displayName === next.identifier) { + next.displayName = filename; } - }; - - \ No newline at end of file + if (!next.name || next.name === next.identifier) { + next.name = filename; + } + } + if (mimeType && (!next.mimeType || next.mimeType === "application/octet-stream")) { + next.mimeType = mimeType; + } + if (sizeInBytes !== undefined && next.sizeInBytes === undefined) { + next.sizeInBytes = sizeInBytes; + } + + return next; +}; + +export const discoverQManagerResourcesByName = async (name) => { + if (!name) { + throw new Error("Qortal name is required to discover published resources"); + } + + const encodedName = encodeURIComponent(name); + const discoveredMap = new Map(); + + const sharedQuery = "reverse=true&limit=0&offset=0&includemetadata=true"; + const broadEndpoints = [ + `/arbitrary/resources/search?name=${encodedName}&${sharedQuery}`, + `/arbitrary/resources?name=${encodedName}&${sharedQuery}`, + ]; + + const broadResults = await Promise.all( + broadEndpoints.map(fetchResourcesFromEndpoint) + ); + + for (const list of broadResults) { + for (const resource of list) { + const normalized = normalizeDiscoveredResource(resource, name); + if (!normalized) continue; + const key = `${normalized.service}|${normalized.identifier}|${normalized.qortalName}`; + discoveredMap.set(key, normalized); + } + } + + if (discoveredMap.size === 0) { + const allServices = Array.from( + new Set([...services, ...privateServices].map((item) => item.name)) + ); + + const serviceResults = await Promise.all( + allServices.map((service) => + fetchResourcesFromEndpoint( + `/arbitrary/resources/search?name=${encodedName}&service=${encodeURIComponent( + service + )}&${sharedQuery}` + ) + ) + ); + + for (const list of serviceResults) { + for (const resource of list) { + const normalized = normalizeDiscoveredResource(resource, name); + if (!normalized) continue; + const key = `${normalized.service}|${normalized.identifier}|${normalized.qortalName}`; + discoveredMap.set(key, normalized); + } + } + } + + const discoveredResources = Array.from(discoveredMap.values()); + if (discoveredResources.length === 0) { + return discoveredResources; + } + + const hydratedResources = await Promise.all( + discoveredResources.map((resource) => + hydrateDiscoveredResourceFromProperties(resource) + ) + ); + + return hydratedResources; +}; diff --git a/src/utils.ts b/src/utils.ts index 88b97b4..a27d438 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,15 +1,12 @@ -export function objectToBase64(obj: Object) { - // Step 1: Convert the object to a JSON string +export function objectToBase64(obj: unknown): Promise { const jsonString = JSON.stringify(obj) - // Step 2: Create a Blob from the JSON string const blob = new Blob([jsonString], { type: 'application/json' }) - // Step 3: Create a FileReader to read the Blob as a base64-encoded string - return new Promise((resolve, reject) => { - const reader = new FileReader() - reader.onloadend = () => { - if (typeof reader.result === 'string') { - // Remove 'data:application/json;base64,' prefix - const base64 = reader.result.replace( + + return new Promise((resolve, reject) => { + const localReader = new FileReader() + localReader.onloadend = () => { + if (typeof localReader.result === 'string') { + const base64 = localReader.result.replace( 'data:application/json;base64,', '' ) @@ -18,76 +15,74 @@ export function objectToBase64(obj: Object) { reject(new Error('Failed to read the Blob as a base64-encoded string')) } } - reader.onerror = () => { - reject(reader.error) + localReader.onerror = () => { + reject(localReader.error ?? new Error('Failed to read the file')) } - reader.readAsDataURL(blob) + localReader.readAsDataURL(blob) }) } -export function base64ToUint8Array(base64: string) { - const binaryString = atob(base64) - const len = binaryString.length - const bytes = new Uint8Array(len) - - for (let i = 0; i < len; i++) { - bytes[i] = binaryString.charCodeAt(i) - } - - return bytes - } - - export function uint8ArrayToObject(uint8Array: Uint8Array) { - // Decode the byte array using TextDecoder - const decoder = new TextDecoder() - const jsonString = decoder.decode(uint8Array) - - // Convert the JSON string back into an object - const obj = JSON.parse(jsonString) - - return obj - } +export function base64ToUint8Array(base64: string): Uint8Array { + const binaryString = atob(base64) + const len = binaryString.length + const bytes = new Uint8Array(len) + for (let i = 0; i < len; i++) { + bytes[i] = binaryString.charCodeAt(i) + } - export const handleImportClick = async () => { - const fileInput = document.createElement('input'); - fileInput.type = 'file'; - fileInput.accept = '.base64,.txt'; + return bytes +} - // Create a promise to handle file selection and reading synchronously - return await new Promise((resolve, reject) => { - fileInput.onchange = () => { - const file = fileInput.files[0]; - if (!file) { - reject(new Error('No file selected')); - return; - } +export function uint8ArrayToObject(uint8Array: Uint8Array): T { + const decoder = new TextDecoder() + const jsonString = decoder.decode(uint8Array) + return JSON.parse(jsonString) as T +} - const reader = new FileReader(); - reader.onload = (e) => { - resolve(e.target.result); // Resolve with the file content - }; - reader.onerror = () => { - reject(new Error('Error reading file')); - }; +export const handleImportClick = async (): Promise => { + const fileInput = document.createElement('input') + fileInput.type = 'file' + fileInput.accept = '.base64,.txt' + + return new Promise((resolve, reject) => { + fileInput.onchange = () => { + const file = fileInput.files?.[0] + if (!file) { + reject(new Error('No file selected')) + return + } - reader.readAsText(file); // Read the file as text (Base64 string) - }; + const localReader = new FileReader() + localReader.onload = () => { + if (typeof localReader.result === 'string') { + resolve(localReader.result) + } else { + reject(new Error('Invalid file content')) + } + } + localReader.onerror = () => { + reject(localReader.error ?? new Error('Error reading file')) + } - // Trigger the file input dialog - fileInput.click(); - }); + localReader.readAsText(file) + } - } + fileInput.click() + }) +} +class Semaphore { + private count: number + private waiting: Array<() => void> - class Semaphore { - constructor(count) { + constructor(count: number) { this.count = count this.waiting = [] } - acquire() { - return new Promise(resolve => { + + acquire(): Promise { + return new Promise(resolve => { if (this.count > 0) { this.count-- resolve() @@ -96,43 +91,56 @@ export function base64ToUint8Array(base64: string) { } }) } - release() { + + release(): void { if (this.waiting.length > 0) { const resolve = this.waiting.shift() - resolve() + if (resolve) resolve() } else { this.count++ } } } - let semaphore = new Semaphore(1) -let reader = new FileReader() +const semaphore = new Semaphore(1) +let reader: FileReader | null = new FileReader() -export const fileToBase64 = (file) => new Promise(async (resolve, reject) => { - if (!reader) { - reader = new FileReader() - } +export const fileToBase64 = async (file: Blob): Promise => { await semaphore.acquire() - reader.readAsDataURL(file) - reader.onload = () => { - const dataUrl = reader.result - if (typeof dataUrl === "string") { - const base64String = dataUrl.split(',')[1] - reader.onload = null - reader.onerror = null - resolve(base64String) - } else { + + try { + if (!reader) { + reader = new FileReader() + } + + const currentReader = reader as FileReader + + return await new Promise((resolve, reject) => { + currentReader.onload = () => { + const dataUrl = currentReader.result + if (typeof dataUrl === 'string') { + const base64String = dataUrl.split(',')[1] + if (base64String === undefined) { + reject(new Error('Invalid data URL')) + return + } + resolve(base64String) + } else { + reject(new Error('Invalid data URL')) + } + } + + currentReader.onerror = () => { + reject(currentReader.error ?? new Error('Failed to read file')) + } + + currentReader.readAsDataURL(file) + }) + } finally { + if (reader) { reader.onload = null reader.onerror = null - reject(new Error('Invalid data URL')) } semaphore.release() } - reader.onerror = (error) => { - reader.onload = null - reader.onerror = null - reject(error) - semaphore.release() - } -}) \ No newline at end of file +} diff --git a/vite.config.js b/vite.config.js index 2ff9c76..8eaec8b 100644 --- a/vite.config.js +++ b/vite.config.js @@ -4,5 +4,16 @@ import react from "@vitejs/plugin-react"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [react()], - base: "", + base: "./", + server: { + watch: { + usePolling: true, + ignored: [ + '**/node_modules/**', + '**/.git/**', + '**/.vscode/**', + '**/dist/**' + ], + }, + }, }); From acd81a4594717d6fffed42f0cb7f08c279af02a6 Mon Sep 17 00:00:00 2001 From: crowetic Date: Fri, 27 Feb 2026 18:16:11 -0800 Subject: [PATCH 2/9] modified gitignore and removed compiled dist folder --- .gitignore | 1 + dist.zip | Bin 584196 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100644 dist.zip diff --git a/.gitignore b/.gitignore index a547bf3..6c92f0b 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ node_modules dist dist-ssr *.local +*.zip # Editor directories and files .vscode/* diff --git a/dist.zip b/dist.zip deleted file mode 100644 index 6bb7a7f55822ebb1ec42c0a2395549851c61d640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584196 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�ZWd2fBKr%j4VdFtr@XJiV1DLx0H| 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

cF$?DS_zWP^IjKW# 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 G9Q_Nbl0xVJ From 699075ed565890479183d5e00748750d0c181210 Mon Sep 17 00:00:00 2001 From: crowetic Date: Fri, 27 Feb 2026 18:32:40 -0800 Subject: [PATCH 3/9] fixed crash for certain multi-file publish cases --- src/Manager.tsx | 57 ++++++++++++++++--- .../PUBLISH_MULTIPLE_QDN_RESOURCES.jsx | 6 +- 2 files changed, 53 insertions(+), 10 deletions(-) diff --git a/src/Manager.tsx b/src/Manager.tsx index 7ce8a55..9d37e63 100644 --- a/src/Manager.tsx +++ b/src/Manager.tsx @@ -129,13 +129,48 @@ const EXTRA_TEXT_MIME_TYPES = new Set([ "application/sql", ]); +const getServiceName = (file) => { + const candidates = [file?.service, file?.service?.name, file?.serviceName]; + for (const candidate of candidates) { + if (typeof candidate === "string" && candidate.trim()) { + return candidate; + } + } + return ""; +}; + const getResourcePreviewUrl = (file) => { - if (!file?.service || !file?.qortalName || !file?.identifier) return ""; - return `/arbitrary/${encodeURIComponent(file.service)}/${encodeURIComponent( - file.qortalName + const service = getServiceName(file); + const qortalName = + typeof file?.qortalName === "string" && file.qortalName.trim() + ? file.qortalName + : ""; + if (!service || !qortalName || !file?.identifier) return ""; + return `/arbitrary/${encodeURIComponent(service)}/${encodeURIComponent( + qortalName )}/${encodeURIComponent(file.identifier)}`; }; +const safeLower = (value) => { + if (typeof value === "string") return value.toLowerCase(); + if (value === undefined || value === null) return ""; + try { + return String(value).toLowerCase(); + } catch (error) { + return ""; + } +}; + +const safeUpper = (value) => { + if (typeof value === "string") return value.toUpperCase(); + if (value === undefined || value === null) return ""; + try { + return String(value).toUpperCase(); + } catch (error) { + return ""; + } +}; + const getFileNameForInference = (file) => { const candidates = [ file?.filename, @@ -156,11 +191,11 @@ const getFileExtension = (file) => { const name = getFileNameForInference(file); const parts = name.split("."); if (parts.length < 2) return ""; - return parts.pop().toLowerCase(); + return safeLower(parts.pop()); }; const inferMimeTypeFromExtension = (extension) => { - const ext = (extension || "").toLowerCase(); + const ext = safeLower(extension); if (!ext) return ""; const extensionToMime = { @@ -222,16 +257,20 @@ const inferMimeTypeFromExtension = (extension) => { }; const isTextLikeMimeType = (mimeType) => { - const normalized = (mimeType || "").toLowerCase(); + const normalized = safeLower(mimeType); if (!normalized) return false; if (normalized.startsWith("text/")) return true; return EXTRA_TEXT_MIME_TYPES.has(normalized); }; const inferPreviewKind = (file) => { - const mime = (file?.mimeType || "").toLowerCase(); - const service = (file?.service || "").toUpperCase(); - const name = getFileNameForInference(file).toLowerCase(); + const mime = safeLower(file?.mimeType); + const service = + safeUpper(getServiceName(file)) || + safeUpper(file?.service) || + safeUpper(file?.service?.name) || + safeUpper(file?.serviceName); + const name = safeLower(getFileNameForInference(file)); const extension = getFileExtension(file); const extensionMime = inferMimeTypeFromExtension(extension); const effectiveMime = mime || extensionMime; diff --git a/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx b/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx index d13475d..86b67d6 100644 --- a/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx +++ b/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx @@ -139,6 +139,10 @@ export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ // 3) update tree exactly like single publish for (const res of Array.isArray(result) ? result : [result]) { const { identifier, service, filename, mimeType } = res; + const normalizedService = + (typeof service === "string" && service) || + (typeof service?.name === "string" && service.name) || + requestData.service; const localMeta = localMetaByIdentifier.get(identifier) || {}; const resolvedFilename = filename || localMeta?.filename || identifier; const resolvedMimeType = @@ -168,7 +172,7 @@ export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ ...(sizeInBytes !== undefined ? { sizeInBytes } : {}), qortalName: myName, identifier, - service, + service: normalizedService, ...groupEntry, }); } From 4c005273a46bb9d41c7724a988e0696bb81e4b6f Mon Sep 17 00:00:00 2001 From: crowetic Date: Sat, 28 Feb 2026 16:09:56 -0800 Subject: [PATCH 4/9] added multi-name support and improved name handling including passing name to publish calls. --- package.json | 2 +- src/App.jsx | 88 +++++++++++--- src/Manager.tsx | 111 ++++++++++++++++-- .../PUBLISH_MULTIPLE_QDN_RESOURCES.jsx | 6 +- src/actions/PUBLISH_QDN_RESOURCE.jsx | 14 ++- src/storage.ts | 8 ++ src/utils.ts | 72 ++++++++++++ 7 files changed, 269 insertions(+), 32 deletions(-) diff --git a/package.json b/package.json index d7218e0..d0f8405 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "QManager", "private": true, - "version": "0.2.0", + "version": "0.2.1", "type": "module", "scripts": { "dev": "vite", diff --git a/src/App.jsx b/src/App.jsx index 1caefff..3bb7c5c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,12 +1,6 @@ import { useCallback, useEffect, useState } from "react"; -import { Box, CircularProgress, CssBaseline, MenuItem, Select, ThemeProvider, Tooltip, Typography, createTheme } from "@mui/material"; +import { Box, CircularProgress, CssBaseline, ThemeProvider, Typography, createTheme } from "@mui/material"; import "./App.css"; -import Container from "./components/Container"; -import QSandboxLogo from "./assets/images/QSandboxLogo.png"; -import InfoIcon from "@mui/icons-material/Info"; -import { categories } from "./constants"; -import { ShowCategories } from "./ShowCategories"; -import { ShowAction } from "./ShowAction"; import { Manager } from "./Manager"; import { Toaster } from "react-hot-toast"; @@ -33,24 +27,70 @@ function App() { const [myAddress, setMyaddress] = useState('') const [isLoading, setIsloading] = useState(true) const [groups, setGroups] = useState([]) + const [ownedNames, setOwnedNames] = useState([]) + const [activeName, setActiveName] = useState("") + + const normalizeName = useCallback((entry) => { + if (typeof entry === "string") return entry.trim(); + if (entry && typeof entry === "object" && typeof entry.name === "string") { + return entry.name.trim(); + } + return ""; + }, []); + + const extractPrimaryName = useCallback((payload) => { + if (Array.isArray(payload)) { + for (const item of payload) { + const nameValue = normalizeName(item); + if (nameValue) return nameValue; + } + return ""; + } + return normalizeName(payload); + }, [normalizeName]); const askForAccountInformation = useCallback(async () => { try { const account = await qortalRequest({ action: "GET_USER_ACCOUNT", }); if(account?.address){ + let names = [] const nameData = await qortalRequest({ action: "GET_ACCOUNT_NAMES", address: account.address, }); - setMyaddress({...account, name: nameData[0] || ""}) + if (Array.isArray(nameData)) { + names = nameData.map((entry) => normalizeName(entry)).filter(Boolean); + } + let primaryName = ""; + try { + const primaryNameData = await qortalRequest({ + action: "GET_PRIMARY_NAME", + address: account.address, + }); + primaryName = extractPrimaryName(primaryNameData); + } catch (error) { + try { + const primaryNameData = await qortalRequest({ + action: "GET_PRIMARY_NAME", + }); + primaryName = extractPrimaryName(primaryNameData); + } catch (innerError) {} + } + const resolvedName = primaryName || names[0] || ""; + setOwnedNames(names); + setActiveName((prev) => { + if (prev && names.includes(prev)) return prev; + return resolvedName; + }); + setMyaddress({...account, name: resolvedName ? { name: resolvedName } : ""}) } } catch (error) { console.error(error); } finally { setIsloading(false) } - }, []); + }, [extractPrimaryName, normalizeName]); const getGroups = useCallback(async (address) => { try { @@ -69,9 +109,6 @@ function App() { useEffect(()=> { askForAccountInformation() }, [askForAccountInformation]) - const handleClose = useCallback(()=> { - setSelectedAction(null) - }, []) useEffect(()=> { if(myAddress?.address){ @@ -79,6 +116,19 @@ function App() { } }, [myAddress?.address]) + useEffect(() => { + if (!myAddress?.address) return; + setMyaddress((prev) => { + if (!prev?.address) return prev; + const nextName = activeName ? { name: activeName } : ""; + if (prev?.name?.name === nextName?.name) return prev; + return { + ...prev, + name: nextName, + }; + }); + }, [activeName, myAddress?.address]); + return ( @@ -96,7 +146,7 @@ function App() { )} - {!isLoading && !myAddress?.name?.name && ( + {!isLoading && !activeName && ( )} - {!isLoading && myAddress?.name?.name && ( - + {!isLoading && !!activeName && ( + )}

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 ZEh}e@kD6$hGi}HR+Y9o!0)yO2LoA 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

@@ -122,5 +178,3 @@ function App() { } export default App; - - diff --git a/src/Manager.tsx b/src/Manager.tsx index 9d37e63..66d7f96 100644 --- a/src/Manager.tsx +++ b/src/Manager.tsx @@ -65,6 +65,7 @@ import { base64ToUint8Array, handleImportClick, objectToBase64, + resolvePreferredName, uint8ArrayToObject, } from "./utils"; import { openToast } from "./components/openToast"; @@ -744,7 +745,13 @@ const SortableItem = ({ ); }; -export const Manager = ({ myAddress, groups }) => { +export const Manager = ({ + myAddress, + groups, + ownedNames = [], + activeName = "", + onChangeActiveName, +}) => { const [fileSystemPublic, setFileSystemPublic] = useState(null); const [fileSystemPrivate, setFileSystemPrivate] = useState(null); const [fileSystemGroup, setFileSystemGroup] = useState(initialGroupFileSystem); @@ -795,6 +802,10 @@ export const Manager = ({ myAddress, groups }) => { }); const [showBulkMoveModal, setShowBulkMoveModal] = useState(false); const [bulkMoveTargetPath, setBulkMoveTargetPath] = useState([]); + const currentName = + (typeof activeName === "string" && activeName.trim()) || + (typeof myAddress?.name?.name === "string" && myAddress.name.name.trim()) || + ""; const [currentPath, setCurrentPath] = useState(["Root"]); const [isOpenPublish, setIsOpenPublish] = useState(false); @@ -1116,7 +1127,7 @@ export const Manager = ({ myAddress, groups }) => { const discoverAndImportPublishedQManagerFiles = async () => { const promise = (async () => { - const ownerName = myAddress?.name?.name; + const ownerName = await resolvePreferredName(currentName, myAddress?.address); if (!ownerName) { throw new Error("Could not determine your Qortal name"); } @@ -1746,19 +1757,55 @@ export const Manager = ({ myAddress, groups }) => { if (selectedVisibleFiles.length === 0) return; const filesToDelete = [...selectedVisibleFiles]; const tombstoneData64 = btoa("d"); + const ownerName = await resolvePreferredName(currentName, myAddress?.address); const promise = (async () => { - removeSelectedFromManager(); + if (!ownerName || typeof ownerName !== "string") { + throw new Error("Could not determine Qortal name for delete"); + } + const resources = filesToDelete + .map((file) => ({ + service: getServiceName(file), + identifier: file?.identifier, + data64: tombstoneData64, + })) + .filter((resource) => resource?.service && resource?.identifier); - for (const file of filesToDelete) { - if (!file?.identifier || !file?.service) continue; + if (resources.length === 0) { + throw new Error("No valid files selected for QDN delete"); + } + + try { await qortalRequest({ - action: "PUBLISH_QDN_RESOURCE", - service: file.service, - identifier: file.identifier, - data64: tombstoneData64, + action: "PUBLISH_MULTIPLE_QDN_RESOURCES", + name: ownerName, + resources, }); + } catch (multiDeleteError) { + const failedIdentifiers = []; + for (const resource of resources) { + try { + await qortalRequest({ + action: "PUBLISH_QDN_RESOURCE", + name: ownerName, + service: resource.service, + identifier: resource.identifier, + data64: resource.data64, + }); + } catch (singleDeleteError) { + failedIdentifiers.push(resource.identifier); + } + } + if (failedIdentifiers.length > 0) { + throw new Error( + `Failed to delete ${failedIdentifiers.length} item(s): ${failedIdentifiers.join( + ", " + )}` + ); + } } + + removeSelectedFromManager(); })(); openToast(promise, { @@ -1807,6 +1854,38 @@ export const Manager = ({ myAddress, groups }) => { Q-Manager + {ownedNames?.length > 1 && ( + + + + + )} {mode === "group" && ( { {isOpenPublish && ( setIsOpenPublish(false)} selectedAction={{ @@ -2319,7 +2398,13 @@ export const Manager = ({ myAddress, groups }) => { + targetPath // Pass the selected targetPath + ); + }} + > + Move Here + @@ -524,17 +685,21 @@ moveNode, currentPath, item, onPreview, onHydrateMetadata, pinned, onTogglePin } Showing all known metadata for this item. - {type === 'file' && ( - + {type === "file" && ( + {resourcePropertiesError && ( @@ -562,6 +727,6 @@ moveNode, currentPath, item, onPreview, onHydrateMetadata, pinned, onTogglePin } - - ); + + ); }; diff --git a/src/File.tsx b/src/File.tsx index c216f27..cfbd95d 100644 --- a/src/File.tsx +++ b/src/File.tsx @@ -18,6 +18,7 @@ import { } from "@mui/material"; import { styled } from "@mui/system"; import { Transition } from "./ShowAction"; +import type { TransitionProps } from "@mui/material/transitions/transition"; import CloseIcon from "@mui/icons-material/Close"; import { Label, PUBLISH_QDN_RESOURCE } from "./actions/PUBLISH_QDN_RESOURCE"; import { base64ToUint8Array, uint8ArrayToObject } from "./utils"; @@ -26,8 +27,61 @@ import ExpandLessIcon from "@mui/icons-material/ExpandLess"; import { Spacer } from "./components/Spacer"; import WarningIcon from "@mui/icons-material/Warning"; import { openToast } from "./components/openToast"; +import { requestQortal } from "./qapp/request"; -const getDisplayName = (file) => file?.displayName || file?.name || ""; +const isEncryptedFileNode = (file) => { + const service = + typeof file?.service === "string" ? file.service.toUpperCase() : ""; + const encryptionType = + typeof file?.encryptionType === "string" + ? file.encryptionType.toLowerCase() + : ""; + const identifier = + typeof file?.identifier === "string" ? file.identifier.toLowerCase() : ""; + + return ( + Boolean(file?.group || file?.groupId) || + encryptionType.includes("private") || + encryptionType.includes("group") || + service.includes("_PRIVATE") || + identifier.startsWith("p-") || + identifier.startsWith("pvt-") || + identifier.startsWith("grp-") + ); +}; + +const isGenericPrivateResourceLabel = (value) => { + const normalized = + typeof value === "string" ? value.trim().toLowerCase() : ""; + if (!normalized) return true; + return ( + normalized === "data" || + normalized === "file" || + normalized === "blob" || + normalized === "resource" || + normalized === "preview" || + normalized === "unknown" || + normalized === "untitled" || + normalized === "data.bin" || + normalized.startsWith("data.") + ); +}; + +const getDisplayName = (file) => + isEncryptedFileNode(file) + ? (() => { + const name = typeof file?.name === "string" ? file.name : ""; + const displayName = + typeof file?.displayName === "string" ? file.displayName : ""; + if (displayName && !isGenericPrivateResourceLabel(displayName)) { + return displayName; + } + if (name && !isGenericPrivateResourceLabel(name)) { + return name; + } + return displayName || name || ""; + })() + : file?.displayName || file?.name || ""; const getFileSizeBytes = (file) => { const candidates = [ @@ -64,13 +118,19 @@ export const SelectedFile = ({ selectedFile, setSelectedFile, updateByPath, + myName, + accountAddress, + accountPublicKey, mode, groups, - selectedGroup + selectedGroup, + addNodeByPath, }) => { - const [selectedType, setSelectedType] = useState(0); + const [selectedType, setSelectedType] = useState(0); const [isExpandMore, setIsExpandMore] = useState(false); - const [customFileName, setCustomFileName] = useState(getDisplayName(selectedFile)) + const [customFileName, setCustomFileName] = useState( + getDisplayName(selectedFile) + ); const fileSizeBytes = getFileSizeBytes(selectedFile); useEffect(() => { if (selectedFile?.mimeType?.toLowerCase()?.includes("image")) { @@ -81,25 +141,30 @@ export const SelectedFile = ({ }, [selectedFile?.mimeType]); useEffect(() => { setCustomFileName(getDisplayName(selectedFile)); - }, [selectedFile?.identifier, selectedFile?.service]); + }, [ + selectedFile?.identifier, + selectedFile?.service, + selectedFile?.displayName, + selectedFile?.name, + selectedFile?.filename, + ]); const createEmbedLink = async () => { - - const promise = (async ()=> { + const promise = (async () => { try { if (mode === "public") { - await qortalRequest({ + await requestQortal({ action: "CREATE_AND_COPY_EMBED_LINK", type: selectedType, name: selectedFile.qortalName, identifier: selectedFile.identifier, service: selectedFile.service, mimeType: selectedFile?.mimeType, - fileName: customFileName + fileName: customFileName, }); return; } if (mode === "group") { - await qortalRequest({ + await requestQortal({ action: "CREATE_AND_COPY_EMBED_LINK", type: selectedType, name: selectedFile.qortalName, @@ -107,38 +172,73 @@ export const SelectedFile = ({ service: selectedFile.service, mimeType: selectedFile?.mimeType, fileName: customFileName, - encryptionType: 'group', + encryptionType: "group", }); return; } - const res = await fetch( - `/arbitrary/${selectedFile.service}/${selectedFile.qortalName}/${selectedFile.identifier}?encoding=base64` - ); - const base64Data = await res.text(); - const decryptedData = await qortalRequest({ - action: "DECRYPT_DATA", - encryptedData: base64Data, - }); - const decryptToUnit8Array = base64ToUint8Array(decryptedData); - const responseData = uint8ArrayToObject(decryptToUnit8Array); - if (!responseData?.key) + const resourcePropertyPayloads = [ + { + action: "GET_QDN_RESOURCE_PROPERTIES", + service: selectedFile.service, + identifier: selectedFile.identifier, + name: selectedFile.qortalName, + }, + { + action: "GET_QDN_RESOURCE_PROPERTIES", + service: selectedFile.service, + identifier: selectedFile.identifier, + qortalName: selectedFile.qortalName, + }, + { + action: "GET_QDN_RESOURCE_PROPERTIES", + service: selectedFile.service, + identifier: selectedFile.identifier, + }, + ]; + + let responseData: any = null; + for (const payload of resourcePropertyPayloads) { + try { + const response = await requestQortal(payload); + if (response && typeof response === "object") { + responseData = response; + if (responseData?.key || responseData?.sharingKey) break; + } + } catch (error) {} + } + + if (!responseData?.key && !responseData?.sharingKey) { + const res = await fetch( + `/arbitrary/${selectedFile.service}/${selectedFile.qortalName}/${selectedFile.identifier}?encoding=base64` + ); + const base64Data = await res.text(); + const decryptedData = await requestQortal({ + action: "DECRYPT_DATA", + encryptedData: base64Data, + }); + const decryptToUnit8Array = base64ToUint8Array(decryptedData); + responseData = uint8ArrayToObject(decryptToUnit8Array); + } + + const resolvedKey = responseData?.key || responseData?.sharingKey; + if (!resolvedKey) throw new Error("Could not find key in encrypted data"); - await qortalRequest({ + await requestQortal({ action: "CREATE_AND_COPY_EMBED_LINK", type: selectedType, name: selectedFile.qortalName, identifier: selectedFile.identifier, service: selectedFile.service, - encryptionType: 'private', - key: responseData.key, + encryptionType: "private", + key: resolvedKey, mimeType: selectedFile?.mimeType, - fileName: customFileName + fileName: customFileName, }); - return true + return true; } catch (error) { - throw error + throw error; } - })() + })(); await openToast(promise, { loading: "Downloading resource and fetching link... please wait.", success: "Copied successfully!", @@ -151,7 +251,11 @@ export const SelectedFile = ({ fullScreen open={!!selectedFile} onClose={() => setSelectedFile(null)} - TransitionComponent={Transition} + TransitionComponent={ + Transition as React.ComponentType< + TransitionProps & { children: React.ReactElement } + > + } PaperProps={{ style: { backgroundColor: "rgb(39, 40, 44)", @@ -226,7 +330,7 @@ export const SelectedFile = ({ ATTACHMENT - + @@ -552,24 +1719,92 @@ const SortableItem = ({ onToggleSelect, onPreview, showThumbnails, + showPrivateThumbnails, onHydrateMetadata, onTogglePin, + accountAddress, + accountPublicKey, }) => { + const sortableId = getNodeSelectionKey(item); const { attributes, listeners, setNodeRef, transform, transition } = useSortable({ - id: item.name + item.type, + id: sortableId, }); const clickTimeoutRef = useRef(null); const [thumbnailError, setThumbnailError] = useState(false); + const [decryptedThumbnailUrl, setDecryptedThumbnailUrl] = useState(""); + const [thumbnailLoading, setThumbnailLoading] = useState(false); const previewKind = inferPreviewKind(item); + const encrypted = isEncryptedResource(item); + const shouldShowThumbnail = + item?.type === "file" && + previewKind === "image" && + (encrypted ? showPrivateThumbnails : showThumbnails); const thumbnailUrl = - showThumbnails && item?.type === "file" && previewKind === "image" - ? getResourcePreviewUrl(item) - : ""; + shouldShowThumbnail && !encrypted ? getResourcePreviewUrl(item) : ""; useEffect(() => { setThumbnailError(false); - }, [item?.identifier, item?.service, item?.qortalName, showThumbnails]); + }, [ + item?.identifier, + item?.service, + item?.qortalName, + showThumbnails, + showPrivateThumbnails, + ]); + + useEffect(() => { + setDecryptedThumbnailUrl(""); + setThumbnailLoading(false); + + if (!shouldShowThumbnail || !encrypted) return; + + const controller = new AbortController(); + let disposed = false; + let objectUrl = ""; + + const loadThumbnail = async () => { + setThumbnailLoading(true); + try { + const payload = await fetchPreviewPayload( + item, + controller.signal, + accountAddress, + accountPublicKey + ); + if (disposed) return; + objectUrl = URL.createObjectURL( + base64ToBlob( + payload.data64, + payload?.metadata?.mimeType || + item?.mimeType || + inferMimeTypeFromExtension(getFileExtension(item)) + ) + ); + setDecryptedThumbnailUrl(objectUrl); + } catch (error) { + if (!controller.signal.aborted && !disposed) { + setThumbnailError(true); + } + } finally { + if (!disposed) { + setThumbnailLoading(false); + } + } + }; + + loadThumbnail(); + + return () => { + disposed = true; + controller.abort(); + if (objectUrl) URL.revokeObjectURL(objectUrl); + }; + }, [item, shouldShowThumbnail, encrypted, accountAddress]); + + const effectiveThumbnailUrl = encrypted + ? decryptedThumbnailUrl + : thumbnailUrl; useEffect(() => { return () => { @@ -617,7 +1852,9 @@ const SortableItem = ({ item.type === "folder" ? "linear-gradient(180deg, rgba(54,72,121,0.35) 0%, rgba(27,36,60,0.35) 100%)" : "linear-gradient(180deg, rgba(66,66,66,0.35) 0%, rgba(36,36,36,0.35) 100%)", - border: selected ? "2px solid #59b2ff" : "1px solid rgba(132, 162, 214, 0.35)", + border: selected + ? "2px solid #59b2ff" + : "1px solid rgba(132, 162, 214, 0.35)", boxShadow: selected ? "0 0 0 2px rgba(89,178,255,0.2), 0 8px 24px rgba(0,0,0,0.28)" : "0 8px 24px rgba(0,0,0,0.22)", @@ -653,7 +1890,7 @@ const SortableItem = ({ {item?.type === "file" && ( { event.preventDefault(); event.stopPropagation(); @@ -708,10 +1945,10 @@ const SortableItem = ({ > {item.type === "folder" ? ( - ) : thumbnailUrl && !thumbnailError ? ( + ) : effectiveThumbnailUrl && !thumbnailError ? ( setThumbnailError(true)} sx={{ width: "100%", @@ -747,10 +1984,77 @@ const SortableItem = ({ export const Manager = ({ myAddress, groups }) => { const [fileSystemPublic, setFileSystemPublic] = useState(null); const [fileSystemPrivate, setFileSystemPrivate] = useState(null); - const [fileSystemGroup, setFileSystemGroup] = useState(initialGroupFileSystem); + const [fileSystemGroup, setFileSystemGroup] = useState( + initialGroupFileSystem + ); const [selectedGroup, setSelectedGroup] = useState(null); + const publishNames = Array.isArray(myAddress?.names) + ? myAddress.names.filter((item) => item?.name) + : myAddress?.name?.name + ? [myAddress.name] + : []; + const [activePublishName, setActivePublishName] = useState( + myAddress?.name?.name || "" + ); const [mode, setMode] = useState("public"); + const [privateIndexRevision, setPrivateIndexRevision] = useState(0); + const [privateResourceIndex, setPrivateResourceIndex] = useState(null); + + useEffect(() => { + if (typeof window === "undefined") return undefined; + + const handlePrivateIndexChanged = () => { + setPrivateIndexRevision((prev) => prev + 1); + }; + + window.addEventListener( + "q-manager-private-index-changed", + handlePrivateIndexChanged + ); + + return () => { + window.removeEventListener( + "q-manager-private-index-changed", + handlePrivateIndexChanged + ); + }; + }, []); + + useEffect(() => { + if (!myAddress?.address) { + setPrivateResourceIndex(null); + return undefined; + } + + let disposed = false; + const loadPrivateResourceIndex = async () => { + try { + const loadedIndex = await getPersistedPrivateResourceIndex( + myAddress.address, + [myAddress?.name?.name, activePublishName].filter(Boolean) + ); + if (!disposed) { + setPrivateResourceIndex(loadedIndex); + } + } catch (error) { + if (!disposed) { + setPrivateResourceIndex(null); + } + } + }; + + loadPrivateResourceIndex(); + + return () => { + disposed = true; + }; + }, [ + myAddress?.address, + myAddress?.name?.name, + activePublishName, + privateIndexRevision, + ]); const [fileSystem, setFileSystem] = useMemo(() => { if (mode === "public") { @@ -793,8 +2097,32 @@ export const Manager = ({ myAddress, groups }) => { return false; } }); + const [showPrivateThumbnails, setShowPrivateThumbnails] = useState(() => { + try { + return localStorage.getItem(SHOW_PRIVATE_THUMBNAILS_KEY) === "1"; + } catch (error) { + return false; + } + }); + const [autoQdnFileSystemSync, setAutoQdnFileSystemSync] = useState(() => { + try { + return localStorage.getItem(AUTO_QDN_FILESYSTEM_SYNC_KEY) !== "0"; + } catch (error) { + return true; + } + }); + const [qdnFileSystemLoadReady, setQdnFileSystemLoadReady] = useState(false); const [showBulkMoveModal, setShowBulkMoveModal] = useState(false); const [bulkMoveTargetPath, setBulkMoveTargetPath] = useState([]); + const [qdnSyncPrompt, setQdnSyncPrompt] = useState(null); + const [qdnPublishNoticeVisible, setQdnPublishNoticeVisible] = useState(false); + const fileSystemLoadedRef = useRef(false); + const skipNextQdnPublishPromptRef = useRef(true); + const qdnPublishPromptTimerRef = useRef(null); + const qdnPublishPromptRef = useRef(null); + const lastQdnSyncedSnapshotRef = useRef(""); + const dismissedPublishSnapshotRef = useRef(""); + const checkedQdnLoadRef = useRef(false); const [currentPath, setCurrentPath] = useState(["Root"]); const [isOpenPublish, setIsOpenPublish] = useState(false); @@ -815,6 +2143,12 @@ export const Manager = ({ myAddress, groups }) => { } }, [groups]); + useEffect(() => { + if (!activePublishName && myAddress?.name?.name) { + setActivePublishName(myAddress.name.name); + } + }, [activePublishName, myAddress?.name?.name]); + useEffect(() => { setSelectedFileKeys([]); }, [mode, selectedGroup]); @@ -825,6 +2159,39 @@ export const Manager = ({ myAddress, groups }) => { } catch (error) {} }, [showThumbnails]); + useEffect(() => { + try { + localStorage.setItem( + SHOW_PRIVATE_THUMBNAILS_KEY, + showPrivateThumbnails ? "1" : "0" + ); + } catch (error) {} + }, [showPrivateThumbnails]); + + useEffect(() => { + try { + localStorage.setItem( + AUTO_QDN_FILESYSTEM_SYNC_KEY, + autoQdnFileSystemSync ? "1" : "0" + ); + } catch (error) {} + }, [autoQdnFileSystemSync]); + + const showPublishNotice = (prompt) => { + qdnPublishPromptRef.current = prompt; + setQdnPublishNoticeVisible(true); + }; + + const openPublishPrompt = () => { + if (!qdnPublishPromptRef.current) return; + setQdnSyncPrompt(qdnPublishPromptRef.current); + }; + + const clearPublishNotice = () => { + qdnPublishPromptRef.current = null; + setQdnPublishNoticeVisible(false); + }; + const handleNavigate = (folderName) => { setSelectedFileKeys([]); setCurrentPath((prev) => [...prev, folderName]); @@ -840,43 +2207,332 @@ export const Manager = ({ myAddress, groups }) => { useEffect(() => { if (!myAddress?.address) return; const fetchFileSystem = async () => { + checkedQdnLoadRef.current = false; + setQdnFileSystemLoadReady(false); + setQdnSyncPrompt(null); + setQdnPublishNoticeVisible(false); + qdnPublishPromptRef.current = null; const data = await getPersistedFileSystemQManager(myAddress?.address); + const currentPrivateResourceIndex = await getPersistedPrivateResourceIndex( + myAddress?.address, + [myAddress?.name?.name, activePublishName].filter(Boolean) + ).catch(() => null); + const loadedPayload = + data?.private && data?.public + ? { + public: data.public, + private: data.private, + group: + data?.group && !Array.isArray(data.group) + ? data.group + : initialGroupFileSystem, + } + : { + public: initialFileSystem, + private: initialFileSystem, + group: initialGroupFileSystem, + }; + if (currentPrivateResourceIndex) { + loadedPayload.privateResourceIndex = currentPrivateResourceIndex; + } + setPrivateResourceIndex(currentPrivateResourceIndex); if (data?.private && data?.public) { setFileSystemPublic(data?.public); setFileSystemPrivate(data?.private); const groupData = - data?.group && !Array.isArray(data.group) ? data.group : initialGroupFileSystem; + data?.group && !Array.isArray(data.group) + ? data.group + : initialGroupFileSystem; setFileSystemGroup(groupData); } else { setFileSystemPublic(initialFileSystem); setFileSystemPrivate(initialFileSystem); setFileSystemGroup(initialGroupFileSystem); } + fileSystemLoadedRef.current = true; + skipNextQdnPublishPromptRef.current = true; + dismissedPublishSnapshotRef.current = stableStringify( + normalizeQdnSyncPayloadForComparison(loadedPayload) + ); + setQdnFileSystemLoadReady(true); + }; + fetchFileSystem(); + }, [myAddress?.address]); + + useEffect(() => { + if ( + !myAddress?.name?.name || + !qdnFileSystemLoadReady || + checkedQdnLoadRef.current + ) { + return; + } + + let disposed = false; + checkedQdnLoadRef.current = true; + const loadPublishedFileSystem = async () => { + try { + const imported = await importFileSystemQManagerFromQDN( + myAddress.name.name + ); + if (disposed || !imported?.public || !imported?.private) return; + + const currentPrivateResourceIndex = + await getPersistedPrivateResourceIndex( + myAddress?.address, + [myAddress?.name?.name, activePublishName].filter(Boolean) + ); + + const importedPayload = { + public: imported.public, + private: imported.private, + group: + imported?.group && !Array.isArray(imported.group) + ? imported.group + : initialGroupFileSystem, + ...(imported?.privateResourceIndex + ? { privateResourceIndex: imported.privateResourceIndex } + : {}), + }; + const currentPayload = { + public: fileSystemPublic, + private: fileSystemPrivate, + group: fileSystemGroup, + ...(currentPrivateResourceIndex + ? { privateResourceIndex: currentPrivateResourceIndex } + : {}), + }; + const localSnapshot = stableStringify( + normalizeQdnSyncPayloadForComparison(currentPayload) + ); + const importedSnapshot = stableStringify( + normalizeQdnSyncPayloadForComparison(importedPayload) + ); + + // If the dismissed snapshot matches local, the user already rejected this QDN state. + // Update the baseline to local and don't show the prompt (prevents deleted files from re-adding). + const dismissedSnapshot = dismissedPublishSnapshotRef.current; + if (dismissedSnapshot && dismissedSnapshot === localSnapshot) { + lastQdnSyncedSnapshotRef.current = localSnapshot; + return; + } + + lastQdnSyncedSnapshotRef.current = importedSnapshot; + if (localSnapshot === importedSnapshot) { + return; + } + + const diff = diffQdnSyncPayload(currentPayload, importedPayload); + setQdnSyncPrompt({ + type: "load", + title: "Load Published Filesystem Backup?", + intro: + "A QDN backup was found that differs from the filesystem currently loaded in Q-Manager. This includes both the filesystem structure and the private resource index.", + fromLabel: "Current local", + toLabel: "Published QDN backup", + fromSummary: summarizeQdnSyncPayload(currentPayload), + toSummary: summarizeQdnSyncPayload(importedPayload), + diff, + confirmLabel: "Load backup", + onConfirm: async () => { + if (disposed) return; + skipNextQdnPublishPromptRef.current = true; + setFileSystemPublic(imported.public); + setFileSystemPrivate(imported.private); + setFileSystemGroup(importedPayload.group); + setCurrentPath(["Root"]); + // Restore the private resource index from QDN backup too + if (importedPayload?.privateResourceIndex && myAddress?.address) { + await savePrivateResourceIndexEverywhere( + importedPayload.privateResourceIndex, + myAddress.address + ).catch((error) => { + console.error( + "Failed to restore private resource index from QDN backup:", + error + ); + }); + } + clearPublishNotice(); + dismissedPublishSnapshotRef.current = importedSnapshot; + setQdnSyncPrompt(null); + }, + onCancel: () => { + const localSnap = stableStringify( + normalizeQdnSyncPayloadForComparison(currentPayload) + ); + lastQdnSyncedSnapshotRef.current = localSnap; + dismissedPublishSnapshotRef.current = localSnap; + setQdnSyncPrompt(null); + }, + }); + } catch (error) {} }; - fetchFileSystem(); - }, [myAddress?.address]); + + loadPublishedFileSystem(); + + return () => { + disposed = true; + }; + }, [ + myAddress?.name?.name, + activePublishName, + qdnFileSystemLoadReady, + fileSystemPublic, + fileSystemPrivate, + fileSystemGroup, + ]); useEffect(() => { if (fileSystemPublic && fileSystemPrivate && myAddress?.address) { - const payload = { - public: fileSystemPublic, - private: fileSystemPrivate, - group: fileSystemGroup, + const syncFilesystemState = async () => { + const privateResourceIndex = await getPersistedPrivateResourceIndex( + myAddress?.address, + [myAddress?.name?.name, activePublishName].filter(Boolean) + ); + + const payload = { + public: fileSystemPublic ?? [], + private: fileSystemPrivate ?? [], + group: fileSystemGroup || {}, + ...(privateResourceIndex ? { privateResourceIndex } : {}), + }; + + saveFileSystemQManagerEverywhere(payload, myAddress?.address).catch( + (error) => { + console.error( + "Failed to persist Q-Manager filesystem state:", + error + ); + } + ); + + if (!autoQdnFileSystemSync && skipNextQdnPublishPromptRef.current) { + skipNextQdnPublishPromptRef.current = false; + } + + if ( + autoQdnFileSystemSync && + myAddress?.name?.name && + fileSystemLoadedRef.current + ) { + if (skipNextQdnPublishPromptRef.current) { + skipNextQdnPublishPromptRef.current = false; + return; + } + + const currentSnapshot = stableStringify( + normalizeQdnSyncPayloadForComparison({ + public: fileSystemPublic, + private: fileSystemPrivate, + group: fileSystemGroup, + ...(privateResourceIndex ? { privateResourceIndex } : {}), + }) + ); + const baselineSnapshot = lastQdnSyncedSnapshotRef.current; + if ( + !baselineSnapshot || + currentSnapshot === baselineSnapshot || + currentSnapshot === dismissedPublishSnapshotRef.current + ) { + return; + } + + if (qdnPublishPromptTimerRef.current) { + clearTimeout(qdnPublishPromptTimerRef.current); + } + + qdnPublishPromptTimerRef.current = setTimeout(() => { + const baselinePayload = (() => { + try { + return JSON.parse(baselineSnapshot); + } catch (error) { + return null; + } + })(); + const diff = diffQdnSyncPayload(baselinePayload, payload); + if (!diff.hasChanges) return; + + const publishPrompt = { + type: "publish", + title: "Publish Filesystem Backup Update?", + intro: + "Your local Q-Manager filesystem differs from the last QDN backup.", + fromLabel: "Last QDN backup", + toLabel: "Current local", + fromSummary: summarizeQdnSyncPayload(baselinePayload), + toSummary: summarizeQdnSyncPayload(payload), + diff, + confirmLabel: "Publish update", + onConfirm: async () => { + try { + const publishPromise = publishFileSystemQManagerToQDN({ + fileSystemQManager: { + public: fileSystemPublic, + private: fileSystemPrivate, + group: fileSystemGroup, + }, + privateResourceIndex, + activePublishName: + activePublishName || myAddress?.name?.name, + }); + + openToast(publishPromise, { + loading: "Publishing filesystem structure to QDN...", + success: "Filesystem structure published to QDN", + error: (err) => + `Publish failed: ${err?.error || err?.message || err}`, + }); + await publishPromise; + lastQdnSyncedSnapshotRef.current = currentSnapshot; + dismissedPublishSnapshotRef.current = ""; + clearPublishNotice(); + } catch (error) { + console.error( + "Failed to publish filesystem backup update:", + error + ); + } finally { + setQdnSyncPrompt(null); + } + }, + onCancel: () => { + dismissedPublishSnapshotRef.current = currentSnapshot; + setQdnSyncPrompt(null); + }, + }; + + showPublishNotice(publishPrompt); + }, 1500); + } }; - saveFileSystemQManagerEverywhere(payload, myAddress?.address).catch( - (error) => { - console.error("Failed to persist Q-Manager filesystem state:", error); + syncFilesystemState(); + + return () => { + if (qdnPublishPromptTimerRef.current) { + clearTimeout(qdnPublishPromptTimerRef.current); + qdnPublishPromptTimerRef.current = null; } - ); + }; } + + return () => { + if (qdnPublishPromptTimerRef.current) { + clearTimeout(qdnPublishPromptTimerRef.current); + qdnPublishPromptTimerRef.current = null; + } + }; }, [ fileSystemPublic, fileSystemPrivate, fileSystemGroup, myAddress?.address, + myAddress?.name?.name, + activePublishName, + autoQdnFileSystemSync, + privateIndexRevision, ]); - const addDirectoryToCurrent = (directoryName) => { if (!directoryName || currentPath.length === 0) return false; @@ -1007,7 +2663,10 @@ export const Manager = ({ myAddress, groups }) => { ); if (fileIndex !== -1) { targetFolderNode.children.splice(fileIndex, 1); // Remove the file from the children array - setFileSystem(updatedFileSystem); // Update the state + const snapshot = buildQdnSyncSnapshot(updatedFileSystem); + lastQdnSyncedSnapshotRef.current = snapshot; + dismissedPublishSnapshotRef.current = snapshot; + setFileSystem(updatedFileSystem); return true; } @@ -1207,10 +2866,16 @@ export const Manager = ({ myAddress, groups }) => { ? { ...fileSystemGroup } : {}; - for (const [groupIdKey, files] of Object.entries(groupedByTarget.group)) { + for (const [groupIdKey, files] of Object.entries( + groupedByTarget.group + )) { const groupId = Number(groupIdKey); - const currentGroupTree = nextGroupState[groupId] || cloneInitialFileSystem(); - const mergedGroup = mergeDiscoveredFilesIntoTree(currentGroupTree, files); + const currentGroupTree = + nextGroupState[groupId] || cloneInitialFileSystem(); + const mergedGroup = mergeDiscoveredFilesIntoTree( + currentGroupTree, + files + ); if (mergedGroup.addedCount > 0) { nextGroupState[groupId] = mergedGroup.nextTree; totalAdded += mergedGroup.addedCount; @@ -1374,10 +3039,10 @@ export const Manager = ({ myAddress, groups }) => { if (!over) return; const activeIndex = currentFolder.children.findIndex( - (item) => item.name + item.type === active.id + (item) => getNodeSelectionKey(item) === active.id ); const overIndex = currentFolder.children.findIndex( - (item) => item.name + item.type === over.id + (item) => getNodeSelectionKey(item) === over.id ); const updatedChildren = arrayMove( @@ -1463,6 +3128,63 @@ export const Manager = ({ myAddress, groups }) => { return currentNodes; // Returns the children array of the target folder }; + const setFileSystemAtPath = (pathArray, updatedTree) => { + if (mode === "public") { + setFileSystemPublic(updatedTree); + } else if (mode === "private") { + setFileSystemPrivate(updatedTree); + } else { + setFileSystemGroup((prev) => ({ + ...(prev || {}), + [selectedGroup]: updatedTree, + })); + } + }; + + const buildQdnSyncSnapshot = (updatedTree) => { + const nextPublic = mode === "public" ? updatedTree : fileSystemPublic; + const nextPrivate = mode === "private" ? updatedTree : fileSystemPrivate; + const nextGroup = + mode === "group" + ? { + ...( + fileSystemGroup && !Array.isArray(fileSystemGroup) + ? fileSystemGroup + : {} + ), + ...(selectedGroup !== null && selectedGroup !== undefined + ? { [selectedGroup]: updatedTree } + : {}), + } + : fileSystemGroup && !Array.isArray(fileSystemGroup) + ? fileSystemGroup + : {}; + + return stableStringify( + normalizeQdnSyncPayloadForComparison({ + public: nextPublic, + private: nextPrivate, + group: nextGroup, + ...(privateResourceIndex ? { privateResourceIndex } : {}), + }) + ); + }; + + const findNodeInTree = (nodeName, nodeType, tree) => { + if (!tree || !Array.isArray(tree)) return null; + // Check root-level direct children + for (const node of tree) { + if (node.name === nodeName && node.type === nodeType) { + return { parent: tree, index: tree.indexOf(node) }; + } + if (node.children && Array.isArray(node.children)) { + const found = findNodeInTree(nodeName, nodeType, node.children); + if (found) return found; + } + } + return null; + }; + const moveNodeByPath = ( nodeName, nodeType, @@ -1474,70 +3196,107 @@ export const Manager = ({ myAddress, groups }) => { return false; } - const updatedFileSystem = JSON.parse(JSON.stringify(fileSystem)); - - // Updated traverseToFolder function (as above) - const traverseToFolder = (pathArray, nodes) => { - let currentNodes = nodes; - let folder = null; - - for (const dir of pathArray) { - folder = currentNodes.find( - (node) => node.name === dir && node.type === "folder" - ); - if (!folder) { - console.error(`Folder not found: ${dir}`); - return null; - } - currentNodes = folder.children; + // Search all file systems for the node + const fsConfigs = []; + if (mode === "public") { + fsConfigs.push({ key: "public", data: fileSystemPublic }); + fsConfigs.push({ key: "private", data: fileSystemPrivate }); + if (fileSystemGroup && selectedGroup) { + fsConfigs.push({ + key: `group_${selectedGroup}`, + data: fileSystemGroup[selectedGroup] || [], + }); } - - return folder; - }; - - // Locate the source folder (where the node currently resides) - const sourceFolder = traverseToFolder(sourcePathArray, updatedFileSystem); - if (!sourceFolder || !sourceFolder.children) { - console.error("Source folder not found"); - return false; - } - - // Locate the target folder - const targetFolder = - targetPathArray.length > 0 - ? traverseToFolder(targetPathArray, updatedFileSystem) - : { children: updatedFileSystem }; - - if (!targetFolder || !targetFolder.children) { - console.error("Target folder not found"); - return false; + } else if (mode === "private") { + fsConfigs.push({ key: "private", data: fileSystemPrivate }); + fsConfigs.push({ key: "public", data: fileSystemPublic }); + if (fileSystemGroup && selectedGroup) { + fsConfigs.push({ + key: `group_${selectedGroup}`, + data: fileSystemGroup[selectedGroup] || [], + }); + } + } else { + fsConfigs.push({ + key: `group_${selectedGroup}`, + data: fileSystemGroup[selectedGroup] || [], + }); + fsConfigs.push({ key: "public", data: fileSystemPublic }); + fsConfigs.push({ key: "private", data: fileSystemPrivate }); } - // Find and remove the node from the source folder - const nodeIndex = sourceFolder.children.findIndex( - (node) => node.name === nodeName && node.type === nodeType - ); + for (const fsConfig of fsConfigs) { + if (!fsConfig.data || !Array.isArray(fsConfig.data)) continue; + + const source = findNodeInTree(nodeName, nodeType, fsConfig.data); + if (!source) continue; + + const updatedTree = JSON.parse(JSON.stringify(fsConfig.data)); + const [nodeToMove] = + fsConfig.data[source.index].children !== undefined + ? updatedTree[source.index].children.splice(0, 1) // node is a direct child of root, not in children array + : [updatedTree[source.index]]; // This shouldn't happen for files + + // Rebuild: find the actual node in the deep tree + const rebuildMove = () => { + let moved = false; + const moveInTree = (nodes) => { + if (moved) return; + for (let i = 0; i < nodes.length; i++) { + const n = nodes[i]; + if (n.name === nodeName && n.type === nodeType) { + const [toMove] = nodes.splice(i, 1); + moved = true; + return toMove; + } + if (n.children) { + const result = moveInTree(n.children); + if (result) return result; + } + } + return null; + }; - if (nodeIndex === -1) { - console.error("Node not found in source folder"); - return false; - } + const toMove = moveInTree(JSON.parse(JSON.stringify(updatedTree))); + if (!toMove) return null; + + // Find target folder + const targetTree = JSON.parse(JSON.stringify(fsConfig.data)); + const moveInTargetTree = (nodes) => { + if (targetPathArray.length === 0) return nodes; + let current = nodes; + for (const dir of targetPathArray) { + const folder = current.find( + (n) => n.name === dir && n.type === "folder" + ); + if (!folder) return null; + current = folder.children; + } + return current; + }; - const [nodeToMove] = sourceFolder.children.splice(nodeIndex, 1); + const targetFolder = moveInTargetTree(targetTree); + if (!targetFolder || !targetFolder.children) return false; - // Check for naming conflicts in the target folder - const existingNames = targetFolder.children - .filter((node) => node.type === nodeType) - .map((node) => node.name); + const existingNames = targetFolder.children + .filter((node) => node.type === nodeType) + .map((node) => node.name); + toMove.name = ensureUniqueName(toMove.name, existingNames); + targetFolder.children.push(toMove); - nodeToMove.name = ensureUniqueName(nodeToMove.name, existingNames); + setFileSystemAtPath( + targetPathArray.length === 0 ? [] : targetPathArray, + targetTree + ); + return true; + }; - // Add the node to the target folder - targetFolder.children.push(nodeToMove); + const result = rebuildMove(); + if (result) return true; + } - // Update the state - setFileSystem(updatedFileSystem); - return true; + console.error("Node not found in any file system"); + return false; }; const sensors = useSensors( @@ -1566,13 +3325,21 @@ export const Manager = ({ myAddress, groups }) => { ); }, [currentFolder?.children, mode, selectedGroup]); + const resolvedVisibleItems = useMemo( + () => + visibleItems.map((item) => + resolvePrivateResourceItem(item, privateResourceIndex) + ), + [visibleItems, privateResourceIndex] + ); + const selectedVisibleFiles = useMemo(() => { - return visibleItems.filter( + return resolvedVisibleItems.filter( (item) => item?.type === "file" && selectedFileKeys.includes(getNodeSelectionKey(item)) ); - }, [visibleItems, selectedFileKeys]); + }, [resolvedVisibleItems, selectedFileKeys]); const selectedSizeSummary = useMemo(() => { let totalBytes = 0; @@ -1590,6 +3357,22 @@ export const Manager = ({ myAddress, groups }) => { }; }, [selectedVisibleFiles]); + const resolvedSelectedFile = useMemo( + () => + selectedFile + ? resolvePrivateResourceItem(selectedFile, privateResourceIndex) + : null, + [selectedFile, privateResourceIndex] + ); + + const resolvedPreviewFile = useMemo( + () => + previewFile + ? resolvePrivateResourceItem(previewFile, privateResourceIndex) + : null, + [previewFile, privateResourceIndex] + ); + const toggleSelectFile = (item) => { if (item?.type !== "file") return; const key = getNodeSelectionKey(item); @@ -1640,6 +3423,11 @@ export const Manager = ({ myAddress, groups }) => { return !selectedKeys.has(getNodeSelectionKey(child)); }); + // Build snapshot from the modified tree so the auto-sync baseline matches the local filesystem state. + const snapshot = buildQdnSyncSnapshot(updatedFileSystem); + lastQdnSyncedSnapshotRef.current = snapshot; + dismissedPublishSnapshotRef.current = snapshot; + setFileSystem(updatedFileSystem); clearSelection(); }; @@ -1705,7 +3493,9 @@ export const Manager = ({ myAddress, groups }) => { let nodes = updatedFileSystem; let folder = null; for (const part of pathArray) { - folder = nodes.find((node) => node.name === part && node.type === "folder"); + folder = nodes.find( + (node) => node.name === part && node.type === "folder" + ); if (!folder) return null; nodes = folder.children; } @@ -1742,23 +3532,301 @@ export const Manager = ({ myAddress, groups }) => { clearSelection(); }; + const isPrivateService = (service) => { + return ( + typeof service === "string" && service.toUpperCase().includes("_PRIVATE") + ); + }; + + const isGroupResource = (file) => { + return Boolean(file?.group || file?.groupId); + }; + + const isPrivateFile = (file) => { + // Check encryptionType field (e.g., "private" or "group") + const encryptionType = + typeof file?.encryptionType === "string" + ? file.encryptionType.toLowerCase() + : ""; + if (encryptionType === "private" || encryptionType === "group") { + return true; + } + // Also check if service name indicates private + const service = getServiceName(file); + if ( + typeof service === "string" && + service.toUpperCase().includes("_PRIVATE") + ) { + return true; + } + // Check identifier prefix + const identifier = file?.identifier || ""; + if (typeof identifier === "string") { + const idLower = identifier.toLowerCase(); + if ( + idLower.startsWith("p-") || + idLower.startsWith("pvt-") || + idLower.startsWith("grp-") + ) { + return true; + } + } + return false; + }; + + const getPrivateServiceName = (file) => { + const baseService = file.service?.toUpperCase() || ""; + const isAlreadyPrivate = baseService.includes("_PRIVATE"); + return isAlreadyPrivate ? baseService : `${baseService}_PRIVATE`; + }; + const deleteSelectedFromQDN = async () => { if (selectedVisibleFiles.length === 0) return; const filesToDelete = [...selectedVisibleFiles]; - const tombstoneData64 = btoa("d"); + + const accountPublicKey = myAddress?.publicKey || ""; + const myName = activePublishName || myAddress?.name?.name || ""; const promise = (async () => { removeSelectedFromManager(); + const failures = []; + for (const file of filesToDelete) { if (!file?.identifier || !file?.service) continue; - await qortalRequest({ - action: "PUBLISH_QDN_RESOURCE", - service: file.service, - identifier: file.identifier, - data64: tombstoneData64, - }); + + if (isPrivateFile(file) || isPrivateService(file.service)) { + // Private service type or encrypted file - need to publish encrypted data. + const tombstonePayload = btoa("d"); + const sharingKey = file?.sharingKey || file?.key; + const targetService = getPrivateServiceName(file) || file.service; + + // Try 1: ENCRYPT_DATA_WITH_SHARING_KEY uses the stored sharing key from private index entry + // The Qortal Wallet looks up the sharing key internally using the resource's identifier + // Note: ENCRYPT_DATA_WITH_SHARING_KEY uses `base64` param (not data64), and returns a raw base64 string + try { + console.log( + "[DELETE] Try ENCRYPT_DATA_WITH_SHARING_KEY for", + file.service, + file.identifier + ); + const encryptedResponse = await requestQortal({ + action: "ENCRYPT_DATA_WITH_SHARING_KEY", + base64: tombstonePayload, + }); + console.log( + "[DELETE] ENCRYPT_DATA_WITH_SHARING_KEY response type:", + typeof encryptedResponse, + typeof encryptedResponse === "string" + ? "raw string (length " + (encryptedResponse?.length || 0) + ")" + : JSON.stringify(encryptedResponse) + ); + // The response is a raw base64 string + const encryptedData = + typeof encryptedResponse === "string" + ? encryptedResponse + : encryptedResponse?.data64 || encryptedResponse?.encryptedData; + if (encryptedData) { + console.log( + "[DELETE] Publishing to", + targetService, + file.identifier, + "with encryptedData length", + encryptedData.length + ); + const publishResult = await requestQortal({ + action: "PUBLISH_QDN_RESOURCE", + name: myName, + service: targetService, + identifier: file.identifier, + data64: encryptedData, + externalEncrypt: true, + }); + console.log( + "[DELETE] PUBLISH_QDN_RESOURCE response:", + publishResult + ); + if (publishResult?.identifier) continue; + } + } catch (error) { + console.error( + "[DELETE] ENCRYPT_DATA_WITH_SHARING_KEY failed for", + file.service, + file.identifier, + error + ); + } + + // Try 2: ENCRYPT_DATA uses account public key for standard private encryption + // ENCRYPT_DATA uses `data64` param and returns a raw base64 string + try { + console.log( + "[DELETE] Try ENCRYPT_DATA for", + file.service, + file.identifier, + "publicKey:", + accountPublicKey ? "set" : "MISSING" + ); + const encryptParams = { + action: "ENCRYPT_DATA", + data64: tombstonePayload, + }; + if (accountPublicKey) { + encryptParams.publicKey = accountPublicKey; + } + const encryptedResponse = await requestQortal(encryptParams); + console.log( + "[DELETE] ENCRYPT_DATA response type:", + typeof encryptedResponse, + typeof encryptedResponse === "string" + ? "raw string (length " + (encryptedResponse?.length || 0) + ")" + : JSON.stringify(encryptedResponse) + ); + // The response is a raw base64 string + const encryptedData = + typeof encryptedResponse === "string" + ? encryptedResponse + : encryptedResponse?.data64 || encryptedResponse?.encryptedData; + if (encryptedData) { + console.log( + "[DELETE] Publishing to", + targetService, + file.identifier, + "with encryptedData length", + encryptedData.length + ); + const publishResult = await requestQortal({ + action: "PUBLISH_QDN_RESOURCE", + name: myName, + service: targetService, + identifier: file.identifier, + data64: encryptedData, + externalEncrypt: true, + }); + console.log( + "[DELETE] PUBLISH_QDN_RESOURCE response:", + publishResult + ); + if (publishResult?.identifier) continue; + } + } catch (error) { + console.error( + "[DELETE] ENCRYPT_DATA failed for", + file.service, + file.identifier, + error + ); + } + + failures.push( + `${file.service}/${file.identifier} (encryption failed)` + ); + } else if (isGroupResource(file)) { + // Group resource - encrypt with group + try { + const tombstonePayload = btoa("d"); + const encryptedData = await requestQortal({ + action: "ENCRYPT_QORTAL_GROUP_DATA", + data64: tombstonePayload, + groupId: file.group || file.groupId, + }); + if (encryptedData) { + const publishResult = await requestQortal({ + action: "PUBLISH_QDN_RESOURCE", + service: file.service, + identifier: file.identifier, + data64: encryptedData, + }); + if (publishResult?.identifier) continue; + } + } catch (error) { + console.error("Delete: group encryption publish failed:", error); + } + + failures.push( + `${file.service}/${file.identifier} (group encryption failed)` + ); + } else { + // Public service - raw data is fine + try { + const publishResult = await requestQortal({ + action: "PUBLISH_QDN_RESOURCE", + service: file.service, + identifier: file.identifier, + data64: btoa("d"), + }); + if (publishResult?.identifier) continue; + } catch (error) { + console.error("Delete: public publish failed:", error); + } + + failures.push( + `${file.service}/${file.identifier} (public publish failed)` + ); + } + } + + // Refresh the QDN snapshot by fetching directly from the QDN resource endpoint + // so the diff sees the actual published state after the tombstone publish. + let currentQdnState = null; + try { + const response = await fetch( + `/arbitrary/DOCUMENT_PRIVATE/${myAddress.name.name}/${QDN_STRUCTURE_IDENTIFIER}?encoding=base64` + ); + if (response.ok) { + const encryptedData = await response.text(); + const decryptedData = await requestQortal({ + action: "DECRYPT_DATA", + encryptedData, + }); + const decryptedBytes = base64ToUint8Array(decryptedData); + currentQdnState = uint8ArrayToObject(decryptedBytes); + } + } catch (e) { + // If we can't fetch QDN state, fall back to local state + currentQdnState = { + public: fileSystemPublic, + private: fileSystemPrivate, + group: fileSystemGroup, + }; + } + + // Build synced snapshot using the QDN state we just fetched. + // The QDN backup includes both filesystem and privateResourceIndex. + // The diff compares each independently so filesystem deletions and + // private index additions/removals are all shown accurately. + // + // After a file delete, the local private index still has the file's entries + // (they're published separately to QDN). So we merge the local private index + // into the snapshot so the diff sees private index entries as "unchanged" + // on both sides. This is correct because the private index is managed locally + // and the QDN backup only stores the filesystem structure. + const localPrivateIndex = await getPersistedPrivateResourceIndex( + myAddress?.address, + [myAddress?.name?.name, activePublishName].filter(Boolean) + ).catch(() => null); + + const syncedSnapshot = stableStringify( + normalizeQdnSyncPayloadForComparison({ + public: currentQdnState?.public || fileSystemPublic, + private: currentQdnState?.private || fileSystemPrivate, + group: currentQdnState?.group || fileSystemGroup, + ...(localPrivateIndex ? { privateResourceIndex: localPrivateIndex } : {}), + }) + ); + + if (failures.length > 0) { + lastQdnSyncedSnapshotRef.current = syncedSnapshot; + dismissedPublishSnapshotRef.current = syncedSnapshot; + throw new Error( + `Failed to publish tombstone for: ${failures.join(", ")}. ` + + "The file was removed locally but the QDN publish may have failed. " + + "Please try again." + ); } + + lastQdnSyncedSnapshotRef.current = syncedSnapshot; + dismissedPublishSnapshotRef.current = syncedSnapshot; })(); openToast(promise, { @@ -1784,12 +3852,12 @@ export const Manager = ({ myAddress, groups }) => { }} centered > - - - + + + - + { Q-Manager + + + + + + {mode === "group" && ( { > setNewDirName(e.target.value)} + onKeyDown={(event) => { + if (event.key !== "Enter") return; + event.preventDefault(); + const trimmedName = newDirName.trim(); + if (!trimmedName) return; + onOk(trimmedName); + }} + autoFocus /> @@ -4399,7 +4889,6 @@ export const Manager = ({ disabled={!newDirName} variant="contained" onClick={() => onOk(newDirName)} - autoFocus > Save diff --git a/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx b/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx index b41023c..145dda2 100644 --- a/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx +++ b/src/actions/PUBLISH_MULTIPLE_QDN_RESOURCES.jsx @@ -9,12 +9,17 @@ import { styled, } from "@mui/material"; import ShortUniqueId from "short-unique-id"; -import { fileToBase64, objectToBase64 } from "../utils"; +import { + createImageThumbnailData64, + fileToBase64, + objectToBase64, +} from "../utils"; import { openToast } from "../components/openToast"; import Button from "../components/Button"; import { privateServices, services } from "../constants"; import { useDropzone } from "react-dropzone"; import { requestQortal } from "../qapp/request"; +import { resolvePreferredName } from "../utils"; import { upsertPrivateResourceIndexEntry } from "../storage"; const uid = new ShortUniqueId({ length: 10 }); @@ -124,6 +129,9 @@ export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ const [isLoading, setIsLoading] = useState(false); const [response, setResponse] = useState(""); const ownerName = typeof myName === "string" ? myName : ""; + const isImageFile = (candidate) => + typeof candidate?.type === "string" && + candidate.type.toLowerCase().startsWith("image/"); const { getRootProps, getInputProps } = useDropzone({ multiple: true, @@ -172,7 +180,12 @@ export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ const publishedItems = []; for (const file of files) { const { filename, identifier } = makeMeta(file); - const data64 = await fileToBase64(file); + const [data64, thumbnail] = await Promise.all([ + fileToBase64(file), + mode !== "public" && isImageFile(file) + ? createImageThumbnailData64(file, file?.type || "image/png") + : Promise.resolve(null), + ]); const mimeType = file?.type || "application/octet-stream"; const sizeInBytes = Number(file?.size) || 0; const publishedItem = { @@ -181,6 +194,12 @@ export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ identifier, mimeType, sizeInBytes, + ...(thumbnail?.data64 + ? { + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType, + } + : {}), }; publishedItems.push(publishedItem); @@ -296,6 +315,12 @@ export const PUBLISH_MULTIPLE_QDN_RESOURCES = ({ encryptionType: mode === "group" ? "group" : "private", ...(item.sharingKey ? { sharingKey: item.sharingKey } : {}), ...(item.publicKey ? { publicKey: item.publicKey } : {}), + ...(item.thumbnailData64 + ? { + thumbnailData64: item.thumbnailData64, + thumbnailMimeType: item.thumbnailMimeType || "image/jpeg", + } + : {}), ...(mode === "group" ? { group: selectedGroup, diff --git a/src/actions/PUBLISH_QDN_RESOURCE.jsx b/src/actions/PUBLISH_QDN_RESOURCE.jsx index 72c56e9..dfbdeab 100644 --- a/src/actions/PUBLISH_QDN_RESOURCE.jsx +++ b/src/actions/PUBLISH_QDN_RESOURCE.jsx @@ -13,7 +13,12 @@ import ShortUniqueId from "short-unique-id"; import Button from "../components/Button"; import { useDropzone } from "react-dropzone"; import { privateServices, services } from "../constants"; -import { fileToBase64, objectToBase64 } from "../utils"; +import { + createImageThumbnailData64, + fileToBase64, + objectToBase64, + resolvePreferredName, +} from "../utils"; import { openToast } from "../components/openToast"; import { requestQortal } from "../qapp/request"; import { upsertPrivateResourceIndexEntry } from "../storage"; @@ -129,6 +134,9 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac const [isLoading, setIsLoading] = useState(false); const [file, setFile] = useState(null); const ownerName = typeof myName === "string" ? myName : ""; + const isImageFile = (candidate) => + typeof candidate?.type === "string" && + candidate.type.toLowerCase().startsWith("image/"); const recordPrivateIndexEntry = async ({ indexOwner, @@ -139,6 +147,8 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac encryptionType, sharingKey, publicKey, + thumbnailData64, + thumbnailMimeType, groupId, groupName, service, @@ -161,6 +171,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac encryptionType, ...(sharingKey ? { sharingKey } : {}), ...(publicKey ? { publicKey } : {}), + ...(thumbnailData64 + ? { + thumbnailData64, + thumbnailMimeType: thumbnailMimeType || "image/jpeg", + } + : {}), ...(groupId ? { group: groupId, @@ -184,7 +200,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac const findGroup = groups?.find((group)=> group.groupId === selectedGroup) if(!findGroup) throw new Error('Cannot find group') setIsLoading(true); - + const fileExtension = file?.name?.includes(".") ? file.name.split(".").pop() : ""; const fileTitle = file?.name @@ -198,7 +214,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac const constructedIdentifier = existingFile?.identifier || `grp-${selectedGroup}-q-manager-${uid.rnd()}`; - const base64File = await fileToBase64(file); + const [base64File, thumbnail] = await Promise.all([ + fileToBase64(file), + isImageFile(file) + ? createImageThumbnailData64(file, file?.type || "image/png") + : Promise.resolve(null), + ]); const encryptedPayload = await buildEncryptedResourcePayload({ data64: base64File, filename, @@ -236,7 +257,7 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac groupName: findGroup?.groupName, }); setFile(""); - await recordPrivateIndexEntry({ + await recordPrivateIndexEntry({ indexOwner: accountAddress || myName, identifier: constructedIdentifier, filename, @@ -246,6 +267,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac groupId: selectedGroup, groupName: findGroup?.groupName, service: requestData?.service, + ...(thumbnail?.data64 + ? { + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType, + } + : {}), }); return true; // Success } @@ -277,6 +304,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac groupId: selectedGroup, groupName: findGroup?.groupName, service: requestData?.service, + ...(thumbnail?.data64 + ? { + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType, + } + : {}), }); @@ -321,7 +354,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac const constructedIdentifier = existingFile?.identifier || `p-q-manager-858-${uid.rnd()}`; - const base64File = await fileToBase64(file); + const [base64File, thumbnail] = await Promise.all([ + fileToBase64(file), + isImageFile(file) + ? createImageThumbnailData64(file, file?.type || "image/png") + : Promise.resolve(null), + ]); const encryptedPayload = await buildEncryptedResourcePayload({ data64: base64File, filename, @@ -367,6 +405,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac sharingKey, publicKey: accountPublicKey || publicKey, service: requestData?.service, + ...(thumbnail?.data64 + ? { + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType, + } + : {}), }); return true; // Success } @@ -398,6 +442,12 @@ export const PUBLISH_QDN_RESOURCE = ({ addNodeByPath, myName, accountAddress, ac sharingKey, publicKey: accountPublicKey || publicKey, service: requestData?.service, + ...(thumbnail?.data64 + ? { + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType, + } + : {}), }); diff --git a/src/qapp/request.ts b/src/qapp/request.ts new file mode 100644 index 0000000..f4ca263 --- /dev/null +++ b/src/qapp/request.ts @@ -0,0 +1,69 @@ +type RequestFn = (options: Record) => Promise + +const isFunction = (value: unknown): value is RequestFn => + typeof value === 'function' + +const getWindowRef = (): any => { + if (typeof window === 'undefined') return undefined + return window as any +} + +const getGlobalQortalRequest = (): RequestFn | null => { + try { + if (typeof qortalRequest === 'function') { + return qortalRequest as RequestFn + } + } catch (error) {} + return null +} + +const resolveProvider = (): { name: string; request: RequestFn } | null => { + const win = getWindowRef() + + const qappCoreRequest = + win?.qappCore?.request || + win?.QAppCore?.request || + win?.qappCore?.qortalRequest + if (isFunction(qappCoreRequest)) { + return { + name: 'qapp-core', + request: qappCoreRequest, + } + } + + const qappRequest = win?.qapp?.request || win?.qapp?.qortalRequest + if (isFunction(qappRequest)) { + return { + name: 'qapp', + request: qappRequest, + } + } + + const legacyRequest = getGlobalQortalRequest() + if (legacyRequest) { + return { + name: 'legacy-qortalRequest', + request: legacyRequest, + } + } + + return null +} + +export const getQortalRequestProvider = (): string => { + const provider = resolveProvider() + return provider?.name || 'none' +} + +export const requestQortal = async ( + options: Record +): Promise => { + const provider = resolveProvider() + if (!provider) { + throw new Error( + 'No Qortal request provider found (qapp-core, qapp, or qortalRequest)' + ) + } + return provider.request(options) +} + diff --git a/src/storage.ts b/src/storage.ts index 3f73e0a..2f616fc 100644 --- a/src/storage.ts +++ b/src/storage.ts @@ -613,7 +613,7 @@ export const publishFileSystemQManagerToQDN = async ({ return requestQortal({ action: "PUBLISH_QDN_RESOURCE", - name: resolvedName, + name: activePublishName, service: "DOCUMENT_PRIVATE", identifier: QDN_STRUCTURE_IDENTIFIER, filename: QDN_STRUCTURE_FILENAME, diff --git a/src/utils.ts b/src/utils.ts index cfbae66..66a19fc 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -34,6 +34,115 @@ export function base64ToUint8Array(base64: string): Uint8Array { return bytes } +export function base64ToBlob( + base64: string, + mimeType = 'application/octet-stream' +): Blob { + return new Blob([base64ToUint8Array(base64)], { type: mimeType }) +} + +const loadImageFromUrl = (url: string): Promise => { + return new Promise((resolve, reject) => { + const image = new Image() + image.onload = () => resolve(image) + image.onerror = () => + reject(new Error('Failed to load image data for thumbnail generation')) + image.src = url + }) +} + +const fitThumbnailDimensions = ( + width: number, + height: number, + maxWidth: number, + maxHeight: number +) => { + if (!Number.isFinite(width) || width <= 0) width = 1 + if (!Number.isFinite(height) || height <= 0) height = 1 + const scale = Math.min(maxWidth / width, maxHeight / height, 1) + return { + width: Math.max(1, Math.round(width * scale)), + height: Math.max(1, Math.round(height * scale)), + } +} + +export const createImageThumbnailData64 = async ( + source: Blob | string, + sourceMimeType = 'image/png', + options?: { + maxWidth?: number + maxHeight?: number + outputMimeType?: string + quality?: number + backgroundColor?: string + } +): Promise< + | { + data64: string + mimeType: string + width: number + height: number + } + | null +> => { + if (typeof document === 'undefined' || typeof URL === 'undefined') return null + + const { + maxWidth = 160, + maxHeight = 160, + outputMimeType = 'image/jpeg', + quality = 0.82, + backgroundColor = '#ffffff', + } = options || {} + + const blob = + typeof source === 'string' ? base64ToBlob(source, sourceMimeType) : source + if (!blob) return null + + let objectUrl = '' + try { + objectUrl = URL.createObjectURL(blob) + const image = await loadImageFromUrl(objectUrl) + const sourceWidth = Number(image.naturalWidth || image.width || 1) + const sourceHeight = Number(image.naturalHeight || image.height || 1) + const { width, height } = fitThumbnailDimensions( + sourceWidth, + sourceHeight, + maxWidth, + maxHeight + ) + + const canvas = document.createElement('canvas') + canvas.width = width + canvas.height = height + + const context = canvas.getContext('2d') + if (!context) return null + + if (outputMimeType === 'image/jpeg') { + context.fillStyle = backgroundColor + context.fillRect(0, 0, width, height) + } + + context.drawImage(image, 0, 0, width, height) + + const dataUrl = canvas.toDataURL(outputMimeType, quality) + const commaIndex = dataUrl.indexOf(',') + return { + data64: commaIndex >= 0 ? dataUrl.slice(commaIndex + 1) : '', + mimeType: outputMimeType, + width, + height, + } + } catch (error) { + return null + } finally { + if (objectUrl) { + URL.revokeObjectURL(objectUrl) + } + } +} + export function uint8ArrayToObject(uint8Array: Uint8Array): T { const decoder = new TextDecoder() const jsonString = decoder.decode(uint8Array) From f858eeb6763c51318e3ed734e5e671138a3a2d74 Mon Sep 17 00:00:00 2001 From: crowetic Date: Fri, 8 May 2026 15:45:17 -0700 Subject: [PATCH 7/9] v.0.2.6 --- CHANGELOG.md | 14 + package.json | 2 +- src/App.css | 17 +- src/ContextMenuPinnedFiles.tsx | 46 +- src/File.tsx | 101 +-- src/Manager.tsx | 663 ++++++++++++------ .../PUBLISH_MULTIPLE_QDN_RESOURCES.jsx | 134 ++-- src/actions/PUBLISH_QDN_RESOURCE.jsx | 107 +-- src/embedLink.ts | 278 ++++++++ src/global.d.ts | 1 + src/index.css | 13 +- src/storage.ts | 15 +- src/utils.ts | 83 +++ 13 files changed, 1044 insertions(+), 430 deletions(-) create mode 100644 src/embedLink.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a91142..e53c418 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ All notable changes to this project will be documented in this file. - Auto-sync no longer interrupts the user as soon as a mismatch is detected; the diff is now opened from the notification badge. - Private file display labels are kept separate from filesystem identity so private entries do not turn into phantom tree items. - Filesystem size summaries continue to report the summed sizes of represented files, which can look large even though the QDN backup payload is metadata-only. +- Group mode now prefers the embedded/current group hint when Q-Manager loads inside Q-Chat, and the group picker shows per-group file counts sorted by the most-populated group first. ### Fixed @@ -25,6 +26,19 @@ All notable changes to this project will be documented in this file. - Startup restore prompting now works consistently even when auto-sync is disabled. - Large private media previews remain separate from the backup snapshot flow, so preview cost is not the same thing as backup publish size. - Successful private previews now refresh the cached thumbnail in the private index, so a better preview can replace a stale image thumbnail. +- Group publish actions now normalize group IDs before encryption and publish, which avoids string/number mismatches when selecting a group. +- Public group publishes now stay unencrypted, while private groups use `ENCRYPT_QORTAL_GROUP_DATA` and write matching entries into the private resource index. +- Public group files are no longer treated like private resources just because they belong to a group, so previews, thumbnails, and deletes follow the correct path. +- Group embed links and published identifiers now follow the Q-Chat-compatible `grp-q-manager_0_group_...` / `grp-q-manager_1_group_...` convention, which keeps private group embeds decryptable and public group files unencrypted. +- Group embed links now also carry the selected `groupId` as a compatibility hint, since the current Q-Chat image embed path decrypts against the active group context. +- Delete-from-QDN now batches multiple selected files through the multi-publish request instead of republishing tombstones one at a time. +- Discovery/import now prefers the group ID encoded in the identifier when reconstructing previously published group files, so they land in the correct group bucket instead of the first selected group. +- Private embed creation now prefers the file node's stored sharing key before querying resource properties, which keeps freshly published private image embeds consistent with the key used to encrypt them. +- Private and private-group publishes now encrypt the raw file bytes once and publish them as externally encrypted data, while file metadata continues to live in the private resource index. +- Right-click file menus now include a `copy embed link` action that uses the file's default name and the same embed-link logic as the file details dialog. +- The app shell now keeps its dark background filled in embedded Q-Chat layouts so the lower page area does not flash white while scrolling. +- Multi-file publish now updates the live filesystem tree incrementally, so all files in a batch stay visible after group/private publishes. +- The bulk-move modal now tolerates the group-map fallback state and always renders the active group's folder tree instead of assuming the tree is already an array. ### Notes diff --git a/package.json b/package.json index 888d519..06d2f80 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Q-Manager", "private": true, - "version": "0.2.5", + "version": "0.2.6", "type": "module", "scripts": { "dev": "vite", diff --git a/src/App.css b/src/App.css index 3b7ead5..e41e868 100644 --- a/src/App.css +++ b/src/App.css @@ -1,14 +1,19 @@ #root { - width: 100vw; - height: 100vh; - margin: 0 auto; + width: 100%; + min-height: 100vh; + margin: 0; + background-color: rgb(39, 40, 44); } .container { display: flex; flex-direction: column; - justify-content: center; - + justify-content: flex-start; + align-items: stretch; + min-height: 100vh; + width: 100%; + background-color: rgb(39, 40, 44); + box-sizing: border-box; } .flex-row { @@ -54,4 +59,4 @@ button { outline: none; border: none; -} \ No newline at end of file +} diff --git a/src/ContextMenuPinnedFiles.tsx b/src/ContextMenuPinnedFiles.tsx index b1da446..c1a779b 100644 --- a/src/ContextMenuPinnedFiles.tsx +++ b/src/ContextMenuPinnedFiles.tsx @@ -18,6 +18,7 @@ import DriveFileMoveIcon from "@mui/icons-material/DriveFileMove"; import DriveFileRenameOutlineIcon from "@mui/icons-material/DriveFileRenameOutline"; import VisibilityIcon from "@mui/icons-material/Visibility"; import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined"; +import { isPrivateGroupQManagerIdentifier } from "./utils"; import { requestQortal } from "./qapp/request"; type MenuPosition = { @@ -60,13 +61,11 @@ const isEncryptedResourceNode = (node: FileNode | null | undefined) => { typeof node?.identifier === "string" ? node.identifier.toLowerCase() : ""; return ( - Boolean(node?.group || node?.groupId) || encryptionType.includes("private") || - encryptionType.includes("group") || + isPrivateGroupQManagerIdentifier(identifier) || service.includes("_PRIVATE") || identifier.startsWith("p-") || - identifier.startsWith("pvt-") || - identifier.startsWith("grp-") + identifier.startsWith("pvt-") ); }; @@ -81,6 +80,7 @@ type ContextMenuPinnedFilesProps = { currentPath: string[]; item: FileNode; onPreview?: () => void; + onCopyEmbedLink?: () => void; onHydrateMetadata?: (metadata: Record) => void; pinned?: boolean; onTogglePin?: () => void; @@ -196,6 +196,7 @@ export const ContextMenuPinnedFiles = ({ currentPath, item, onPreview, + onCopyEmbedLink, onHydrateMetadata, pinned, onTogglePin, @@ -386,11 +387,19 @@ export const ContextMenuPinnedFiles = ({ ]); const mergedItemInfo = useMemo>(() => { - if (!resourceProperties) return item; - const { key, publicKey, sharingKey, ...safeResourceProperties } = - resourceProperties || {}; + const { key, publicKey, sharingKey, ...safeItem } = item || {}; + if (!resourceProperties) return safeItem; + const { + key: resourceKey, + publicKey: resourcePublicKey, + sharingKey: resourceSharingKey, + ...safeResourceProperties + } = resourceProperties || {}; + void resourceKey; + void resourcePublicKey; + void resourceSharingKey; return { - ...item, + ...safeItem, fetchedResourceProperties: safeResourceProperties, }; }, [item, resourceProperties]); @@ -425,12 +434,6 @@ export const ContextMenuPinnedFiles = ({ ...(normalized?.encryptionType ? { encryptionType: normalized.encryptionType } : {}), - ...((response as any)?.key - ? { sharingKey: (response as any).key } - : {}), - ...((response as any)?.sharingKey - ? { sharingKey: (response as any).sharingKey } - : {}), ...((response as any)?.publicKey ? { publicKey: (response as any).publicKey } : {}), @@ -540,6 +543,21 @@ export const ContextMenuPinnedFiles = ({
)} + {type === "file" && !!onCopyEmbedLink && ( + { + handleClose(e); + onCopyEmbedLink(); + }} + > + + + + + copy embed link + + + )} {type === "file" && ( { diff --git a/src/File.tsx b/src/File.tsx index cfbd95d..942c18b 100644 --- a/src/File.tsx +++ b/src/File.tsx @@ -21,13 +21,16 @@ import { Transition } from "./ShowAction"; import type { TransitionProps } from "@mui/material/transitions/transition"; import CloseIcon from "@mui/icons-material/Close"; import { Label, PUBLISH_QDN_RESOURCE } from "./actions/PUBLISH_QDN_RESOURCE"; -import { base64ToUint8Array, uint8ArrayToObject } from "./utils"; +import { + isPrivateGroupQManagerIdentifier, +} from "./utils"; import ExpandMoreIcon from "@mui/icons-material/ExpandMore"; import ExpandLessIcon from "@mui/icons-material/ExpandLess"; import { Spacer } from "./components/Spacer"; import WarningIcon from "@mui/icons-material/Warning"; import { openToast } from "./components/openToast"; import { requestQortal } from "./qapp/request"; +import { copyEmbedLinkForFile } from "./embedLink"; const isEncryptedFileNode = (file) => { const service = @@ -40,13 +43,11 @@ const isEncryptedFileNode = (file) => { typeof file?.identifier === "string" ? file.identifier.toLowerCase() : ""; return ( - Boolean(file?.group || file?.groupId) || encryptionType.includes("private") || - encryptionType.includes("group") || + isPrivateGroupQManagerIdentifier(identifier) || service.includes("_PRIVATE") || identifier.startsWith("p-") || - identifier.startsWith("pvt-") || - identifier.startsWith("grp-") + identifier.startsWith("pvt-") ); }; @@ -132,6 +133,7 @@ export const SelectedFile = ({ getDisplayName(selectedFile) ); const fileSizeBytes = getFileSizeBytes(selectedFile); + const isEncryptedSelectedFile = isEncryptedFileNode(selectedFile); useEffect(() => { if (selectedFile?.mimeType?.toLowerCase()?.includes("image")) { setSelectedType("IMAGE"); @@ -151,88 +153,11 @@ export const SelectedFile = ({ const createEmbedLink = async () => { const promise = (async () => { try { - if (mode === "public") { - await requestQortal({ - action: "CREATE_AND_COPY_EMBED_LINK", - type: selectedType, - name: selectedFile.qortalName, - identifier: selectedFile.identifier, - service: selectedFile.service, - mimeType: selectedFile?.mimeType, - fileName: customFileName, - }); - return; - } - if (mode === "group") { - await requestQortal({ - action: "CREATE_AND_COPY_EMBED_LINK", - type: selectedType, - name: selectedFile.qortalName, - identifier: selectedFile.identifier, - service: selectedFile.service, - mimeType: selectedFile?.mimeType, - fileName: customFileName, - encryptionType: "group", - }); - return; - } - const resourcePropertyPayloads = [ - { - action: "GET_QDN_RESOURCE_PROPERTIES", - service: selectedFile.service, - identifier: selectedFile.identifier, - name: selectedFile.qortalName, - }, - { - action: "GET_QDN_RESOURCE_PROPERTIES", - service: selectedFile.service, - identifier: selectedFile.identifier, - qortalName: selectedFile.qortalName, - }, - { - action: "GET_QDN_RESOURCE_PROPERTIES", - service: selectedFile.service, - identifier: selectedFile.identifier, - }, - ]; - - let responseData: any = null; - for (const payload of resourcePropertyPayloads) { - try { - const response = await requestQortal(payload); - if (response && typeof response === "object") { - responseData = response; - if (responseData?.key || responseData?.sharingKey) break; - } - } catch (error) {} - } - - if (!responseData?.key && !responseData?.sharingKey) { - const res = await fetch( - `/arbitrary/${selectedFile.service}/${selectedFile.qortalName}/${selectedFile.identifier}?encoding=base64` - ); - const base64Data = await res.text(); - const decryptedData = await requestQortal({ - action: "DECRYPT_DATA", - encryptedData: base64Data, - }); - const decryptToUnit8Array = base64ToUint8Array(decryptedData); - responseData = uint8ArrayToObject(decryptToUnit8Array); - } - - const resolvedKey = responseData?.key || responseData?.sharingKey; - if (!resolvedKey) - throw new Error("Could not find key in encrypted data"); - await requestQortal({ - action: "CREATE_AND_COPY_EMBED_LINK", - type: selectedType, - name: selectedFile.qortalName, - identifier: selectedFile.identifier, - service: selectedFile.service, - encryptionType: "private", - key: resolvedKey, - mimeType: selectedFile?.mimeType, - fileName: customFileName, + await copyEmbedLinkForFile({ + file: selectedFile, + requestQortal, + selectedType, + customFileName, }); return true; } catch (error) { @@ -369,7 +294,7 @@ export const SelectedFile = ({ {fileSizeBytes === null ? "Unknown" : formatBytes(fileSizeBytes)} - {mode === "private" && ( + {isEncryptedSelectedFile && ( { const service = safeUpper(getServiceName(file)); const identifier = safeLower(file?.identifier); const encryptionType = safeLower(file?.encryptionType); + const isPrivateGroupIdentifier = + isPrivateGroupQManagerIdentifier(file?.identifier); return ( - Boolean(file?.group || file?.groupId) || encryptionType.includes("private") || - encryptionType.includes("group") || + isPrivateGroupIdentifier || service.includes("_PRIVATE") || identifier.startsWith("p-") || - identifier.startsWith("pvt-") || - identifier.startsWith("grp-") + identifier.startsWith("pvt-") ); }; @@ -800,7 +804,9 @@ const cachePrivatePreviewThumbnail = async ( thumbnailData64: thumbnail.data64, thumbnailMimeType: thumbnail.mimeType || "image/jpeg", }); + return thumbnail; } catch (error) {} + return null; }; const fetchResourceBase64 = async (file, signal) => { @@ -969,7 +975,7 @@ const fetchPreviewPayload = async ( cacheThumbnail && inferPreviewKindFromMimeType(rawPayloadMimeType) === "image" ) { - await cachePrivatePreviewThumbnail( + const thumbnail = await cachePrivatePreviewThumbnail( file, accountAddress, rawPayload.data64, @@ -977,6 +983,13 @@ const fetchPreviewPayload = async ( privateIndexEntry, { force: true } ); + if (thumbnail?.data64) { + return { + ...rawPayload, + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType || "image/jpeg", + }; + } } return rawPayload; } @@ -1004,7 +1017,7 @@ const fetchPreviewPayload = async ( cacheThumbnail && inferPreviewKindFromMimeType(decryptedPayloadMimeType) === "image" ) { - await cachePrivatePreviewThumbnail( + const thumbnail = await cachePrivatePreviewThumbnail( file, accountAddress, decrypted.data64, @@ -1012,6 +1025,14 @@ const fetchPreviewPayload = async ( privateIndexEntry, { force: true } ); + if (thumbnail?.data64) { + return { + data64: decrypted.data64, + metadata: decrypted.metadata, + thumbnailData64: thumbnail.data64, + thumbnailMimeType: thumbnail.mimeType || "image/jpeg", + }; + } } return { data64: decrypted.data64, @@ -1246,6 +1267,68 @@ const formatBytes = (value) => { return `${size >= 10 ? size.toFixed(1) : size.toFixed(2)} ${units[unitIndex]}`; }; +const countFileNodesInTree = (tree) => { + let count = 0; + + const walk = (nodes) => { + if (!Array.isArray(nodes)) return; + for (const node of nodes) { + if (!node || typeof node !== "object") continue; + if (node.type === "file") { + count += 1; + } + if (Array.isArray(node.children)) { + walk(node.children); + } + } + }; + + walk(tree); + return count; +}; + +const getEmbeddedGroupIdHint = (myAddress) => { + if (typeof window === "undefined") { + return ( + normalizeGroupId(myAddress?.defaultGroupId) || + normalizeGroupId(myAddress?.groupId) || + normalizeGroupId(myAddress?.currentGroupId) || + null + ); + } + + const searchParams = new URLSearchParams(window.location?.search || ""); + const candidates = [ + window.qappCore?.currentGroupId, + window.qappCore?.selectedGroupId, + window.qappCore?.groupId, + window.qappCore?.group?.groupId, + window.QAppCore?.currentGroupId, + window.QAppCore?.selectedGroupId, + window.QAppCore?.groupId, + window.QAppCore?.group?.groupId, + window.qapp?.currentGroupId, + window.qapp?.selectedGroupId, + window.qapp?.groupId, + window.qapp?.group?.groupId, + searchParams.get("groupId"), + searchParams.get("selectedGroupId"), + searchParams.get("currentGroupId"), + myAddress?.defaultGroupId, + myAddress?.groupId, + myAddress?.currentGroupId, + ]; + + for (const candidate of candidates) { + const normalizedGroupId = normalizeGroupId(candidate); + if (normalizedGroupId) { + return normalizedGroupId; + } + } + + return null; +}; + const getNodeSelectionKey = (item) => `${item?.type || ""}|${item?.name || ""}|${item?.identifier || ""}|${ item?.service || "" @@ -1625,8 +1708,17 @@ const FilePreviewDialog = ({ accountPublicKey ); if (disposed) return; - if (payload?.metadata && Object.keys(payload.metadata).length > 0) { - onHydrateMetadata?.(payload.metadata); + const hydratedMetadata = { + ...(payload?.metadata || {}), + ...(payload?.thumbnailData64 + ? { + thumbnailData64: payload.thumbnailData64, + thumbnailMimeType: payload.thumbnailMimeType, + } + : {}), + }; + if (Object.keys(hydratedMetadata).length > 0) { + onHydrateMetadata?.(hydratedMetadata); } const payloadMimeType = payload?.metadata?.mimeType || @@ -2065,6 +2157,17 @@ const SortableItem = ({ borderRadius: "12px", cursor: "grab", }; + const handleCopyEmbedLink = async () => { + const promise = copyEmbedLinkForFile({ + file: item, + requestQortal, + }); + await openToast(promise, { + loading: "Copying embed link...", + success: "Copied successfully!", + error: (err) => `Failed to copy: ${err.error || err.message || err}`, + }); + }; return ( + getEmbeddedGroupIdHint(myAddress) + ); const publishNames = Array.isArray(myAddress?.names) ? myAddress.names.filter((item) => item?.name) : myAddress?.name?.name @@ -2258,6 +2364,7 @@ export const Manager = ({ const [mode, setMode] = useState("public"); const [privateIndexRevision, setPrivateIndexRevision] = useState(0); const [privateResourceIndex, setPrivateResourceIndex] = useState(null); + const fileSystemSnapshotRef = useRef(null); useEffect(() => { if (typeof window === "undefined") return undefined; @@ -2341,6 +2448,10 @@ export const Manager = ({ selectedGroup, ]); + useEffect(() => { + fileSystemSnapshotRef.current = fileSystem; + }, [fileSystem]); + const { isShow, onCancel, onOk, show, type } = useModal(); const [newDirName, setNewDirName] = useState(""); const [newName, setNewName] = useState(""); @@ -2397,11 +2508,78 @@ export const Manager = ({ return folder; }, [currentPath, fileSystem]); + const groupOptions = useMemo(() => { + if (!Array.isArray(groups)) return []; + + return groups + .map((group) => { + const normalizedGroupId = normalizeGroupId(group?.groupId); + const fileCount = normalizedGroupId + ? countFileNodesInTree(fileSystemGroup?.[normalizedGroupId]) + : 0; + + return { + ...group, + normalizedGroupId, + fileCount, + }; + }) + .filter((group) => group.normalizedGroupId !== null) + .sort((a, b) => { + const countDelta = Number(b.fileCount || 0) - Number(a.fileCount || 0); + if (countDelta !== 0) return countDelta; + + const nameDelta = String(a.groupName || `Group ${a.normalizedGroupId}`).localeCompare( + String(b.groupName || `Group ${b.normalizedGroupId}`), + undefined, + { + sensitivity: "base", + } + ); + if (nameDelta !== 0) return nameDelta; + + return Number(a.normalizedGroupId || 0) - Number(b.normalizedGroupId || 0); + }); + }, [groups, fileSystemGroup]); + + const preferredGroupId = useMemo(() => { + if (!groupOptions.length) { + return getEmbeddedGroupIdHint(myAddress); + } + + const hintedGroupId = getEmbeddedGroupIdHint(myAddress); + if ( + hintedGroupId && + groupOptions.some( + (groupOption) => + Number(groupOption.normalizedGroupId) === Number(hintedGroupId) + ) + ) { + return hintedGroupId; + } + + return groupOptions[0]?.normalizedGroupId || hintedGroupId || null; + }, [groupOptions, myAddress]); + useEffect(() => { - if (!selectedGroup && groups?.length > 0) { - setSelectedGroup(groups[0]?.groupId); + if (mode !== "group") return; + if (!groupOptions.length) return; + + const normalizedSelectedGroup = normalizeGroupId(selectedGroup); + const selectedGroupExists = + normalizedSelectedGroup !== null && + groupOptions.some( + (groupOption) => + Number(groupOption.normalizedGroupId) === Number(normalizedSelectedGroup) + ); + + if (selectedGroupExists) return; + + const nextGroupId = preferredGroupId || groupOptions[0]?.normalizedGroupId || null; + if (nextGroupId) { + setSelectedGroup(nextGroupId); } - }, [groups]); + }, [mode, groupOptions, preferredGroupId, selectedGroup]); useEffect(() => { if (!activePublishName && myAddress?.name?.name) { @@ -2506,6 +2684,9 @@ export const Manager = ({ if (currentPrivateResourceIndex) { loadedPayload.privateResourceIndex = currentPrivateResourceIndex; } + lastQdnSyncedSnapshotRef.current = stableStringify( + normalizeQdnSyncPayloadForComparison(loadedPayload) + ); setPrivateResourceIndex(currentPrivateResourceIndex); if (data?.private && data?.public) { setFileSystemPublic(data?.public); @@ -2701,7 +2882,8 @@ export const Manager = ({ const addDirectoryToCurrent = (directoryName) => { if (!directoryName || currentPath.length === 0) return false; - const updatedFileSystem = JSON.parse(JSON.stringify(fileSystem)); // Deep copy to avoid state mutation + const sourceFileSystem = fileSystemSnapshotRef.current || fileSystem || []; + const updatedFileSystem = JSON.parse(JSON.stringify(sourceFileSystem)); // Deep copy to avoid state mutation const targetFolder = currentPath[currentPath.length - 1]; // Current directory const parents = currentPath.slice(0, -1); // Parent directories @@ -2739,6 +2921,7 @@ export const Manager = ({ children: [], }); + fileSystemSnapshotRef.current = updatedFileSystem; setFileSystem(updatedFileSystem); // Update the state queueQdnPublishPrompt( buildQdnSyncPayload({ updatedTree: updatedFileSystem }) @@ -2751,7 +2934,8 @@ export const Manager = ({ const addNodeByPath = (pathArray = currentPath, newNode) => { if (pathArray.length === 0) return false; - const updatedFileSystem = JSON.parse(JSON.stringify(fileSystem)); // Deep copy to avoid mutating state + const sourceFileSystem = fileSystemSnapshotRef.current || fileSystem || []; + const updatedFileSystem = JSON.parse(JSON.stringify(sourceFileSystem)); // Deep copy to avoid mutating state const target = pathArray[pathArray.length - 1]; // Last item is the target directory const parents = pathArray.slice(0, -1); // All but the last item are parent directories @@ -2786,6 +2970,7 @@ export const Manager = ({ } targetNode.children.push(nextNode); + fileSystemSnapshotRef.current = updatedFileSystem; setFileSystem(updatedFileSystem); queueQdnPublishPrompt(buildQdnSyncPayload({ updatedTree: updatedFileSystem })); @@ -2952,11 +3137,10 @@ export const Manager = ({ const groupedByTarget = discovered.reduce( (acc, resource) => { const identifier = resource?.identifier || ""; - const groupFromIdentifier = /^grp-(\d+)-q-manager/i.exec(identifier); + const groupFromIdentifier = parseGroupQManagerIdentifier(identifier); const inferredGroupId = + Number(groupFromIdentifier?.groupId) || Number(resource?.groupId) || - Number(groupFromIdentifier?.[1]) || - (identifier.startsWith("grp-") ? Number(selectedGroup) || 0 : 0) || 0; const normalizedResource = { type: "file", @@ -2971,12 +3155,19 @@ export const Manager = ({ qortalName: resource?.qortalName || ownerName, mimeType: resource?.mimeType, sizeInBytes: resource?.sizeInBytes, + ...(groupFromIdentifier + ? groupFromIdentifier.isPrivateGroup + ? { encryptionType: "group" } + : {} + : resource?.encryptionType + ? { encryptionType: resource.encryptionType } + : {}), ...(inferredGroupId > 0 ? { group: inferredGroupId, groupName: groups?.find( - (groupItem) => groupItem.groupId === inferredGroupId + (groupItem) => Number(groupItem.groupId) === Number(inferredGroupId) )?.groupName || `Group ${inferredGroupId}`, } : {}), @@ -3749,7 +3940,8 @@ export const Manager = ({ return baseItems.filter( (item) => item.type === "folder" || - (item.type === "file" && item?.group === selectedGroup) + (item.type === "file" && + Number(item?.group) === Number(selectedGroup)) ); }, [currentFolder?.children, mode, selectedGroup]); @@ -3910,8 +4102,30 @@ export const Manager = ({ clearSelection(); }; + const getBulkMoveRootDirectories = () => { + if (Array.isArray(fileSystem)) { + return fileSystem; + } + + if (fileSystem && typeof fileSystem === "object") { + if (selectedGroup && Array.isArray(fileSystem[selectedGroup])) { + return fileSystem[selectedGroup]; + } + + const firstTree = Object.values(fileSystem).find((tree) => + Array.isArray(tree) + ); + if (firstTree) { + return firstTree; + } + } + + return []; + }; + const renderFolderTreeForBulkMove = (directories, path = []) => { - return (directories || []) + const directoryNodes = Array.isArray(directories) ? directories : []; + return directoryNodes .filter((node) => node?.type === "folder") .map((dir) => { const fullPath = [...path, dir.name]; @@ -4017,17 +4231,13 @@ export const Manager = ({ ); }; - const isGroupResource = (file) => { - return Boolean(file?.group || file?.groupId); - }; - const isPrivateFile = (file) => { // Check encryptionType field (e.g., "private" or "group") const encryptionType = typeof file?.encryptionType === "string" ? file.encryptionType.toLowerCase() : ""; - if (encryptionType === "private" || encryptionType === "group") { + if (encryptionType === "private") { return true; } // Also check if service name indicates private @@ -4044,8 +4254,7 @@ export const Manager = ({ const idLower = identifier.toLowerCase(); if ( idLower.startsWith("p-") || - idLower.startsWith("pvt-") || - idLower.startsWith("grp-") + idLower.startsWith("pvt-") ) { return true; } @@ -4053,6 +4262,17 @@ export const Manager = ({ return false; }; + const isGroupEncryptedFile = (file) => { + const encryptionType = + typeof file?.encryptionType === "string" + ? file.encryptionType.toLowerCase() + : ""; + if (encryptionType === "group" && isPrivateGroupQManagerIdentifier(file?.identifier)) { + return true; + } + return isPrivateGroupQManagerIdentifier(file?.identifier); + }; + const getPrivateServiceName = (file) => { const baseService = file.service?.toUpperCase() || ""; const isAlreadyPrivate = baseService.includes("_PRIVATE"); @@ -4065,183 +4285,157 @@ export const Manager = ({ const accountPublicKey = myAddress?.publicKey || ""; const myName = activePublishName || myAddress?.name?.name || ""; + const tombstonePayload = btoa("d"); + + const buildDeletePublishResource = async (file) => { + if (isGroupEncryptedFile(file)) { + const groupId = normalizeGroupId(file?.groupId || file?.group); + if (!groupId) { + throw new Error("missing group id"); + } + + const encryptedResponse = await requestQortal({ + action: "ENCRYPT_QORTAL_GROUP_DATA", + data64: tombstonePayload, + groupId, + }); + const encryptedData = + typeof encryptedResponse === "string" + ? encryptedResponse + : encryptedResponse?.data64 || encryptedResponse?.encryptedData; + if (!encryptedData) { + throw new Error("group encryption failed"); + } + + return { + name: myName, + service: file.service, + identifier: file.identifier, + data64: encryptedData, + externalEncrypt: true, + }; + } + + if (isPrivateFile(file) || isPrivateService(file.service)) { + const targetService = getPrivateServiceName(file) || file.service; + + try { + const encryptedResponse = await requestQortal({ + action: "ENCRYPT_DATA_WITH_SHARING_KEY", + base64: tombstonePayload, + }); + const encryptedData = + typeof encryptedResponse === "string" + ? encryptedResponse + : encryptedResponse?.data64 || encryptedResponse?.encryptedData; + if (encryptedData) { + return { + name: myName, + service: targetService, + identifier: file.identifier, + data64: encryptedData, + externalEncrypt: true, + }; + } + } catch (error) { + console.error( + "[DELETE] ENCRYPT_DATA_WITH_SHARING_KEY failed for", + file.service, + file.identifier, + error + ); + } + + try { + const encryptParams = { + action: "ENCRYPT_DATA", + data64: tombstonePayload, + }; + if (accountPublicKey) { + encryptParams.publicKey = accountPublicKey; + } + const encryptedResponse = await requestQortal(encryptParams); + const encryptedData = + typeof encryptedResponse === "string" + ? encryptedResponse + : encryptedResponse?.data64 || encryptedResponse?.encryptedData; + if (encryptedData) { + return { + name: myName, + service: targetService, + identifier: file.identifier, + data64: encryptedData, + externalEncrypt: true, + }; + } + } catch (error) { + console.error( + "[DELETE] ENCRYPT_DATA failed for", + file.service, + file.identifier, + error + ); + } + + throw new Error("encryption failed"); + } + + return { + name: myName, + service: file.service, + identifier: file.identifier, + data64: tombstonePayload, + }; + }; const promise = (async () => { skipNextQdnPublishPromptRef.current = true; removeSelectedFromManager(); const failures = []; + const deletionResources = []; for (const file of filesToDelete) { if (!file?.identifier || !file?.service) continue; - if (isPrivateFile(file) || isPrivateService(file.service)) { - // Private service type or encrypted file - need to publish encrypted data. - const tombstonePayload = btoa("d"); - const sharingKey = file?.sharingKey || file?.key; - const targetService = getPrivateServiceName(file) || file.service; - - // Try 1: ENCRYPT_DATA_WITH_SHARING_KEY uses the stored sharing key from private index entry - // The Qortal Wallet looks up the sharing key internally using the resource's identifier - // Note: ENCRYPT_DATA_WITH_SHARING_KEY uses `base64` param (not data64), and returns a raw base64 string - try { - console.log( - "[DELETE] Try ENCRYPT_DATA_WITH_SHARING_KEY for", - file.service, - file.identifier - ); - const encryptedResponse = await requestQortal({ - action: "ENCRYPT_DATA_WITH_SHARING_KEY", - base64: tombstonePayload, - }); - console.log( - "[DELETE] ENCRYPT_DATA_WITH_SHARING_KEY response type:", - typeof encryptedResponse, - typeof encryptedResponse === "string" - ? "raw string (length " + (encryptedResponse?.length || 0) + ")" - : JSON.stringify(encryptedResponse) - ); - // The response is a raw base64 string - const encryptedData = - typeof encryptedResponse === "string" - ? encryptedResponse - : encryptedResponse?.data64 || encryptedResponse?.encryptedData; - if (encryptedData) { - console.log( - "[DELETE] Publishing to", - targetService, - file.identifier, - "with encryptedData length", - encryptedData.length - ); - const publishResult = await requestQortal({ - action: "PUBLISH_QDN_RESOURCE", - name: myName, - service: targetService, - identifier: file.identifier, - data64: encryptedData, - externalEncrypt: true, - }); - console.log( - "[DELETE] PUBLISH_QDN_RESOURCE response:", - publishResult - ); - if (publishResult?.identifier) continue; - } - } catch (error) { - console.error( - "[DELETE] ENCRYPT_DATA_WITH_SHARING_KEY failed for", - file.service, - file.identifier, - error - ); - } - - // Try 2: ENCRYPT_DATA uses account public key for standard private encryption - // ENCRYPT_DATA uses `data64` param and returns a raw base64 string - try { - console.log( - "[DELETE] Try ENCRYPT_DATA for", - file.service, - file.identifier, - "publicKey:", - accountPublicKey ? "set" : "MISSING" - ); - const encryptParams = { - action: "ENCRYPT_DATA", - data64: tombstonePayload, - }; - if (accountPublicKey) { - encryptParams.publicKey = accountPublicKey; - } - const encryptedResponse = await requestQortal(encryptParams); - console.log( - "[DELETE] ENCRYPT_DATA response type:", - typeof encryptedResponse, - typeof encryptedResponse === "string" - ? "raw string (length " + (encryptedResponse?.length || 0) + ")" - : JSON.stringify(encryptedResponse) - ); - // The response is a raw base64 string - const encryptedData = - typeof encryptedResponse === "string" - ? encryptedResponse - : encryptedResponse?.data64 || encryptedResponse?.encryptedData; - if (encryptedData) { - console.log( - "[DELETE] Publishing to", - targetService, - file.identifier, - "with encryptedData length", - encryptedData.length - ); - const publishResult = await requestQortal({ - action: "PUBLISH_QDN_RESOURCE", - name: myName, - service: targetService, - identifier: file.identifier, - data64: encryptedData, - externalEncrypt: true, - }); - console.log( - "[DELETE] PUBLISH_QDN_RESOURCE response:", - publishResult - ); - if (publishResult?.identifier) continue; - } - } catch (error) { - console.error( - "[DELETE] ENCRYPT_DATA failed for", - file.service, - file.identifier, - error - ); - } - + try { + const publishResource = await buildDeletePublishResource(file); + deletionResources.push(publishResource); + } catch (error) { + console.error("[DELETE] Failed to build tombstone resource:", error); failures.push( - `${file.service}/${file.identifier} (encryption failed)` + `${file.service}/${file.identifier} (${ + error?.message || "encryption failed" + })` ); - } else if (isGroupResource(file)) { - // Group resource - encrypt with group - try { - const tombstonePayload = btoa("d"); - const encryptedData = await requestQortal({ - action: "ENCRYPT_QORTAL_GROUP_DATA", - data64: tombstonePayload, - groupId: file.group || file.groupId, - }); - if (encryptedData) { - const publishResult = await requestQortal({ - action: "PUBLISH_QDN_RESOURCE", - service: file.service, - identifier: file.identifier, - data64: encryptedData, - }); - if (publishResult?.identifier) continue; - } - } catch (error) { - console.error("Delete: group encryption publish failed:", error); - } + } + } - failures.push( - `${file.service}/${file.identifier} (group encryption failed)` - ); - } else { - // Public service - raw data is fine - try { - const publishResult = await requestQortal({ - action: "PUBLISH_QDN_RESOURCE", - service: file.service, - identifier: file.identifier, - data64: btoa("d"), - }); - if (publishResult?.identifier) continue; - } catch (error) { - console.error("Delete: public publish failed:", error); - } + if (deletionResources.length === 0) { + throw new Error( + failures.length > 0 + ? `Failed to prepare tombstones for: ${failures.join(", ")}` + : "No deletable files were selected" + ); + } - failures.push( - `${file.service}/${file.identifier} (public publish failed)` + if (deletionResources.length === 1) { + const publishResult = await requestQortal({ + action: "PUBLISH_QDN_RESOURCE", + ...deletionResources[0], + }); + if (!publishResult?.identifier) { + throw new Error("Failed to publish tombstone"); + } + } else { + const publishResult = await requestQortal({ + action: "PUBLISH_MULTIPLE_QDN_RESOURCES", + name: myName, + resources: deletionResources, + }); + if (!publishResult || publishResult?.error) { + throw new Error( + publishResult?.error || "Failed to publish tombstones" ); } } @@ -4405,17 +4599,58 @@ export const Manager = ({ size="small" labelId="label-manager-groups" id="id-manager-groups" - value={selectedGroup} + value={selectedGroup || ""} displayEmpty + renderValue={(value) => { + const normalizedValue = normalizeGroupId(value); + const selectedOption = groupOptions.find( + (groupOption) => + Number(groupOption.normalizedGroupId) === Number(normalizedValue) + ); + + if (!selectedOption) { + return ( + + Select group + + ); + } + + return ( + + + {selectedOption.groupName} + + + {selectedOption.fileCount} + + + ); + }} onChange={(e) => { clearSelection(); - if (!selectedGroup && groups?.length > 0 && !e.target.value) { + const nextGroupId = normalizeGroupId(e.target.value); + if (!nextGroupId) { setCurrentPath(["Root"]); - setSelectedGroup(groups[0]?.groupId); + setSelectedGroup( + preferredGroupId || groupOptions[0]?.normalizedGroupId || null + ); return; } setCurrentPath(["Root"]); - setSelectedGroup(e.target.value); + setSelectedGroup(nextGroupId); }} sx={{ width: "300px", @@ -4428,11 +4663,41 @@ export const Manager = ({ }, }, }} - > - {groups?.map((group) => { + > + {groupOptions?.map((group) => { return ( - - {group?.groupName} + + + + {group?.groupName || `Group ${group.normalizedGroupId}`} + + + {group.fileCount} + + ); })} @@ -5155,7 +5420,7 @@ export const Manager = ({ Choose target folder - {renderFolderTreeForBulkMove(fileSystem)} + {renderFolderTreeForBulkMove(getBulkMoveRootDirectories())}