migrate: remove .files, .folders, use .children instead

This commit is contained in:
Bao Nguyen
2023-02-14 14:02:32 +07:00
parent 82db036bfb
commit 87d33e2f9d
15 changed files with 106 additions and 107 deletions

View File

@@ -4,7 +4,7 @@
export let style;
export let classes;
$: icon = $hardDrive[recycle_bin_id]?.files.length > 0 || $hardDrive[recycle_bin_id]?.folders.length > 0 ?
$: icon = $hardDrive[recycle_bin_id]?.children.length > 0 || $hardDrive[recycle_bin_id]?.children.length > 0 ?
'url(/images/xp/icons/RecycleBinfull.png)' : 'url(/images/xp/icons/RecycleBinempty.png)';
function on_dbclick(){

View File

@@ -20,10 +20,11 @@
$: url = finder.to_url(history[page_index]) || 'My Computer';
export let id;
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
$: items = [...files, ...folders]
$: items = $hardDrive[id] == null ?
[] :
$hardDrive[id]
.children
.map(id => $hardDrive[id])
.filter(el => el != null)
.filter(el => !hidden_items.includes(el.id));

View File

@@ -21,11 +21,11 @@
let page_index = 0;
$: url = finder.to_url(history[page_index]) || 'My Computer';
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
$: items = [...files, ...folders]
$: items = $hardDrive[id] == null ?
[] :
$hardDrive[id]
.children
.map(id => $hardDrive[id])
.filter(el => el != null)
.filter(el => !hidden_items.includes(el.id));

View File

@@ -29,9 +29,8 @@ export let make = ({type, originator}) => {
name: 'Empty Recycle Bin',
action: () => {
let yes_action = () => {
let files = get(hardDrive)[recycle_bin_id].files;
let folders = get(hardDrive)[recycle_bin_id].folders;
for(let id of [...files, ...folders]){
let children = get(hardDrive)[recycle_bin_id].children;
for(let id of [...children]){
fs.del_fs(id);
}
}

View File

@@ -45,8 +45,7 @@ export function to_id_nocase(url){
console.log(i);
console.log(path_components[i]);
current_location = [
...current_location.files.map(id => get(hardDrive)[id]),
...current_location.folders.map(id => get(hardDrive)[id])
...current_location.children.map(id => get(hardDrive)[id])
]
.find(item => item?.name?.toLowerCase() == path_components[i].toLowerCase());
console.log(current_location);
@@ -76,8 +75,7 @@ export function to_id(url){
console.log(i);
console.log(path_components[i]);
current_location = [
...current_location.files.map(id => get(hardDrive)[id]),
...current_location.folders.map(id => get(hardDrive)[id])
...current_location.children.map(id => get(hardDrive)[id])
]
.find(item => item?.name == path_components[i]);
console.log(current_location);

View File

@@ -54,15 +54,13 @@ export function del_fs(id){
let obj = get(hardDrive)[id];
let child_ids = [
...obj.files,
...obj.folders
...obj.children
]
if(get(hardDrive)[obj.parent] != null){
console.log('delete from parent', obj.parent)
hardDrive.update(data => {
data[obj.parent].files = data[obj.parent].files.filter(el => el != obj.id);
data[obj.parent].folders = data[obj.parent].folders.filter(el => el != obj.id);
data[obj.parent].children = data[obj.parent].children.filter(el => el != obj.id);
return data;
})
}
@@ -89,8 +87,7 @@ export function clone_fs(obj_current_id, parent_id, new_id=null){
obj.parent = parent_id;
let parent_items_names = [
...get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el].name),
...get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el].name),
...get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el].name),
]
let appendix = 2;
let basename = obj.basename;
@@ -101,12 +98,10 @@ export function clone_fs(obj_current_id, parent_id, new_id=null){
obj.basename = basename;
obj.name = basename + obj.ext;
//backup files & folders
//backup children
console.log(obj)
let files = [...obj.files];
let folders = [...obj.folders];
obj.files = [];
obj.folders = [];
let children = [...obj.children];
obj.children = [];
//save to hard drive
hardDrive.update(data => {
@@ -115,21 +110,13 @@ export function clone_fs(obj_current_id, parent_id, new_id=null){
})
console.log('cloning', obj.id)
if(obj.type == 'file'){
hardDrive.update(data => {
data[parent_id].files.push(obj.id);
return data;
})
} else if(obj.type == 'folder'){
hardDrive.update(data => {
data[parent_id].folders.push(obj.id);
return data;
})
}
hardDrive.update(data => {
data[parent_id].children.push(obj.id);
return data;
})
//recursively clone child items
for(let child of [...files, ...folders]){
for(let child of [...children]){
clone_fs(child, obj.id);
}
}
@@ -151,17 +138,14 @@ export async function new_fs_item(type, ext, seedname, parent_id, file=null){
"level": 0,
"parent": parent_id,
"size": 1,
"files": [],
"folders": [],
"children": [],
"basename": ""
}
let files = get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el]);
let folders = get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el]);
let children = get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el]);
let parent_items_names = [
...files.map(el => el.name),
...folders.map(el => el.name)
...children.map(el => el.name)
]
let appendix = 2;
@@ -193,17 +177,10 @@ export async function new_fs_item(type, ext, seedname, parent_id, file=null){
data[item.id] = item;
return data;
})
if(type == 'file'){
hardDrive.update(data => {
data[parent_id].files.push(item.id);
return data;
})
} else if (type == 'folder'){
hardDrive.update(data => {
data[parent_id].folders.push(item.id);
return data;
})
}
hardDrive.update(data => {
data[parent_id].children.push(item.id);
return data;
})
return item.id;
}
@@ -227,19 +204,14 @@ export async function new_fs_item_raw(item, parent_id){
if(item.icon == null){
item.icon = '/images/xp/icons/ApplicationWindow.png'
}
if(item.files == null){
item.files = [];
}
if(item.folders == null){
item.folders = [];
if(item.children == null){
item.children = [];
}
let files = get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el]);
let folders = get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el]);
let children = get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el]);
let parent_items_names = [
...files.map(el => el.name),
...folders.map(el => el.name)
...children.map(el => el.name)
]
let appendix = 2;
@@ -266,17 +238,10 @@ export async function new_fs_item_raw(item, parent_id){
data[item.id] = item;
return data;
})
if(item.type == 'file'){
hardDrive.update(data => {
data[parent_id].files.push(item.id);
return data;
})
} else if (item.type == 'folder'){
hardDrive.update(data => {
data[parent_id].folders.push(item.id);
return data;
})
}
hardDrive.update(data => {
data[parent_id].children.push(item.id);
return data;
})
return item.id;
}
@@ -323,14 +288,12 @@ export async function save_file_as(basename, ext, file, parent_id, new_id=null){
"level": 0,
"parent": parent_id,
"size": Math.round(file.size/1024),
"files": [],
"folders": [],
"children": [],
"basename": basename
}
let parent_items_names = [
...get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el].name),
...get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el].name),
...get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el].name)
]
let appendix = 2;
basename = obj.basename;
@@ -344,7 +307,7 @@ export async function save_file_as(basename, ext, file, parent_id, new_id=null){
hardDrive.update(data => {
data[obj.id] = obj;
data[parent_id].files.push(obj.id);
data[parent_id].children.push(obj.id);
return data;
})
}

