mirror of
https://github.com/HeyPuter/puter.git
synced 2025-01-23 22:40:20 +08:00
adding ability to undo copy
This commit is contained in:
parent
2413bd7816
commit
20dd9b87cf
@ -1527,6 +1527,8 @@ window.copy_clipboard_items = async function(dest_path, dest_container_element){
|
||||
progwin = await UIWindowCopyProgress({operation_id: copy_op_id});
|
||||
}, 2000);
|
||||
|
||||
const copied_item_paths = []
|
||||
|
||||
for(let i=0; i<clipboard.length; i++){
|
||||
let copy_path = clipboard[i].path;
|
||||
let item_with_same_name_already_exists = true;
|
||||
@ -1535,20 +1537,24 @@ window.copy_clipboard_items = async function(dest_path, dest_container_element){
|
||||
do{
|
||||
if(overwrite)
|
||||
item_with_same_name_already_exists = false;
|
||||
|
||||
|
||||
// cancelled?
|
||||
if(operation_cancelled[copy_op_id])
|
||||
return;
|
||||
|
||||
// perform copy
|
||||
try{
|
||||
await puter.fs.copy({
|
||||
let resp = await puter.fs.copy({
|
||||
source: copy_path,
|
||||
destination: dest_path,
|
||||
overwrite: overwrite || overwrite_all,
|
||||
// if user is copying an item to where its source is, change the name so there is no conflict
|
||||
dedupeName: dest_path === path.dirname(copy_path),
|
||||
});
|
||||
|
||||
// copy new path for undo copy
|
||||
copied_item_paths.push(resp[0].path);
|
||||
|
||||
// skips next loop iteration
|
||||
break;
|
||||
}catch(err){
|
||||
@ -1581,6 +1587,12 @@ window.copy_clipboard_items = async function(dest_path, dest_container_element){
|
||||
}
|
||||
|
||||
// done
|
||||
// Add action to actions_history for undo ability
|
||||
actions_history.push({
|
||||
operation: 'copy',
|
||||
data: copied_item_paths
|
||||
});
|
||||
|
||||
clearTimeout(progwin_timeout);
|
||||
|
||||
let copy_duration = (Date.now() - copy_progress_window_init_ts);
|
||||
@ -1614,6 +1626,8 @@ window.copy_items = function(el_items, dest_path){
|
||||
progwin = await UIWindowCopyProgress({operation_id: copy_op_id});
|
||||
}, 2000);
|
||||
|
||||
const copied_item_paths = []
|
||||
|
||||
for(let i=0; i < el_items.length; i++){
|
||||
let copy_path = $(el_items[i]).attr('data-path');
|
||||
let item_with_same_name_already_exists = true;
|
||||
@ -1627,7 +1641,7 @@ window.copy_items = function(el_items, dest_path){
|
||||
if(operation_cancelled[copy_op_id])
|
||||
return;
|
||||
try{
|
||||
await puter.fs.copy({
|
||||
let resp = await puter.fs.copy({
|
||||
source: copy_path,
|
||||
destination: dest_path,
|
||||
overwrite: overwrite || overwrite_all,
|
||||
@ -1635,6 +1649,9 @@ window.copy_items = function(el_items, dest_path){
|
||||
dedupeName: dest_path === path.dirname(copy_path),
|
||||
})
|
||||
|
||||
// copy new path for undo copy
|
||||
copied_item_paths.push(resp[0].path);
|
||||
|
||||
// skips next loop iteration
|
||||
item_with_same_name_already_exists = false;
|
||||
}catch(err){
|
||||
@ -1670,6 +1687,12 @@ window.copy_items = function(el_items, dest_path){
|
||||
}
|
||||
|
||||
// done
|
||||
// Add action to actions_history for undo ability
|
||||
actions_history.push({
|
||||
operation: 'copy',
|
||||
data: copied_item_paths
|
||||
});
|
||||
|
||||
clearTimeout(progwin_timeout);
|
||||
|
||||
let copy_duration = (Date.now() - copy_progress_window_init_ts);
|
||||
@ -3480,6 +3503,9 @@ window.undo_last_action = async()=>{
|
||||
} else if(last_action.operation === 'upload') {
|
||||
const files = last_action.data;
|
||||
undo_upload(files);
|
||||
} else if(last_action.operation === 'copy') {
|
||||
const files = last_action.data;
|
||||
undo_copy(files);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3490,7 +3516,12 @@ window.undo_create_file_or_folder = async(item)=>{
|
||||
|
||||
window.undo_upload = async(files)=>{
|
||||
for (const file of files) {
|
||||
console.log(file)
|
||||
await window.delete_item_with_path(file);
|
||||
}
|
||||
}
|
||||
|
||||
window.undo_copy = async(files)=>{
|
||||
for (const file of files) {
|
||||
await window.delete_item_with_path(file);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user