Skip to content

Commit 1c1dc2f

Browse files
authored
[Human App] fix: oracle discovery schema (#2819)
* fix: oracle discovery schema * fix: use proper oracle type from response
1 parent deb5a1f commit 1c1dc2f

File tree

4 files changed

+18
-16
lines changed

4 files changed

+18
-16
lines changed

packages/apps/human-app/frontend/src/api/services/worker/oracles.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { useJobsTypesOraclesFilter } from '@/hooks/use-job-types-oracles-table';
77
import { stringifyUrlQueryObject } from '@/shared/helpers/stringify-url-query-object';
88
import { env } from '@/shared/env';
99

10-
const OracleSuccessSchema = z.object({
10+
const OracleSchema = z.object({
1111
address: z.string(),
1212
role: z.string(),
1313
url: z.string(),
@@ -16,12 +16,14 @@ const OracleSuccessSchema = z.object({
1616
registrationInstructions: z.string().optional().nullable(),
1717
});
1818

19-
const OraclesSuccessSchema = z.array(OracleSuccessSchema);
19+
const OraclesDiscoverSuccessSchema = z.object({
20+
oracles: z.array(OracleSchema),
21+
chainIdsEnabled: z.array(z.string()),
22+
});
2023

21-
export type OracleSuccessResponse = z.infer<typeof OracleSuccessSchema> & {
24+
export type Oracle = z.infer<typeof OracleSchema> & {
2225
name: string;
2326
};
24-
export type OraclesSuccessResponse = OracleSuccessResponse[];
2527

2628
const OracleNameToUrls = {
2729
CVAT: [
@@ -38,7 +40,7 @@ for (const [oracleName, oracleUrls] of Object.entries(OracleNameToUrls)) {
3840
}
3941
}
4042

41-
const H_CAPTCHA_ORACLE: OracleSuccessResponse = {
43+
const H_CAPTCHA_ORACLE: Oracle = {
4244
address: env.VITE_H_CAPTCHA_ORACLE_ADDRESS,
4345
jobTypes: env.VITE_H_CAPTCHA_ORACLE_TASK_TYPES,
4446
role: env.VITE_H_CAPTCHA_ORACLE_ROLE,
@@ -60,17 +62,17 @@ export async function getOracles({
6062
? `?${stringifyUrlQueryObject({ selected_job_types })}`
6163
: '';
6264

63-
const fetchedOracles = await apiClient(
65+
const result = await apiClient(
6466
`${apiPaths.worker.oracles.path}${queryParams}`,
6567
{
66-
successSchema: OraclesSuccessSchema,
68+
successSchema: OraclesDiscoverSuccessSchema,
6769
options: { method: 'GET' },
6870
},
6971
signal
7072
);
7173

7274
oracles = oracles.concat(
73-
fetchedOracles.map((oracle) => ({
75+
result.oracles.map((oracle) => ({
7476
...oracle,
7577
name: oracleUrlToNameMap.get(oracle.url) ?? '',
7678
}))

packages/apps/human-app/frontend/src/pages/worker/jobs-discovery/components/oracles-table/oracles-table-mobile.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { EvmAddress } from '@/pages/worker/jobs/components/evm-address';
88
import { ListItem } from '@/components/ui/list-item';
99
import { useColorMode } from '@/hooks/use-color-mode';
1010
import type { JobType } from '@/smart-contracts/EthKVStore/config';
11-
import type { OracleSuccessResponse } from '@/api/services/worker/oracles';
11+
import type { Oracle } from '@/api/services/worker/oracles';
1212
import { NoRecords } from '@/components/ui/no-records';
1313

1414
export function OraclesTableMobile({
@@ -19,7 +19,7 @@ export function OraclesTableMobile({
1919
isPending: isOraclesDataPending,
2020
},
2121
}: {
22-
selectOracle: (oracle: OracleSuccessResponse, jobTypes: string[]) => void;
22+
selectOracle: (oracle: Oracle, jobTypes: string[]) => void;
2323
oraclesQueryDataResult: OraclesDataQueryResult;
2424
}) {
2525
const { colorPalette } = useColorMode();

packages/apps/human-app/frontend/src/pages/worker/jobs-discovery/components/oracles-table/oracles-table.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
} from 'material-react-table';
77
import { Grid } from '@mui/material';
88
import { useNavigate } from 'react-router-dom';
9-
import { type OracleSuccessResponse } from '@/api/services/worker/oracles';
9+
import type { Oracle } from '@/api/services/worker/oracles';
1010
import { useIsMobile } from '@/hooks/use-is-mobile';
1111
import { EvmAddress } from '@/pages/worker/jobs/components/evm-address';
1212
import { Chips } from '@/components/ui/chips';
@@ -22,8 +22,8 @@ import { type JobType } from '@/smart-contracts/EthKVStore/config';
2222
import { useGetRegistrationInExchangeOracles } from '@/api/services/worker/get-registration-in-exchange-oracles';
2323

2424
const getColumns = (
25-
selectOracle: (oracle: OracleSuccessResponse) => void
26-
): MRT_ColumnDef<OracleSuccessResponse>[] => {
25+
selectOracle: (oracle: Oracle) => void
26+
): MRT_ColumnDef<Oracle>[] => {
2727
return [
2828
{
2929
accessorKey: 'name',
@@ -91,7 +91,7 @@ export function OraclesTable({
9191
const { data: registrationInExchangeOraclesResult } =
9292
useGetRegistrationInExchangeOracles();
9393

94-
const selectOracle = (oracle: OracleSuccessResponse) => {
94+
const selectOracle = (oracle: Oracle) => {
9595
if (
9696
oracle.registrationNeeded &&
9797
!registrationInExchangeOraclesResult?.oracle_addresses.find(

packages/apps/human-app/frontend/src/pages/worker/jobs-discovery/jobs-discovery.page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import { useEffect, useRef } from 'react';
66
import { useIsMobile } from '@/hooks/use-is-mobile';
77
import { OraclesTable } from '@/pages/worker/jobs-discovery/components/oracles-table/oracles-table';
88
import { OraclesTableJobTypesSelect } from '@/pages/worker/jobs-discovery/components/oracles-table/oracles-table-job-types-select';
9-
import type { OraclesSuccessResponse } from '@/api/services/worker/oracles';
9+
import type { Oracle } from '@/api/services/worker/oracles';
1010
import { useGetOracles } from '@/api/services/worker/oracles';
1111
import { useAuthenticatedUser } from '@/auth/use-authenticated-user';
1212
import { routerPaths } from '@/router/router-paths';
1313
import { useGetOraclesNotifications } from '@/hooks/use-get-oracles-notifications';
1414

15-
export type OraclesDataQueryResult = UseQueryResult<OraclesSuccessResponse>;
15+
export type OraclesDataQueryResult = UseQueryResult<Oracle[]>;
1616

1717
export function JobsDiscoveryPage() {
1818
const { onError } = useGetOraclesNotifications();

0 commit comments

Comments
 (0)