View File

@@ -15,10 +15,14 @@
let id = desktop_folder;
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
$: items = [...files, ...folders].filter(el => el != null);
$: items = $hardDrive[id] == null ?
[] :
$hardDrive[id]
.children
.map(id => $hardDrive[id])
.filter(el => el != null);
let is_focus = true;
let node_ref;
let cell_size = 80;
@@ -152,8 +156,7 @@
}
let parent_items_names = [
...$hardDrive[item.parent].files.filter(el => el != item.id).map(el => $hardDrive[el].name),
...$hardDrive[item.parent].folders.filter(el => el != item.id).map(el => $hardDrive[el].name),
...$hardDrive[item.parent].children.filter(el => el != item.id).map(el => $hardDrive[el].name),
]
let appendix = 2;
while(parent_items_names.includes(basename + item.ext)){

View File

@@ -7,7 +7,7 @@
import { runningPrograms, hardDrive } from '../../../lib/store';
import {icons} from '../../../lib/system';
import * as utils from '../../../lib/utils';
import _, { isEqual } from 'lodash';
import _, { isEqual, map } from 'lodash';
import * as finder from '../../../lib/finder';
export let id;
@@ -56,8 +56,18 @@
};
function size_cal(id){
let total_size = _.sum($hardDrive[id].files.map(el => $hardDrive[el].size));
let folders = $hardDrive[id].folders;
let total_size = _.sum(
$hardDrive[id]
.children
.map(el => $hardDrive[el])
.filter(el => el.type == 'file')
.map(el => el.size)
);
let folders = $hardDrive[id]
.children
.filter(el => $hardDrive[el].type == 'folder');
for(let folder of folders){
total_size += size_cal(folder);
}

View File

@@ -14,7 +14,9 @@
export let exec_path;
let preview = $wallpaper;
let wallpapers = $hardDrive[wallpapers_folder].files;
let wallpapers = $hardDrive[wallpapers_folder]
.children
.filter(el => $hardDrive[el].type == 'file');
onMount(() => {
})

View File

@@ -101,7 +101,7 @@
function next_image(curr_item){
console.log($hardDrive[curr_item.parent])
let siblings = $hardDrive[curr_item.parent]
.files
.children
.filter(id => supported_exts.includes($hardDrive[id].ext));
let curr_index = siblings.indexOf(curr_item.id);
@@ -114,7 +114,7 @@
function previous_image(curr_item){
let siblings = $hardDrive[curr_item.parent]
.files
.children
.filter(id => supported_exts.includes($hardDrive[id].ext));
let curr_index = siblings.indexOf(curr_item.id);

View File

@@ -206,12 +206,12 @@
async function find_subtitle(item){
try {
let vtt = $hardDrive[item.parent]
.files
.children
.map(id => $hardDrive[id])
.find(el => el.basename == item.basename && el.ext == '.vtt');
let srt = $hardDrive[item.parent]
.files
.children
.map(id => $hardDrive[id])
.find(el => el.basename == item.basename && el.ext == '.srt');

View File

@@ -18,10 +18,12 @@
export let self;
export let my_computer_instance;
export let id = null;
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
$: items = [...files, ...folders]
$: items = $hardDrive[id] == null ?
[] :
$hardDrive[id]
.children
.map(id => $hardDrive[id])
.filter(el => el != null)
.filter(el => !hidden_items.includes(el.id));
@@ -155,8 +157,7 @@
}
let parent_items_names = [
...$hardDrive[item.parent].files.filter(el => el != item.id).map(el => $hardDrive[el].name),
...$hardDrive[item.parent].folders.filter(el => el != item.id).map(el => $hardDrive[el].name),
...$hardDrive[item.parent].children.filter(el => el != item.id).map(el => $hardDrive[el].name),
]
let appendix = 2;
while(parent_items_names.includes(basename + item.ext)){

View File

@@ -34,7 +34,7 @@
...fs_item?.type == 'file' ? [] :
[
['Contains', `${fs_item.files.length} Files, ${fs_item.folders.length} Folders`]
['Contains', `${fs_item.children.filter(el => $hardDrive[el].type == 'file').length} Files, ${fs_item.children.filter(el => $hardDrive[el].type == 'folder').length} Folders`]
]
]
@@ -64,8 +64,18 @@
};
function size_cal(id){
let total_size = _.sum($hardDrive[id].files.map(el => $hardDrive[el].size));
let folders = $hardDrive[id].folders;
console.log(id);
let total_size = _.sum(
$hardDrive[id]
.children
.map(el => $hardDrive[el])
.filter(el => el.type == 'file')
.map(el => el.size)
);
let folders = $hardDrive[id]
.children
.filter(el => $hardDrive[el].type == 'folder');
for(let folder of folders){
total_size += size_cal(folder);
}

View File

@@ -61,7 +61,7 @@
if(cancelled) return;
if(item.type == 'folder'){
let folder = parent.folder(item.name);
for(let child_item of [...item.folders, ...item.files]){
for(let child_item of [...item.children]){
child_item = $hardDrive[child_item];
await add_to_archive(folder, child_item);
}

View File

@@ -53,7 +53,6 @@
async function load_hard_drive(){
let hard_drive = await get('hard_drive');
console.log(hard_drive);
if(hard_drive == null){
hard_drive = (await axios({
method: 'get',
@@ -61,9 +60,22 @@
})).data;
await set('hard_drive', hard_drive);
}
migrate_files_format(hard_drive);
console.log(hard_drive);
hardDrive.set(hard_drive);
}
function migrate_files_format(drive){
for(let key of Object.keys(drive)){
let obj = drive[key];
if(obj.children == null){
obj.children = [...obj.files, ...obj.folders];
delete obj.files;
delete obj.folders;
}
}
}
async function load_wallpaper(){
$wallpaper = await get('wallpaper');
if($wallpaper == null){