Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions client/eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ const jsRules = {
"dropdown",
"dropzone",
"enum",
"envi",
"envidat",
"etag",
"favicon",
"fetchable",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ import {
useGetOauth2ConnectionsQuery,
useGetOauth2ProvidersQuery,
} from "~/features/connectedServices/api/connectedServices.api";
import { DataConnectorRead } from "../api/data-connectors.api";
import { DataConnectorRead, DepositProvider } from "../api/data-connectors.api";
import { usePostDepositsMutation } from "../api/data-connectors.enhanced-api";
import DepositIntegrationInfo from "./DepositIntegrationInfo";
import { PROVIDER_OPTIONS } from "./deposits.constants";
Expand Down Expand Up @@ -50,26 +50,29 @@ export default function DepositCreationModal({
});
const [postDeposit, result] = usePostDepositsMutation();

// Fetch connection information for the selected provider
// Fetch connection information for the selected provider if necessary
const userSelectedProvider = useWatch({
control,
name: "provider",
});
const targetProviderString = ["zenodo"].includes(userSelectedProvider)
? userSelectedProvider
: null;
const targetProviderIntegration = PROVIDER_OPTIONS.find(
(provider) =>
provider.value === userSelectedProvider && provider.integration,
)?.integration;

const {
data: providers,
error: providersError,
isLoading: isLoadingProviders,
} = useGetOauth2ProvidersQuery(targetProviderString ? undefined : skipToken);
} = useGetOauth2ProvidersQuery(
targetProviderIntegration ? undefined : skipToken,
);

const targetProvider = useMemo(() => {
return providers?.find(
(provider) => provider.kind === targetProviderString,
(provider) => provider.kind === targetProviderIntegration,
);
}, [providers, targetProviderString]);
}, [providers, targetProviderIntegration]);

const {
data: connections,
Expand All @@ -92,7 +95,7 @@ export default function DepositCreationModal({
data_connector_id: dataConnector?.id ?? "",
name: data.name,
path: data.path,
provider: data.provider,
provider: data.provider as DepositProvider, // ! Temp -- remove
},
});
},
Expand Down Expand Up @@ -216,14 +219,16 @@ export default function DepositCreationModal({
Different platforms might have different
limitations/requirements.
</FormText>
<div className="mt-1">
<DepositIntegrationInfo
connection={targetConnection}
isError={!!error}
isLoading={isLoading}
provider={targetProvider}
/>
</div>
{targetProviderIntegration && (
<div className="mt-1">
<DepositIntegrationInfo
connection={targetConnection}
isError={!!error}
isLoading={isLoading}
provider={targetProvider}
/>
</div>
)}
</div>
</FormGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { ProviderOption } from "./deposits.types";
export const POLL_TIME_INACTIVE_DEPOSITS = 60_000;
export const POLL_TIME_ACTIVE_DEPOSITS = 5_000;
export const PROVIDER_OPTIONS: ProviderOption[] = [
{ value: "zenodo", label: "Zenodo" },
{ value: "zenodo", label: "Zenodo", integration: "zenodo" },
{ value: "envidat", label: "EnviDat", integration: undefined },
];
export const LAST_DEPOSIT_QUERY_PARAMS = { page: 1, per_page: 1 }; // We only consider the last deposit for now
// ? We only consider the last deposit for now
export const LAST_DEPOSIT_QUERY_PARAMS = { page: 1, per_page: 1 };
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
import { DepositProvider, DepositStatus } from "../api/data-connectors.api";

type DepositProviders = DepositProvider | "envidat";

export interface CreateDepositionForm {
name: string;
path: string;
provider: DepositProvider;
provider: DepositProviders;
}
export interface EditDepositionForm {
name: string;
path: string;
status: DepositStatus;
}
export type ProviderOption = { value: DepositProvider; label: string };
export type ProviderOption = {
value: DepositProviders;
label: string;
integration?: string;
};
Loading