fix: sidebar Gitea tree loading — race condition + silent errors + wrong Alpine scope
- loadGiteaTree: skip if giteaWorkspace component already loaded tree
- loadGiteaTree: check r.ok, add console.error logging, show error in UI
- loadGiteaTree: use .bind(this) for correct this in callbacks
- gitea_workspace.html: replace querySelector('[x-data]') with captured self
in loadSidebarTree, loadSubdir, Private Pages click handlers
- Prevents loadGiteaTree from overwriting loadSidebarTree results
on /gitea-workspace page
This commit is contained in:
@@ -218,8 +218,7 @@ function giteaWorkspace() {
|
||||
cb.style.cssText = 'flex-shrink:0;margin:0;display:none;';
|
||||
cb.addEventListener('click', function(ev) {
|
||||
ev.stopPropagation();
|
||||
var gw = document.querySelector('[x-data]').__x.$data;
|
||||
gw.selectItem(item.path, li, ev);
|
||||
self.selectItem(item.path, li, ev);
|
||||
});
|
||||
li.appendChild(cb);
|
||||
// Icon
|
||||
@@ -234,8 +233,7 @@ function giteaWorkspace() {
|
||||
nameSpan.addEventListener('dblclick', function(ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
var gw = document.querySelector('[x-data]').__x.$data;
|
||||
gw.startInlineRename(nameSpan, item.path, li);
|
||||
self.startInlineRename(nameSpan, item.path, li);
|
||||
});
|
||||
li.appendChild(nameSpan);
|
||||
container.appendChild(li);
|
||||
@@ -250,9 +248,8 @@ function giteaWorkspace() {
|
||||
pli.innerHTML = '<span class="page-icon">🔒</span><span class="page-name">Private Pages</span>';
|
||||
pli.addEventListener('click', function(e) {
|
||||
e.preventDefault(); e.stopPropagation();
|
||||
var gw = document.querySelector('[x-data]').__x.$data;
|
||||
gw.showPrivate = true; gw.showFile = false; gw.showEditor = false;
|
||||
gw.loadPrivatePages();
|
||||
self.showPrivate = true; self.showFile = false; self.showEditor = false;
|
||||
self.loadPrivatePages();
|
||||
});
|
||||
container.appendChild(pli);
|
||||
} catch(e) { console.error('Sidebar tree load failed:', e); }
|
||||
@@ -314,6 +311,7 @@ function giteaWorkspace() {
|
||||
},
|
||||
|
||||
async loadSubdir(path, el) {
|
||||
var self = this;
|
||||
// Check if already loaded
|
||||
var ul = el.querySelector('ul');
|
||||
if (ul) {
|
||||
@@ -343,8 +341,7 @@ function giteaWorkspace() {
|
||||
cb.style.cssText = 'flex-shrink:0;margin:0;display:none;';
|
||||
cb.addEventListener('click', function(ev) {
|
||||
ev.stopPropagation();
|
||||
var gw = document.querySelector('[x-data]').__x.$data;
|
||||
gw.selectItem(child.path, li, ev);
|
||||
self.selectItem(child.path, li, ev);
|
||||
});
|
||||
li.appendChild(cb);
|
||||
// Icon
|
||||
@@ -358,8 +355,7 @@ function giteaWorkspace() {
|
||||
nameSpan.addEventListener('dblclick', function(ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
var gw = document.querySelector('[x-data]').__x.$data;
|
||||
gw.startInlineRename(nameSpan, child.path, li);
|
||||
self.startInlineRename(nameSpan, child.path, li);
|
||||
});
|
||||
li.appendChild(nameSpan);
|
||||
ul.appendChild(li);
|
||||
|
||||
Reference in New Issue
Block a user