Skip to content

Commit 2a3f5c7

Browse files
committed
optimize select dialog
1 parent a5e5127 commit 2a3f5c7

File tree

3 files changed

+22
-16
lines changed

3 files changed

+22
-16
lines changed

client/browser/FileSelectDialog.tsx

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@ const FilesList = memo((props: any) => {
8989
});
9090

9191

92-
const FileSelectDialog = forwardRef(function (props: any, forwardedRef) {
93-
const {ambit, baseUrl, selectedFolderId, mimeTypes, csrfToken} = props;
92+
const FileSelectDialog = forwardRef(function FileSelectDialog(props: any, forwardedRef) {
93+
const {ambit, baseUrl, selectedFolderId, selectedFileId, mimeTypes, csrfToken} = props;
9494
const [structure, setStructure] = useState({
9595
root_folder: null,
9696
last_folder: null,
@@ -195,6 +195,9 @@ const FileSelectDialog = forwardRef(function (props: any, forwardedRef) {
195195
if (selectedFolderId) {
196196
params.append('folder', selectedFolderId);
197197
}
198+
if (selectedFileId) {
199+
params.append('file', selectedFileId);
200+
}
198201
mimeTypes?.forEach(type => params.append('mimetypes', type));
199202
setDirty(false);
200203
const response = await fetch(`${baseUrl}structure/${ambit}${params.size === 0 ? '' : `?${params.toString()}`}`);
@@ -340,7 +343,7 @@ const FileSelectDialog = forwardRef(function (props: any, forwardedRef) {
340343
setDirty={setDirty}
341344
isDirty={isDirty}
342345
selectFile={selectFile}
343-
selectedFileId={props.selectedFileId}
346+
selectedFileId={selectedFileId}
344347
webAudio={webAudio}
345348
/>
346349
:

client/browser/FinderFileSelect.tsx

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {useEffect, useRef, useState} from 'react';
1+
import React, {useEffect, useRef, useState, useCallback} from 'react';
22
import FileSelectDialog from './FileSelectDialog';
33

44

@@ -55,6 +55,17 @@ function parseDataset(dataset: string|object) : SelectedFile|null {
5555
return null;
5656
}
5757

58+
function getCSRFToken(shadowRoot) {
59+
const csrfToken = shadowRoot.host.closest('form')?.querySelector('input[name="csrfmiddlewaretoken"]')?.value;
60+
if (csrfToken)
61+
return csrfToken;
62+
const parts = `; ${document.cookie}`.split('; csrftoken=');
63+
if (parts.length === 2)
64+
return parts.pop().split(';').shift();
65+
}
66+
67+
68+
const uuid5Regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
5869

5970
export default function FinderFileSelect(props) {
6071
const shadowRoot = props.container;
@@ -65,7 +76,7 @@ export default function FinderFileSelect(props) {
6576
const slotRef = useRef(null);
6677
const dialogRef = useRef(null);
6778
const [selectedFile, setSelectedFile] = useState<SelectedFile>(null);
68-
const csrfToken = getCSRFToken();
79+
const csrfToken = getCSRFToken(shadowRoot);
6980
const uuid5Regex = new RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
7081

7182
useEffect(() => {
@@ -126,15 +137,6 @@ export default function FinderFileSelect(props) {
126137
}
127138
}
128139

129-
function getCSRFToken() {
130-
const csrfToken = shadowRoot.host.closest('form')?.querySelector('input[name="csrfmiddlewaretoken"]')?.value;
131-
if (csrfToken)
132-
return csrfToken;
133-
const parts = `; ${document.cookie}`.split('; csrftoken=');
134-
if (parts.length === 2)
135-
return parts.pop().split(';').shift();
136-
}
137-
138140
function openDialog() {
139141
dialogRef.current.showModal();
140142
selectRef.current.scrollToCurrentFolder();
@@ -172,7 +174,7 @@ export default function FinderFileSelect(props) {
172174
<div className="finder-file-select">
173175
<figure>{selectedFile ? <>
174176
<div>
175-
<img src={selectedFile.thumbnail_url} onClick={openDialog} onDragEnter={openDialog} />
177+
<img src={selectedFile.thumbnail_url} alt={selectedFile.name} onClick={openDialog} onDragEnter={openDialog} />
176178
</div>
177179
<figcaption>
178180
<dl>

client/scss/finder-browser.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
display: inline-flex;
1212
margin: 0.25rem 0;
1313
padding: 0;
14-
outline: gray thin dotted;
14+
outline: gray 2px dashed;
15+
border-radius: 4px;
1516

1617
>div {
1718
width: 180px;

0 commit comments

Comments
 (0)