Skip to content

Commit f7d2b5b

Browse files
committed
fix
1 parent ad0a618 commit f7d2b5b

File tree

5 files changed

+16
-56
lines changed

5 files changed

+16
-56
lines changed

templates/repo/home.tmpl

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
11
{{template "base/head" .}}
2-
<script id="view-data-script" type="module">
3-
let viewFileInfo = window.config.pageData.viewFileInfo || {
4-
files:[],
5-
fileTreeIsVisible: false,
6-
selectedItem: '',
7-
apiBaseUrl: {{.RepoLink}},
8-
};
9-
window.config.pageData.viewFileInfo = viewFileInfo;
10-
</script>
112
{{$n := len .TreeNames}}
123
{{$l := Eval $n "-" 1}}
134
{{$isHomepage := (eq $n 0)}}
@@ -57,7 +48,7 @@
5748
{{template "repo/sub_menu" .}}
5849
<div class="tree-container">
5950
{{if $showTree}}
60-
<div id="view-file-tree" class="file-tree tree-left tw-hidden not-mobile"></div>
51+
<div id="view-file-tree" class="file-tree tree-left tw-hidden not-mobile" data-api-base-url="{{.RepoLink}}"></div>
6152
{{end}}
6253
<div class="tree-right">
6354
<div class="repo-button-row" data-is-homepage="{{$isHomepage}}">

web_src/js/components/FileTree.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import FileTreeItem from './FileTreeItem.vue';
55
defineProps<{
66
id: string,
77
files: any[],
8-
selected: string,
8+
selected?: string,
99
isLoading: boolean,
1010
collapsed: boolean,
1111
fileUrlGetter: any,

web_src/js/components/FileTreeItem.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type Item = {
1111
1212
const props = defineProps<{
1313
item: Item,
14-
selected: string,
14+
selected?: string,
1515
collapsed: boolean,
1616
fileUrlGetter: any,
1717
fileClassGetter?: any,

web_src/js/components/ViewFileTree.vue

Lines changed: 13 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,57 +2,34 @@
22
import FileTree from './FileTree.vue';
33
import {GET} from '../modules/fetch.ts';
44
import {toggleElem} from '../utils/dom.ts';
5-
import {viewTreeStore} from '../modules/stores.ts';
6-
import {setFileFolding} from '../features/file-fold.ts';
75
import {ref, onMounted, onUnmounted} from 'vue';
86
9-
const LOCAL_STORAGE_KEY = 'view_file_tree_visible';
10-
11-
const store = viewTreeStore();
12-
7+
const files = ref(null);
8+
const visible = ref(false);
139
const isLoading = ref(false);
1410
1511
onMounted(async () => {
1612
// Default to false
1713
updateVisibility(false);
1814
document.querySelector('.view-toggle-file-tree-button').addEventListener('click', toggleVisibility);
1915
20-
hashChangeListener();
21-
window.addEventListener('hashchange', hashChangeListener);
22-
2316
isLoading.value = true;
24-
const files = await loadChildren();
25-
store.files = files;
17+
const children = await loadChildren();
18+
files.value = children;
2619
isLoading.value = false;
2720
});
2821
2922
onUnmounted(() => {
3023
document.querySelector('.view-toggle-file-tree-button').removeEventListener('click', toggleVisibility);
31-
window.removeEventListener('hashchange', hashChangeListener);
3224
});
3325
34-
function hashChangeListener() {
35-
store.selectedItem = window.location.hash;
36-
expandSelectedFile();
37-
}
38-
39-
function expandSelectedFile() {
40-
// expand file if the selected file is folded
41-
if (store.selectedItem) {
42-
const box = document.querySelector(store.selectedItem);
43-
const folded = box?.getAttribute('data-folded') === 'true';
44-
if (folded) setFileFolding(box, box.querySelector('.fold-file'), false);
45-
}
46-
}
47-
4826
function toggleVisibility() {
49-
updateVisibility(!store.fileTreeIsVisible);
27+
updateVisibility(!visible.value);
5028
}
5129
52-
function updateVisibility(visible) {
53-
store.fileTreeIsVisible = visible;
54-
localStorage.setItem(LOCAL_STORAGE_KEY, store.fileTreeIsVisible);
55-
updateState(store.fileTreeIsVisible);
30+
function updateVisibility(_visible) {
31+
visible.value = _visible;
32+
updateState(visible.value);
5633
}
5734
5835
function updateState(visible) {
@@ -67,7 +44,9 @@ function updateState(visible) {
6744
}
6845
6946
async function loadChildren(item?) {
70-
const response = await GET(`/api/v1/repos/${window.config.pageData.viewFileInfo.apiBaseUrl}/contents/${item ? item.file.path : ''}`);
47+
const el = document.querySelector('#view-file-tree');
48+
const apiBaseUrl = el.getAttribute('data-api-base-url');
49+
const response = await GET(`/api/v1/repos/${apiBaseUrl}/contents/${item ? item.file.path : ''}`);
7150
const json = await response.json();
7251
return json.map((i) => ({
7352
file: i,
@@ -79,12 +58,11 @@ async function loadChildren(item?) {
7958

8059
<template>
8160
<FileTree
82-
v-if="store.fileTreeIsVisible"
61+
v-if="visible"
8362
id="view-file-tree"
8463
:is-loading="isLoading"
85-
:files="store.files"
64+
:files="files"
8665
:collapsed="true"
87-
:selected="store.selectedItem"
8866
:file-url-getter="item => item.file.html_url"
8967
:load-children="loadChildren"
9068
/>

web_src/js/modules/stores.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,3 @@ export function diffTreeStore() {
99
}
1010
return diffTreeStoreReactive;
1111
}
12-
13-
let viewTreeStoreReactive: Reactive<Record<string, any>>;
14-
export function viewTreeStore() {
15-
if (!viewTreeStoreReactive) {
16-
viewTreeStoreReactive = reactive(window.config.pageData.viewFileInfo);
17-
window.config.pageData.viewFileInfo = viewTreeStoreReactive;
18-
}
19-
return viewTreeStoreReactive;
20-
}

0 commit comments

Comments
 (0)