@@ -4,7 +4,7 @@ import { Button } from "antd";
44import { FontAwesomeIcon } from "@fortawesome/react-fontawesome" ;
55import { faCube } from "@fortawesome/pro-regular-svg-icons" ;
66import config from "../../config" ;
7- import { signedPublicLink } from "../../libs/awsLib" ;
7+ import { signedPublicLink , signedLink } from "../../libs/awsLib" ;
88
99function getH5JLink ( construct ) {
1010 const imageStack = construct ?. files ?. VisuallyLosslessStack ;
@@ -18,30 +18,51 @@ function getSWCLink(construct) {
1818
1919export default function ViewIn3DButton ( { isLM, match, mask, style } ) {
2020 const [ signedSwc , setSignedSwc ] = React . useState ( undefined ) ;
21+ const [ signedH5j , setSignedH5j ] = React . useState ( undefined ) ;
2122 const [ isDisabled , setDisabled ] = React . useState ( true ) ;
2223 const ref = window . location ;
23- const h5j = isLM ? getH5JLink ( match . image ) : getH5JLink ( mask ) ;
24- const channel = isLM
25- ? parseInt ( match . image . channel , 10 )
26- : parseInt ( mask . channel , 10 ) ;
24+ const isCustomUpload = Boolean ( mask . identityId && mask . alignedVolume ) ;
25+ const h5j = isCustomUpload
26+ ? null
27+ : isLM ? getH5JLink ( match . image ) : getH5JLink ( mask ) ;
28+ const channel = isCustomUpload
29+ ? parseInt ( mask . channel , 10 ) || 0
30+ : isLM
31+ ? parseInt ( match . image . channel , 10 )
32+ : parseInt ( mask . channel , 10 ) ;
2733 const { mirrored } = match ;
2834
2935 React . useEffect ( ( ) => {
30- const swc = isLM ? getSWCLink ( mask ) : getSWCLink ( match . image ) ;
31- signedPublicLink ( swc ) . then ( ( signed ) => {
32- setSignedSwc ( signed ) ;
33- } ) ;
36+ const swc = isCustomUpload
37+ ? getSWCLink ( match . image )
38+ : isLM ? getSWCLink ( mask ) : getSWCLink ( match . image ) ;
3439
35- if ( swc && h5j ) {
40+ if ( swc ) {
41+ signedPublicLink ( swc ) . then ( ( signed ) => {
42+ setSignedSwc ( signed ) ;
43+ } ) ;
44+ }
45+
46+ if ( isCustomUpload ) {
47+ const volumePath = `${ mask . searchDir } /${ mask . alignedVolume } ` ;
48+ signedLink ( volumePath ) . then ( ( signed ) => {
49+ setSignedH5j ( signed ) ;
50+ if ( swc ) {
51+ setDisabled ( false ) ;
52+ }
53+ } ) ;
54+ } else if ( swc && h5j ) {
3655 setDisabled ( false ) ;
3756 }
38- } , [ isLM , mask , match , h5j ] ) ;
57+ } , [ isLM , isCustomUpload , mask , match , h5j ] ) ;
58+
59+ const h5jUrl = isCustomUpload ? signedH5j : h5j ;
3960
4061 // must encode the signedSWC, so that it makes it to the volume viewer in the
4162 // correct state for loading the swc
4263 const volViewerLink = `${ config . volumeViewer } ?ref=${ encodeURIComponent (
4364 ref
44- ) } &h5j=${ encodeURIComponent ( h5j ) } &swc=${ encodeURIComponent (
65+ ) } &h5j=${ encodeURIComponent ( h5jUrl ) } &swc=${ encodeURIComponent (
4566 signedSwc
4667 ) } &ch=${ channel } &mx=${ mirrored } `;
4768
0 commit comments