1- import React , { useEffect , useRef , useState } from 'react' ;
1+ import React , { useEffect , useRef , useState , useCallback } from 'react' ;
22import 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 - 9 a - f ] { 8 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - f ] { 12 } $ / i;
5869
5970export 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 - 9 a - f ] { 8 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - f ] { 4 } - [ 0 - 9 a - 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 >
0 commit comments