Skip to content

Commit beddfce

Browse files
committed
Fix CSP headers & image url
1 parent bed6a2c commit beddfce

File tree

4 files changed

+18
-9
lines changed

4 files changed

+18
-9
lines changed

ui/rsbuild.config.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ export default defineConfig({
5555
},
5656
server: {
5757
headers: {
58-
'Cross-Origin-Embedder-Policy': 'require-corp',
58+
'Cross-Origin-Embedder-Policy': 'credentialless',
5959
'Cross-Origin-Opener-Policy': 'same-origin',
6060
'Content-Security-Policy':
6161
"default-src 'self'; " +
6262
"script-src 'self' 'unsafe-eval' blob:; " +
6363
"worker-src 'self' blob:; " +
6464
"connect-src 'self' http://localhost:7860 data:; " +
65+
"img-src 'self' http://localhost:7860 data: blob:; " +
6566
"style-src 'self' 'unsafe-inline';",
6667
},
6768
},

ui/src/features/annotator/hooks/use-load-image-query.hook.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,26 @@
33

44
import { useQuery, UseQueryResult } from '@tanstack/react-query';
55

6+
import { useProjectIdentifier } from '../../../hooks/use-project-identifier.hook';
67
import { getImageData, loadImage } from '../tools/utils';
7-
import { MediaItem } from '../types';
8+
import { DatasetItem } from '../types';
9+
10+
export const useLoadImageQuery = (mediaItem: DatasetItem | undefined): UseQueryResult<ImageData, unknown> => {
11+
const projectId = useProjectIdentifier();
812

9-
export const useLoadImageQuery = (mediaItem: MediaItem | undefined): UseQueryResult<ImageData, unknown> => {
1013
return useQuery({
11-
queryKey: ['mediaItem', mediaItem?.id],
14+
queryKey: ['mediaItem', mediaItem?.id, projectId],
1215
queryFn: async () => {
1316
if (mediaItem === undefined) {
1417
throw new Error("Can't fetch undefined media item");
1518
}
1619

17-
const image = await loadImage(mediaItem.thumbhash);
20+
const imageUrl = `http://localhost:7860/api/projects/${projectId}/dataset/items/${mediaItem.id}/binary`;
21+
const image = await loadImage(imageUrl);
1822

1923
return getImageData(image);
2024
},
21-
enabled: mediaItem !== undefined,
25+
enabled: mediaItem !== undefined && !!projectId,
2226
// The image of a media item never changes so we don't want to refetch stale data
2327
staleTime: Infinity,
2428
retry: 0,

ui/src/features/annotator/tools/segment-anything-tool/use-segment-anything.hook.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { useQuery } from '@tanstack/react-query';
88
import { Remote, wrap } from 'comlink';
99

1010
import { useAnnotator } from '../../annotator-provider.component';
11-
import { MediaItem } from '../../types';
11+
import { DatasetItem } from '../../types';
1212
import { convertToolShapeToGetiShape } from '../utils';
1313
import { InteractiveAnnotationPoint } from './segment-anything.interface';
1414

@@ -53,7 +53,11 @@ const useSegmentAnythingWorker = (algorithmType: 'SEGMENT_ANYTHING_DECODER' | 'S
5353
return modelRef.current;
5454
};
5555

56-
const useEncodingQuery = (model: Remote<SegmentAnythingModel> | undefined, mediaItem: MediaItem, image: ImageData) => {
56+
const useEncodingQuery = (
57+
model: Remote<SegmentAnythingModel> | undefined,
58+
mediaItem: DatasetItem,
59+
image: ImageData
60+
) => {
5761
return useQuery({
5862
queryKey: ['segment-anything-model', 'encoding', mediaItem?.id],
5963
queryFn: async () => {

ui/src/features/annotator/tools/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ export const getRelativePoint = (element: ElementType, point: Point, zoom: numbe
343343
export const loadImage = (link: string): Promise<HTMLImageElement> =>
344344
new Promise<HTMLImageElement>((resolve, reject) => {
345345
const image = new Image();
346-
image.crossOrigin = 'use-credentials';
346+
image.crossOrigin = 'anonymous';
347347

348348
image.onload = () => resolve(image);
349349
image.onerror = (error) => reject(error);

0 commit comments

Comments
 (0)