From c74ce7799a892276f998e627cc361bede2f2964e Mon Sep 17 00:00:00 2001 From: Romaric Mourgues Date: Thu, 20 Apr 2023 14:51:44 +0200 Subject: [PATCH] Remove 3 more --- .../app/components/uploads/upload-manager.js | 58 ----- .../app/components/uploads/upload-viewer.jsx | 162 -------------- .../app/components/uploads/upload-zone.tsx | 12 +- .../uploadManager/upload-manager.js | 211 ------------------ 4 files changed, 1 insertion(+), 442 deletions(-) delete mode 100755 tdrive/frontend/src/app/components/uploads/upload-manager.js delete mode 100755 tdrive/frontend/src/app/components/uploads/upload-viewer.jsx delete mode 100755 tdrive/frontend/src/app/deprecated/uploadManager/upload-manager.js diff --git a/tdrive/frontend/src/app/components/uploads/upload-manager.js b/tdrive/frontend/src/app/components/uploads/upload-manager.js deleted file mode 100755 index 9003ca49..00000000 --- a/tdrive/frontend/src/app/components/uploads/upload-manager.js +++ /dev/null @@ -1,58 +0,0 @@ -import Observable from '@deprecated/CollectionsV1/observable.js'; - -class UploadManager extends Observable { - constructor() { - super(); - this.setObservableName('upload_manager'); - this.reinit(); - - window.uploadManager = this; - } - - reinit() { - if (this.reinitTimeout) clearTimeout(this.reinitTimeout); - if (this.reinitTimeoutBefore) clearTimeout(this.reinitTimeoutBefore); - this.currentUploadTotalSize = 0; - this.currentUploadTotalNumber = 0; - this.currentUploadedTotalSize = 0; - this.currentUploadedFilesNumber = 0; - this.currentUploadingFilesNumber = 0; - this.currentCancelledFilesNumber = 0; - this.currentWaitingFilesNumber = 0; - this.currentErrorFilesNumber = 0; - this.currentUploadFiles = []; - this.currentUploadStartTime = new Date(); - this.will_close = false; - this.notify(); - } - - abort(elements) { - var that = this; - - if (elements.length === undefined) { - elements = [elements]; - } - - elements.forEach(element => { - if (element.resumable) element.resumable.cancel(); - element.xhr_cancelled = true; - element.cancelled = true; - that.currentCancelledFilesNumber++; - that.currentUploadingFilesNumber--; - - if ( - that.currentUploadedFilesNumber + - that.currentCancelledFilesNumber + - that.currentErrorFilesNumber >= - that.currentUploadTotalNumber - ) { - that.reinitAfterDelay(); - } - }); - - that.notify(); - } -} - -const service = new UploadManager(); -export default service; diff --git a/tdrive/frontend/src/app/components/uploads/upload-viewer.jsx b/tdrive/frontend/src/app/components/uploads/upload-viewer.jsx deleted file mode 100755 index 7eeb86a3..00000000 --- a/tdrive/frontend/src/app/components/uploads/upload-viewer.jsx +++ /dev/null @@ -1,162 +0,0 @@ -import React from 'react'; - -import UploadManager from './upload-manager.js'; -import CloseIcon from '@material-ui/icons/CloseOutlined'; -import './uploads.scss'; -import moment from 'moment'; -import Languages from '@features/global/services/languages-service'; - -export default class UploadViewer extends React.Component { - constructor(props) { - super(); - this.state = { - upload_manager: UploadManager, - }; - UploadManager.addListener(this); - } - componentWillUnmount() { - UploadManager.removeListener(this); - } - render() { - if (this.state.upload_manager.currentUploadTotalNumber <= 0) { - // eslint-disable-next-line react/no-direct-mutation-state - this.state.large = true; - return ''; - } - - var documents = this.state.upload_manager.currentUploadFiles.filter(d => !d.path.substr(1)); - var folders = {}; - var folders_content = {}; - this.state.upload_manager.currentUploadFiles - .filter(d => d.path.substr(1)) - .forEach(d => { - var folder = d.path.substr(1).split('/')[0]; - if (!folders[folder]) { - folders[folder] = { - total: 0, - total_progress: 0, - total_uploaded: 0, - error: true, - cancelled: true, - }; - folders_content[folder] = []; - } - - if (!d.cancelled) { - folders[folder].cancelled = false; - } - - if (!d.error) { - folders[folder].error = false; - } - - if (!d.error && !d.cancelled) { - folders[folder].total++; - folders[folder].total_progress += d.progress; - if (d.progress === 1) { - folders[folder].total_uploaded += 1; - } - - folders_content[folder].push(d); - } - }); - Object.keys(folders).forEach(name => { - documents.push({ - progress: folders[name].total_progress / folders[name].total, - name: name, - cancelled: folders[name].cancelled, - error: folders[name].error, - folder_total: folders[name].total, - folder_total_uploaded: folders[name].total_uploaded, - all_files: folders_content[name], - }); - }); - - var total_finished = - this.state.upload_manager.currentUploadedFilesNumber + - this.state.upload_manager.currentCancelledFilesNumber + - this.state.upload_manager.currentErrorFilesNumber; - var todo = this.state.upload_manager.currentUploadTotalNumber; - - var total_finished_size = this.state.upload_manager.currentUploadFiles - .map(a => { - if (a.error || a.cancelled) { - return (a.file || {}).size || 0; - } - if (a.progress > 0) { - return ((a.file || {}).size || 0) * a.progress; - } - return 0; - }) - .reduce((a, b) => { - return a + b; - }); - var todo_size = this.state.upload_manager.currentUploadFiles - .map(a => { - return (a.file || {}).size || 0; - }) - .reduce((a, b) => { - return a + b; - }); - - var remaining_time = 0; - if (total_finished_size > 0) { - remaining_time = - ((todo_size - total_finished_size) / 1000000) * - ((new Date().getTime() - this.state.upload_manager.currentUploadStartTime) / - (total_finished_size / 1000000)); - } - - return ( -
-
this.setState({ large: !this.state.large })}> - {Languages.t('general.uploading')} {total_finished}/{todo} -
- {remaining_time > 0 && ( -
- Will end {moment(new Date().getTime() + remaining_time).fromNow()} -
- )} -
- {documents - .sort((a, b) => (a.progress === 1) - (b.progress === 1)) - .map(item => { - return ( -
-
-
- {item.name} {item.folder_total !== undefined && '(Folder)'} -
- {item.path && item.path.substr(1) && ( -
{item.path.substr(1)}
- )} - {item.folder_total !== undefined && ( -
- {item.folder_total_uploaded}/{item.folder_total} -
- )} -
{parseInt((item.progress || 0) * 100)}%
-
- ); - })} -
-
- ); - } -} diff --git a/tdrive/frontend/src/app/components/uploads/upload-zone.tsx b/tdrive/frontend/src/app/components/uploads/upload-zone.tsx index 8558f1bd..3999981b 100755 --- a/tdrive/frontend/src/app/components/uploads/upload-zone.tsx +++ b/tdrive/frontend/src/app/components/uploads/upload-zone.tsx @@ -2,7 +2,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import React from 'react'; -import UploadManager from './upload-manager'; import Languages from '@features/global/services/languages-service'; import { Upload } from 'react-feather'; import classNames from 'classnames'; @@ -18,8 +17,6 @@ type StateType = { [key: string]: any }; type FileInputType = any; -type FileObjectType = { [key: string]: any }; - let sharedFileInput: any = null; let sharedFolderInput: any = null; @@ -30,14 +27,7 @@ export default class UploadZone extends React.Component { constructor(props: PropsType) { super(props); - this.state = { - upload_manager: UploadManager, - }; - UploadManager.addListener(this); - } - - componentWillUnmount() { - UploadManager.removeListener(this); + this.state = {}; } componentDidMount() { diff --git a/tdrive/frontend/src/app/deprecated/uploadManager/upload-manager.js b/tdrive/frontend/src/app/deprecated/uploadManager/upload-manager.js deleted file mode 100755 index aef7c10a..00000000 --- a/tdrive/frontend/src/app/deprecated/uploadManager/upload-manager.js +++ /dev/null @@ -1,211 +0,0 @@ -import Observable from '@deprecated/CollectionsV1/observable.js'; - -import Globals from '@features/global/services/globals-tdrive-app-service'; - -class UploadManager extends Observable { - constructor() { - super(); - this.observableName = 'uploadService'; - - this.globalStatus = 0; - this.uploads = []; - this.sessionUploaded = 0; - this.uploaded_entities = []; - this.uploading = 0; - - Globals.window.uploads = this; - } - - updateData() { - var totalSize = 0; - var totalUp = 0; - for (var i = 0; i < this.uploads.length; i++) { - totalSize += this.uploads[i].size; - totalUp += this.uploads[i].uploaded; - this.uploads[i].status = (100 * this.uploads[i].uploaded) / (this.uploads[i].size + 1); - } - - if (this.sessionUploaded + this.uploads.length === 0) { - this.globalStatus = 0; - } else if (totalSize === 0) { - this.globalStatus = - (100 * this.sessionUploaded) / (this.sessionUploaded + this.uploads.length); - } else { - this.globalStatus = - (100 * (totalUp / totalSize + this.sessionUploaded)) / - (this.sessionUploaded + this.uploads.length); - } - - if (this.uploads.length === 0) { - this.globalStatus = 0; - this.sessionUploaded = 0; - - if (this.callback) { - var uploaded = []; - // eslint-disable-next-line no-redeclare - for (var i = 0; i < this.uploaded_entities.length; i++) { - uploaded.push(this.uploaded_entities[i]); - } - - this.callback(uploaded); - this.uploaded_entities = []; - } - } - - this.notify(); - } - - getFilesTree(event, fcb) { - function newDirectoryApi(input, cb) { - var fd = [], - files = []; - var iterate = function (entries, path, resolve) { - var promises = []; - entries.forEach(function (entry) { - promises.push( - new Promise(function (resolve) { - if ('getFilesAndDirectories' in entry) { - entry.getFilesAndDirectories().then(function (entries) { - iterate(entries, entry.path + '/', resolve); - }); - } else { - if (entry.name) { - var p = (path + entry.name).replace(/^[/\\]/, ''); - fd.push(entry); - files.push(p); - } - resolve(); - } - }), - ); - }); - Promise.all(promises).then(resolve); - }; - input.getFilesAndDirectories().then(function (entries) { - new Promise(function (resolve) { - iterate(entries, '/', resolve); - }).then(cb.bind(null, fd, files)); - }); - } - - // old prefixed API implemented in Chrome 11+ as well as array fallback - function arrayApi(input, cb) { - var fd = [], - files = []; - [].slice.call(input.files).forEach(function (file) { - fd.push(file); - files.push(file.webkitRelativePath || file.name); - }); - cb(fd, files); - } - - // old drag and drop API implemented in Chrome 11+ - function entriesApi(items, cb) { - var fd = [], - files = [], - rootPromises = []; - - function readEntries(entry, reader, oldEntries, cb) { - var dirReader = reader || entry.createReader(); - dirReader.readEntries(function (entries) { - var newEntries = oldEntries ? oldEntries.concat(entries) : entries; - if (entries.length) { - setTimeout(readEntries.bind(null, entry, dirReader, newEntries, cb), 0); - } else { - cb(newEntries); - } - }); - } - - function readDirectory(entry, path, resolve) { - if (!path) path = entry.name; - readEntries(entry, 0, 0, function (entries) { - var promises = []; - entries.forEach(function (entry) { - promises.push( - new Promise(function (resolve) { - if (entry.isFile) { - entry.file(function (file) { - var p = path + '/' + file.name; - fd.push(file); - files.push(p); - resolve(); - }, resolve.bind()); - } else readDirectory(entry, path + '/' + entry.name, resolve); - }), - ); - }); - Promise.all(promises).then(resolve.bind()); - }); - } - - [].slice.call(items).forEach(function (entry) { - entry = entry.webkitGetAsEntry(); - if (entry) { - rootPromises.push( - new Promise(function (resolve) { - if (entry.isFile) { - entry.file(function (file) { - fd.push(file); - files.push(file.name); - resolve(); - }, resolve.bind()); - } else if (entry.isDirectory) { - readDirectory(entry, null, resolve); - } - }), - ); - } - }); - Promise.all(rootPromises).then(cb.bind(null, fd, files)); - } - - var cb = function (event, files, paths) { - var tree = {}; - paths.forEach(function (path, file_index) { - var dirs = tree; - var real_file = files[file_index]; - path.split('/').forEach(function (dir, dir_index) { - if (dir.indexOf('.') === 0) { - return; - } - if (dir_index === path.split('/').length - 1) { - dirs[dir] = real_file; - } else { - if (!dirs[dir]) { - dirs[dir] = {}; - } - dirs = dirs[dir]; - } - }); - }); - - fcb(tree); - }; - - if (event.dataTransfer) { - var dt = event.dataTransfer; - if (dt.items && dt.items.length && 'webkitGetAsEntry' in dt.items[0]) { - entriesApi(dt.items, cb.bind(null, event)); - } else if ('getFilesAndDirectories' in dt) { - newDirectoryApi(dt, cb.bind(null, event)); - } else if (dt.files) { - arrayApi(dt, cb.bind(null, event)); - } else cb(); - } else if (event.target) { - var t = event.target; - if (t.files && t.files.length) { - arrayApi(t, cb.bind(null, event)); - } else if ('getFilesAndDirectories' in t) { - newDirectoryApi(t, cb.bind(null, event)); - } else { - cb(event); - } - } else { - fcb(event); - } - } -} - -const upload = new UploadManager(); -export default upload;