Skip to content
This repository was archived by the owner on Apr 18, 2024. It is now read-only.

Commit a134880

Browse files
hlomzikjomboothMihajloHoma
authored
feat: LEAP-58: Proxy URL for Taxonomy if possible (#1592)
* feat: LEAP-58: Proxy URL for Taxonomy if possible onProxyUrl should be provided to LSF from LS. TODO: can be not the correct way to call it, check how events invoke. * Add `events` to store to have access anywhere So events can be triggered and caught by any internal and external code * additional work to get proxyurl working * lint + merge fixes * use new project scoped presigning path * Update src/stores/AppStore.js Co-authored-by: hlomzik <[email protected]> * Update src/tags/control/Taxonomy/Taxonomy.js Co-authored-by: hlomzik <[email protected]> * empty commit to trigger build workflow * trigger CI --------- Co-authored-by: Jo Booth <[email protected]> Co-authored-by: MihajloHoma <[email protected]>
1 parent bef0cbd commit a134880

File tree

4 files changed

+24
-4
lines changed

4 files changed

+24
-4
lines changed

src/env/development.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ function configureApplication(params) {
152152
onDeleteAnnotation: params.onDeleteAnnotation ? params.onDeleteAnnotation : External.onDeleteAnnotation,
153153
onSkipTask: params.onSkipTask ? params.onSkipTask : External.onSkipTask,
154154
onUnskipTask: params.onUnskipTask ? params.onUnskipTask : External.onUnskipTask,
155+
onPresignUrlForProject: params.onPresignUrlForProject,
155156
onSubmitDraft: params.onSubmitDraft,
156157
onTaskLoad: params.onTaskLoad ? params.onTaskLoad : External.onTaskLoad,
157158
onLabelStudioLoad: params.onLabelStudioLoad ? params.onLabelStudioLoad : External.onLabelStudioLoad,

src/env/production.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ function configureApplication(params) {
6565
onSkipTask: params.onSkipTask ? params.onSkipTask : External.onSkipTask,
6666
onUnskipTask: params.onUnskipTask ? params.onUnskipTask : External.onUnskipTask,
6767
onSubmitDraft: params.onSubmitDraft,
68+
onPresignUrlForProject: params.onPresignUrlForProject,
6869
onTaskLoad: params.onTaskLoad || External.onTaskLoad,
6970
onLabelStudioLoad: params.onLabelStudioLoad || External.onLabelStudioLoad,
7071
onEntityCreate: params.onEntityCreate || External.onEntityCreate,

src/stores/AppStore.js

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import AnnotationStore from './Annotation/store';
2222
import Project from './ProjectStore';
2323
import Settings from './SettingsStore';
2424
import Task from './TaskStore';
25-
import { UserExtended } from './UserStore';
25+
import { UserExtended } from './UserStore';
2626
import { UserLabels } from './UserLabels';
2727
import { FF_DEV_1536, FF_DEV_2715, FF_LLM_EPIC, FF_LSDV_4620_3_ML, FF_LSDV_4998, isFF } from '../utils/feature-flags';
2828
import { CommentStore } from './Comment/CommentStore';
@@ -154,9 +154,9 @@ export default types
154154
users: types.optional(types.array(UserExtended), []),
155155

156156
userLabels: isFF(FF_DEV_1536) ? types.optional(UserLabels, { controls: {} }) : types.undefined,
157-
157+
158158
queueTotal: types.optional(types.number, 0),
159-
159+
160160
queuePosition: types.optional(types.number, 0),
161161
})
162162
.preProcessSnapshot((sn) => {
@@ -189,6 +189,9 @@ export default types
189189
suggestionsRequest: null,
190190
}))
191191
.views(self => ({
192+
get events() {
193+
return getEnv(self).events;
194+
},
192195
get hasSegmentation() {
193196
// not an object and not a classification
194197
const isSegmentation = t => !t.getAvailableStates && !t.perRegionVisible;
@@ -622,6 +625,18 @@ export default types
622625
}, 'Error during reject, try again');
623626
}
624627

628+
/**
629+
* Exchange storage url for presigned url for task
630+
*/
631+
async function presignUrlForProject(url) {
632+
// Event invocation returns array of results for all handlers.
633+
const urls = await self.events.invoke('presignUrlForProject', self, url);
634+
635+
const presignUrl = urls?.[0];
636+
637+
return presignUrl;
638+
}
639+
625640
/**
626641
* Reset annotation store
627642
*/
@@ -772,7 +787,7 @@ export default types
772787
}
773788

774789
function nextTask() {
775-
790+
776791
if (self.canGoNextTask) {
777792
const { taskId, annotationId } = self.taskHistory[self.taskHistory.findIndex((x) => x.taskId === self.task.id) + 1];
778793

@@ -831,6 +846,7 @@ export default types
831846
updateAnnotation,
832847
acceptAnnotation,
833848
rejectAnnotation,
849+
presignUrlForProject,
834850
setUsers,
835851
mergeUsers,
836852

src/tags/control/Taxonomy/Taxonomy.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,8 @@ const Model = types
549549
if (!self.isLoadedByApi) return Super.updateValue?.(store);
550550

551551
self._api = parseValue(self.apiurl, store.task.dataObj);
552+
// trying to presign this url if needed and if handler is passed into LSF
553+
self._api = (yield store.presignUrlForProject(self._api)) ?? self._api;
552554

553555
yield self.loadItems();
554556
}),

0 commit comments

Comments
 (0)