Skip to content

Commit 46ab64b

Browse files
committed
Revert: [Refactor initViewFileTreeSidebar using the new registerGlobalInitFunc]
1 parent 2456a2b commit 46ab64b

File tree

2 files changed

+29
-33
lines changed

2 files changed

+29
-33
lines changed

templates/repo/home.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<div class="{{Iif $showSidebar "repo-grid-filelist-sidebar" (Iif .RepoPreferences.ShowFileViewTreeSidebar "repo-grid-tree-sidebar" "repo-grid-filelist-only")}}">
2121
{{if .TreeNames}}
22-
<div class="repo-view-file-tree-sidebar not-mobile {{if not .RepoPreferences.ShowFileViewTreeSidebar}}tw-hidden{{end}}" data-global-init="initViewFileTreeSidebar" {{if .IsSigned}} data-is-signed {{end}}>{{template "repo/view_file_tree_sidebar" .}}</div>
22+
<div class="repo-view-file-tree-sidebar not-mobile {{if not .RepoPreferences.ShowFileViewTreeSidebar}}tw-hidden{{end}}" {{if .IsSigned}} data-is-signed {{end}}>{{template "repo/view_file_tree_sidebar" .}}</div>
2323
{{end}}
2424

2525
<div class="repo-home-filelist">

web_src/js/features/repo-view-file-tree-sidebar.ts

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import {createApp, ref} from 'vue';
22
import {toggleElem} from '../utils/dom.ts';
33
import {GET, PUT} from '../modules/fetch.ts';
4-
import {registerGlobalInitFunc} from '../modules/observer.ts';
54
import ViewFileTree from '../components/ViewFileTree.vue';
65

76
async function toggleSidebar(sidebarEl: HTMLElement, visibility: boolean) {
@@ -58,42 +57,39 @@ function reloadContentScript(sidebarEl: HTMLElement, contentEl: Element) {
5857
});
5958
}
6059

61-
export function initViewFileTreeSidebar() {
62-
let popstateListenerForViewFilePageAdded = false;
63-
registerGlobalInitFunc('initViewFileTreeSidebar', async (el: HTMLElement) => {
64-
el.querySelector('.hide-tree-sidebar-button').addEventListener('click', () => {
65-
toggleSidebar(el, false);
66-
});
67-
el.parentElement.querySelector('.repo-home-filelist .show-tree-sidebar-button').addEventListener('click', () => {
68-
toggleSidebar(el, true);
69-
});
60+
export async function initViewFileTreeSidebar() {
61+
const sidebarEl = document.querySelector('.repo-view-file-tree-sidebar');
62+
if (!sidebarEl || !(sidebarEl instanceof HTMLElement)) return;
7063

71-
const fileTree = el.querySelector('#view-file-tree');
72-
const baseUrl = fileTree.getAttribute('data-api-base-url');
73-
const treePath = fileTree.getAttribute('data-tree-path');
74-
const refType = fileTree.getAttribute('data-current-ref-type');
75-
const refName = fileTree.getAttribute('data-current-ref-short-name');
76-
const refString = (refType ? (`/${refType}`) : '') + (refName ? (`/${refName}`) : '');
64+
sidebarEl.querySelector('.hide-tree-sidebar-button').addEventListener('click', () => {
65+
toggleSidebar(sidebarEl, false);
66+
});
67+
sidebarEl.parentElement.querySelector('.repo-home-filelist .show-tree-sidebar-button').addEventListener('click', () => {
68+
toggleSidebar(sidebarEl, true);
69+
});
7770

78-
const selectedItem = ref(getSelectedPath(refString));
71+
const fileTree = sidebarEl.querySelector('#view-file-tree');
72+
const baseUrl = fileTree.getAttribute('data-api-base-url');
73+
const treePath = fileTree.getAttribute('data-tree-path');
74+
const refType = fileTree.getAttribute('data-current-ref-type');
75+
const refName = fileTree.getAttribute('data-current-ref-short-name');
76+
const refString = (refType ? (`/${refType}`) : '') + (refName ? (`/${refName}`) : '');
7977

80-
const files = await childrenLoader(el)(treePath, true);
78+
const selectedItem = ref(getSelectedPath(refString));
8179

82-
fileTree.classList.remove('is-loading');
83-
const fileTreeView = createApp(ViewFileTree, {files, selectedItem, loadChildren: childrenLoader(el), loadContent: (path: string) => {
84-
window.history.pushState(null, null, encodeURI(`${baseUrl}/src${refString}/${path}`));
85-
selectedItem.value = path;
86-
loadContent(el);
87-
}});
88-
fileTreeView.mount(fileTree);
80+
const files = await childrenLoader(sidebarEl)(treePath, true);
8981

90-
if (!popstateListenerForViewFilePageAdded) {
91-
window.addEventListener('popstate', () => {
92-
selectedItem.value = getSelectedPath(refString);
93-
loadContent(el);
94-
});
95-
popstateListenerForViewFilePageAdded = true;
96-
}
82+
fileTree.classList.remove('is-loading');
83+
const fileTreeView = createApp(ViewFileTree, {files, selectedItem, loadChildren: childrenLoader(sidebarEl), loadContent: (path: string) => {
84+
window.history.pushState(null, null, encodeURI(`${baseUrl}/src${refString}/${path}`));
85+
selectedItem.value = path;
86+
loadContent(sidebarEl);
87+
}});
88+
fileTreeView.mount(fileTree);
89+
90+
window.addEventListener('popstate', () => {
91+
selectedItem.value = getSelectedPath(refString);
92+
loadContent(sidebarEl);
9793
});
9894
}
9995

0 commit comments

Comments
 (0)