mirror of
https://github.com/HeyPuter/puter
synced 2024-11-15 06:15:47 +00:00
refactor: Replace UIWindowDownloadDirProg with UIWindowProgress
This commit is contained in:
parent
e525747002
commit
c2c87bf0ba
@ -1,70 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (C) 2024 Puter Technologies Inc.
|
|
||||||
*
|
|
||||||
* This file is part of Puter.
|
|
||||||
*
|
|
||||||
* Puter is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as published
|
|
||||||
* by the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import UIWindow from './UIWindow.js'
|
|
||||||
|
|
||||||
async function UIWindowDownloadDirProg(options){
|
|
||||||
options = options ?? {};
|
|
||||||
|
|
||||||
let h = '';
|
|
||||||
// Loading spinner
|
|
||||||
h +=`<svg style="height: 40px; width: 40px; padding: 10px; display: block; float: left;" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24"><title>circle anim</title><g fill="#212121" class="nc-icon-wrapper"><g class="nc-loop-circle-24-icon-f"><path d="M12 24a12 12 0 1 1 12-12 12.013 12.013 0 0 1-12 12zm0-22a10 10 0 1 0 10 10A10.011 10.011 0 0 0 12 2z" fill="#212121" opacity=".4"></path><path d="M24 12h-2A10.011 10.011 0 0 0 12 2V0a12.013 12.013 0 0 1 12 12z" data-color="color-2"></path></g><style>.nc-loop-circle-24-icon-f{--animation-duration:0.5s;transform-origin:12px 12px;animation:nc-loop-circle-anim var(--animation-duration) infinite linear}@keyframes nc-loop-circle-anim{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}</style></g></svg>`;
|
|
||||||
h += `<p style="text-align:left; padding-left:20px; padding-right:20px; overflow:hidden; width: 310px; text-overflow: ellipsis; white-space: nowrap; float:left; font-size:14px;" class="dir-dl-status">${options.defaultText ?? i18n('preparing')}</p>`;
|
|
||||||
|
|
||||||
const el_window = await UIWindow({
|
|
||||||
title: 'Download Directory Progress',
|
|
||||||
app: 'instant-login',
|
|
||||||
single_instance: true,
|
|
||||||
icon: null,
|
|
||||||
uid: null,
|
|
||||||
is_dir: false,
|
|
||||||
body_content: h,
|
|
||||||
has_head: false,
|
|
||||||
selectable_body: false,
|
|
||||||
allow_context_menu: false,
|
|
||||||
is_resizable: false,
|
|
||||||
is_droppable: false,
|
|
||||||
init_center: true,
|
|
||||||
allow_native_ctxmenu: false,
|
|
||||||
allow_user_select: false,
|
|
||||||
backdrop: false,
|
|
||||||
width: 460,
|
|
||||||
height: 'auto',
|
|
||||||
dominant: true,
|
|
||||||
show_in_taskbar: false,
|
|
||||||
draggable_body: true,
|
|
||||||
onAppend: function(this_window){
|
|
||||||
},
|
|
||||||
window_class: 'window-qr',
|
|
||||||
body_css: {
|
|
||||||
width: 'initial',
|
|
||||||
height: '100px',
|
|
||||||
'background-color': 'rgb(245 247 249)',
|
|
||||||
'backdrop-filter': 'blur(3px)',
|
|
||||||
'display': 'flex',
|
|
||||||
"flex-direction": 'row',
|
|
||||||
'justify-content': 'center',
|
|
||||||
'align-items': 'center',
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return el_window;
|
|
||||||
}
|
|
||||||
|
|
||||||
export default UIWindowDownloadDirProg
|
|
@ -27,7 +27,6 @@ import UIWindowSaveAccount from './UI/UIWindowSaveAccount.js';
|
|||||||
import update_username_in_gui from './helpers/update_username_in_gui.js';
|
import update_username_in_gui from './helpers/update_username_in_gui.js';
|
||||||
import update_title_based_on_uploads from './helpers/update_title_based_on_uploads.js';
|
import update_title_based_on_uploads from './helpers/update_title_based_on_uploads.js';
|
||||||
import content_type_to_icon from './helpers/content_type_to_icon.js';
|
import content_type_to_icon from './helpers/content_type_to_icon.js';
|
||||||
import UIWindowDownloadDirProg from './UI/UIWindowDownloadDirProg.js';
|
|
||||||
import { PROCESS_RUNNING, PortalProcess, PseudoProcess } from "./definitions.js";
|
import { PROCESS_RUNNING, PortalProcess, PseudoProcess } from "./definitions.js";
|
||||||
import UIWindowProgress from './UI/UIWindowProgress.js';
|
import UIWindowProgress from './UI/UIWindowProgress.js';
|
||||||
|
|
||||||
@ -2965,14 +2964,14 @@ window.zipItems = async function(el_items, targetDirPath, download = true) {
|
|||||||
let progwin, progwin_timeout;
|
let progwin, progwin_timeout;
|
||||||
// only show progress window if it takes longer than 500ms to download
|
// only show progress window if it takes longer than 500ms to download
|
||||||
progwin_timeout = setTimeout(async () => {
|
progwin_timeout = setTimeout(async () => {
|
||||||
progwin = await UIWindowDownloadDirProg();
|
progwin = await UIWindowProgress();
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
for (const el_item of el_items) {
|
for (const el_item of el_items) {
|
||||||
let targetPath = $(el_item).attr('data-path');
|
let targetPath = $(el_item).attr('data-path');
|
||||||
// if directory, zip the directory
|
// if directory, zip the directory
|
||||||
if($(el_item).attr('data-is_dir') === '1'){
|
if($(el_item).attr('data-is_dir') === '1'){
|
||||||
$(progwin).find('.dir-dl-status').html(`Reading <strong>${html_encode(targetPath)}</strong>`);
|
progwin?.set_status(i18n('reading_file', targetPath));
|
||||||
// Recursively read the directory
|
// Recursively read the directory
|
||||||
let children = await readDirectoryRecursive(targetPath);
|
let children = await readDirectoryRecursive(targetPath);
|
||||||
|
|
||||||
@ -2985,7 +2984,7 @@ window.zipItems = async function(el_items, targetDirPath, download = true) {
|
|||||||
relativePath = path.basename(targetPath) + '/' + child.relativePath;
|
relativePath = path.basename(targetPath) + '/' + child.relativePath;
|
||||||
|
|
||||||
// update progress window
|
// update progress window
|
||||||
$(progwin).find('.dir-dl-status').html(`Zipping <strong>${html_encode(relativePath)}</strong>`);
|
progwin?.set_status(i18n('zipping_file', relativePath));
|
||||||
|
|
||||||
// read file content
|
// read file content
|
||||||
let content = await puter.fs.read(child.path);
|
let content = await puter.fs.read(child.path);
|
||||||
@ -3034,17 +3033,18 @@ window.zipItems = async function(el_items, targetDirPath, download = true) {
|
|||||||
// close progress window
|
// close progress window
|
||||||
clearTimeout(progwin_timeout);
|
clearTimeout(progwin_timeout);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$(progwin).close();
|
progwin?.close();
|
||||||
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
||||||
})
|
})
|
||||||
.catch(function (err) {
|
.catch(function (err) {
|
||||||
// close progress window
|
// close progress window
|
||||||
clearTimeout(progwin_timeout);
|
clearTimeout(progwin_timeout);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$(progwin).close();
|
progwin?.close();
|
||||||
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
||||||
|
|
||||||
// handle errors
|
// handle errors
|
||||||
|
// TODO: Display in progress dialog
|
||||||
console.error("Error in zipping files: ", err);
|
console.error("Error in zipping files: ", err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -3087,7 +3087,7 @@ window.unzipItem = async function(itemPath) {
|
|||||||
let progwin, progwin_timeout;
|
let progwin, progwin_timeout;
|
||||||
// only show progress window if it takes longer than 500ms to download
|
// only show progress window if it takes longer than 500ms to download
|
||||||
progwin_timeout = setTimeout(async () => {
|
progwin_timeout = setTimeout(async () => {
|
||||||
progwin = await UIWindowDownloadDirProg();
|
progwin = await UIWindowProgress();
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
const zip = new JSZip();
|
const zip = new JSZip();
|
||||||
@ -3109,7 +3109,7 @@ window.unzipItem = async function(itemPath) {
|
|||||||
// close progress window
|
// close progress window
|
||||||
clearTimeout(progwin_timeout);
|
clearTimeout(progwin_timeout);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$(progwin).close();
|
progwin?.close();
|
||||||
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
||||||
|
|
||||||
}).catch(function (e) {
|
}).catch(function (e) {
|
||||||
@ -3117,7 +3117,7 @@ window.unzipItem = async function(itemPath) {
|
|||||||
// close progress window
|
// close progress window
|
||||||
clearTimeout(progwin_timeout);
|
clearTimeout(progwin_timeout);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
$(progwin).close();
|
progwin?.close();
|
||||||
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
}, Math.max(0, window.copy_progress_hide_delay - (Date.now() - start_ts)));
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -198,6 +198,7 @@ const en = {
|
|||||||
publish_as_website: 'Publish as website',
|
publish_as_website: 'Publish as website',
|
||||||
puter_description: `Puter is a privacy-first personal cloud to keep all your files, apps, and games in one
|
puter_description: `Puter is a privacy-first personal cloud to keep all your files, apps, and games in one
|
||||||
secure place, accessible from anywhere at any time.`,
|
secure place, accessible from anywhere at any time.`,
|
||||||
|
reading_file: "Reading %strong%",
|
||||||
recent: "Recent",
|
recent: "Recent",
|
||||||
recommended: "Recommended",
|
recommended: "Recommended",
|
||||||
recover_password: "Recover Password",
|
recover_password: "Recover Password",
|
||||||
@ -281,6 +282,7 @@ const en = {
|
|||||||
yes_release_it: 'Yes, Release It',
|
yes_release_it: 'Yes, Release It',
|
||||||
you_have_been_referred_to_puter_by_a_friend: "You have been referred to Puter by a friend!",
|
you_have_been_referred_to_puter_by_a_friend: "You have been referred to Puter by a friend!",
|
||||||
zip: "Zip",
|
zip: "Zip",
|
||||||
|
zipping_file: "Zipping %strong%",
|
||||||
|
|
||||||
// === 2FA Setup ===
|
// === 2FA Setup ===
|
||||||
setup2fa_1_step_heading: 'Open your authenticator app',
|
setup2fa_1_step_heading: 'Open your authenticator app',
|
||||||
|
Loading…
Reference in New Issue
Block a user