From: Janicki Artur Date: Mon, 26 Nov 2018 17:36:55 +0000 (+0100) Subject: add async for get open advanced dialog, fix issues X-Git-Tag: 1.3.0~12^2~2 X-Git-Url: https://git.arvados.org/arvados-workbench2.git/commitdiff_plain/76a864095a7ee3c329a019fbdf0a269ee31a4358 add async for get open advanced dialog, fix issues Feature #14528_advance_tab_action_for_ssh_key Arvados-DCO-1.1-Signed-off-by: Janicki Artur --- diff --git a/src/store/advanced-tab/advanced-tab.ts b/src/store/advanced-tab/advanced-tab.ts index 2d742ce2..c6829d54 100644 --- a/src/store/advanced-tab/advanced-tab.ts +++ b/src/store/advanced-tab/advanced-tab.ts @@ -58,34 +58,37 @@ enum SshKeyData { CREATED_AT = 'created_at' } +type AdvanceResourceKind = CollectionData | ProcessData | ProjectData | RepositoryData | SshKeyData; +type AdvanceResourcePrefix = GroupContentsResourcePrefix | 'repositories' | 'authorized_keys'; + export const openAdvancedTabDialog = (uuid: string, index?: number) => - (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { + async (dispatch: Dispatch, getState: () => RootState, services: ServiceRepository) => { const kind = extractUuidKind(uuid); switch (kind) { case ResourceKind.COLLECTION: - const { data: dataCollection, metadata: metaCollection, user: userCollection } = dispatch(getDataForAdvancedTab(uuid)); + const { data: dataCollection, metadata: metaCollection, user: userCollection } = await dispatch(getDataForAdvancedTab(uuid)); const advanceDataCollection: AdvancedTabDialogData = advancedTabData(uuid, metaCollection, userCollection, collectionApiResponse, dataCollection, CollectionData.COLLECTION, GroupContentsResourcePrefix.COLLECTION, CollectionData.STORAGE_CLASSES_CONFIRMED, dataCollection.storageClassesConfirmed); - dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: advanceDataCollection })); + dispatch(initAdvancedTabDialog(advanceDataCollection)); break; case ResourceKind.PROCESS: - const { data: dataProcess, metadata: metaProcess, user: userProcess } = dispatch(getDataForAdvancedTab(uuid)); + const { data: dataProcess, metadata: metaProcess, user: userProcess } = await dispatch(getDataForAdvancedTab(uuid)); const advancedDataProcess: AdvancedTabDialogData = advancedTabData(uuid, metaProcess, userProcess, containerRequestApiResponse, dataProcess, ProcessData.CONTAINER_REQUEST, GroupContentsResourcePrefix.PROCESS, ProcessData.OUTPUT_NAME, dataProcess.outputName); - dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: advancedDataProcess })); + dispatch(initAdvancedTabDialog(advancedDataProcess)); break; case ResourceKind.PROJECT: - const { data: dataProject, metadata: metaProject, user: userProject } = dispatch(getDataForAdvancedTab(uuid)); + const { data: dataProject, metadata: metaProject, user: userProject } = await dispatch(getDataForAdvancedTab(uuid)); const advanceDataProject: AdvancedTabDialogData = advancedTabData(uuid, metaProject, userProject, groupRequestApiResponse, dataProject, ProjectData.GROUP, GroupContentsResourcePrefix.PROJECT, ProjectData.DELETE_AT, dataProject.deleteAt); - dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: advanceDataProject })); + dispatch(initAdvancedTabDialog(advanceDataProject)); break; case ResourceKind.REPOSITORY: const dataRepository = getState().repositories.items[index!]; const advanceDataRepository: AdvancedTabDialogData = advancedTabData(uuid, '', '', repositoryApiResponse, dataRepository, RepositoryData.REPOSITORY, 'repositories', RepositoryData.CREATED_AT, dataRepository.createdAt); - dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: advanceDataRepository })); + dispatch(initAdvancedTabDialog(advanceDataRepository)); break; case ResourceKind.SSH_KEY: const dataSshKey = getState().auth.sshKeys[index!]; const advanceDataSshKey: AdvancedTabDialogData = advancedTabData(uuid, '', '', sshKeyApiResponse, dataSshKey, SshKeyData.SSH_KEY, 'authorized_keys', SshKeyData.CREATED_AT, dataSshKey.createdAt); - dispatch(dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data: advanceDataSshKey })); + dispatch(initAdvancedTabDialog(advanceDataSshKey)); break; default: dispatch(snackbarActions.OPEN_SNACKBAR({ message: "Could not open advanced tab for this resource.", hideDuration: 2000, kind: SnackbarKind.ERROR })); @@ -101,14 +104,14 @@ const getDataForAdvancedTab = (uuid: string) => .addEqual('headUuid', uuid) .getFilters() }); - const user = metadata.itemsAvailable && await services.userService.get(metadata.items[0].tailUuid); + const user = metadata.itemsAvailable && await services.userService.get(metadata.items[0].tailUuid || ''); return { data, metadata, user }; }; -type AdvanceResourceKind = CollectionData | ProcessData | ProjectData | RepositoryData | SshKeyData; -type AdvanceResourcePrefix = GroupContentsResourcePrefix | 'repositories' | 'authorized_keys'; +const initAdvancedTabDialog = (data: AdvancedTabDialogData) => dialogActions.OPEN_DIALOG({ id: ADVANCED_TAB_DIALOG, data }); -const advancedTabData = (uuid: string, metadata: any, user: any, apiResponseKind: any, data: any, resourceKind: AdvanceResourceKind, resourcePrefix: AdvanceResourcePrefix, resourceKindProperty: AdvanceResourceKind, property: any) => { +const advancedTabData = (uuid: string, metadata: any, user: any, apiResponseKind: any, data: any, resourceKind: AdvanceResourceKind, + resourcePrefix: AdvanceResourcePrefix, resourceKindProperty: AdvanceResourceKind, property: any) => { return { uuid, user,