optimising by storing desktop item positions as a map in kv store

This commit is contained in:
vineethvk11 2024-03-16 11:32:11 +05:30
parent fddda77523
commit dfc03be3d2
4 changed files with 15 additions and 27 deletions

View File

@ -347,7 +347,8 @@ function UIItem(options){
el_item.style.left = ui.position.left + 'px'; el_item.style.left = ui.position.left + 'px';
el_item.style.top = ui.position.top + 'px'; el_item.style.top = ui.position.top + 'px';
$('.ui-draggable-dragging').remove(); $('.ui-draggable-dragging').remove();
save_item_position($(el_item).attr('data-uid'), ui.position) desktop_item_positions[$(el_item).attr('data-uid')] = ui.position;
save_desktop_item_positions()
} }
$('.item-selected-clone').remove(); $('.item-selected-clone').remove();
$('.draggable-count-badge').remove(); $('.draggable-count-badge').remove();

View File

@ -176,3 +176,4 @@ window.feature_flags = {
} }
window.is_auto_arrange_enabled = true; window.is_auto_arrange_enabled = true;
window.desktop_item_positions = {};

View File

@ -1295,9 +1295,7 @@ window.refresh_item_container = function(el_item_container, options){
if(item_path !== trash_path && item_path !== appdata_path){ if(item_path !== trash_path && item_path !== appdata_path){
// if this is trash, get original name from item metadata // if this is trash, get original name from item metadata
fsentry.name = (metadata && metadata.original_name !== undefined) ? metadata.original_name : fsentry.name; fsentry.name = (metadata && metadata.original_name !== undefined) ? metadata.original_name : fsentry.name;
let position; const position = desktop_item_positions[fsentry.uid] ?? undefined;
if($(el_item_container).hasClass('desktop') && !is_auto_arrange_enabled)
position = await get_item_position(fsentry.uid);
UIItem({ UIItem({
appendTo: el_item_container, appendTo: el_item_container,
uid: fsentry.uid, uid: fsentry.uid,
@ -3702,18 +3700,14 @@ window.get_html_element_from_options = async function(options){
} }
window.store_auto_arrange_preference = (preference)=>{ window.store_auto_arrange_preference = (preference)=>{
puter.kv.set(`user_preferences.auto_arrange_desktop`, preference); puter.kv.set('user_preferences.auto_arrange_desktop', preference);
localStorage.setItem('auto_arrange', preference); localStorage.setItem('auto_arrange', preference);
} }
window.get_auto_arrange_preference = async()=>{ window.get_auto_arrange_data = async()=>{
const preferenceValue = await puter.kv.get(`user_preferences.auto_arrange_desktop`); const preferenceValue = await puter.kv.get('user_preferences.auto_arrange_desktop');
if (preferenceValue === null) { is_auto_arrange_enabled = preferenceValue === null ? true : preferenceValue;
console.log("E") desktop_item_positions = await puter.kv.get('desktop_item_positions');
return true;
} else {
return preferenceValue;
}
} }
window.clear_desktop_item_positions = async(el_desktop)=>{ window.clear_desktop_item_positions = async(el_desktop)=>{
@ -3727,7 +3721,7 @@ window.clear_desktop_item_positions = async(el_desktop)=>{
window.set_desktop_item_positions = async(el_desktop)=>{ window.set_desktop_item_positions = async(el_desktop)=>{
$(el_desktop).find('.item').each(async function(){ $(el_desktop).find('.item').each(async function(){
const position = await get_item_position($(this).attr('data-uid')); const position = desktop_item_positions[$(this).attr('data-uid')]
const el_item = $(this)[0]; const el_item = $(this)[0];
if(position){ if(position){
$(el_item).css('position', 'absolute'); $(el_item).css('position', 'absolute');
@ -3737,14 +3731,6 @@ window.set_desktop_item_positions = async(el_desktop)=>{
}); });
} }
window.save_item_position = (itemId, position)=>{ window.save_desktop_item_positions = ()=>{
puter.kv.set(`desktop_item_position_${itemId}`, position); puter.kv.set('desktop_item_positions', desktop_item_positions);
}
window.get_item_position = (itemId)=>{
return puter.kv.get(`desktop_item_position_${itemId}`);
}
window.delete_item_position = (itemId)=>{
return puter.kv.del(`desktop_item_position_${itemId}`);
} }

View File

@ -318,7 +318,7 @@ window.initgui = async function(){
// Load desktop, only if we're not embedded in a popup // Load desktop, only if we're not embedded in a popup
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
if(!window.embedded_in_popup){ if(!window.embedded_in_popup){
window.is_auto_arrange_enabled = await get_auto_arrange_preference(); await get_auto_arrange_data()
puter.fs.stat(desktop_path, async function(desktop_fsentry){ puter.fs.stat(desktop_path, async function(desktop_fsentry){
UIDesktop({desktop_fsentry: desktop_fsentry}); UIDesktop({desktop_fsentry: desktop_fsentry});
}) })
@ -670,7 +670,7 @@ window.initgui = async function(){
// Load desktop, if not embedded in a popup // Load desktop, if not embedded in a popup
// ------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------
if(!window.embedded_in_popup){ if(!window.embedded_in_popup){
window.is_auto_arrange_enabled = await get_auto_arrange_preference(); await get_auto_arrange_data();
puter.fs.stat(desktop_path, function (desktop_fsentry) { puter.fs.stat(desktop_path, function (desktop_fsentry) {
UIDesktop({ desktop_fsentry: desktop_fsentry }); UIDesktop({ desktop_fsentry: desktop_fsentry });
}) })