Skip to content
Merged
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: 1 addition & 1 deletion packages/apps/dashboard/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"@mui/icons-material": "^7.3.8",
"@mui/material": "^7.2.0",
"@mui/styled-engine-sc": "7.3.8",
"@mui/system": "^7.3.9",
"@mui/system": "^9.0.1",
"@mui/x-data-grid": "^8.7.0",
"@mui/x-date-pickers": "^9.2.0",
"@tanstack/react-query": "^5.91.3",
Expand Down
2 changes: 1 addition & 1 deletion packages/apps/fortune/exchange-oracle/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@
"dotenv": "^17.4.2",
"ethers": "~6.16.0",
"joi": "^17.13.3",
"jsonwebtoken": "^9.0.2",
"jsonwebtoken": "^9.0.3",
"minio": "8.0.6",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
Expand Down
4 changes: 2 additions & 2 deletions packages/apps/human-app/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
"@human-protocol/sdk": "workspace:*",
"@mui/icons-material": "^7.3.8",
"@mui/material": "^5.16.7",
"@mui/system": "^7.3.9",
"@mui/system": "^9.0.1",
"@mui/x-date-pickers": "^9.2.0",
"@reown/appkit": "^1.8.20",
"@reown/appkit-adapter-wagmi": "^1.8.20",
Expand Down Expand Up @@ -78,7 +78,7 @@
"eslint-plugin-react-refresh": "^0.5.2",
"globals": "^16.3.0",
"husky": "^9.1.6",
"jsdom": "^25.0.1",
"jsdom": "^29.1.1",
"prettier": "^3.8.1",
"typescript": "^5.6.3",
"typescript-eslint": "^8.57.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export enum JobType {
AUDIO_TRANSCRIPTION = 'audio_transcription',
AUDIO_ATTRIBUTE_ANNOTATION = 'audio_attribute_annotation',
SOCIAL_MEDIA_PROMOTION = 'social_media_promotion',
SOCIAL_MEDIA_ENGAGEMENT = 'social_media_engagement',
}

export const EthKVStoreKeys = {
Expand Down
3 changes: 2 additions & 1 deletion packages/apps/human-app/frontend/src/shared/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,7 @@
"image_polygons": "Polygons",
"audio_transcription": "Audio Transcription",
"audio_attribute_annotation": "Audio Attribute Annotation",
"social_media_promotion": "Social Media Promotion"
"social_media_promotion": "Social Media Promotion",
"social_media_engagement": "Social Media Engagement"
}
}
2 changes: 1 addition & 1 deletion packages/apps/human-app/server/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
"class-validator": "0.14.1",
"ethers": "^6.16.0",
"joi": "^17.13.3",
"jsonwebtoken": "^9.0.2",
"jsonwebtoken": "^9.0.3",
"jwt-decode": "^4.0.0",
"keyv": "^5.5.5",
"lodash": "^4.17.21",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import {
JobDiscoveryFieldName,
JobDiscoverySortField,
} from '../../common/enums/global-common';
import { ethers } from 'ethers';

@Injectable()
export class JobsDiscoveryService {
Expand All @@ -39,7 +38,11 @@ export class JobsDiscoveryService {

let iteratee: JobDiscoverySortField | Iteratee<DiscoveredJob>;
if (sortField === JobDiscoverySortField.REWARD_AMOUNT) {
iteratee = (job: DiscoveredJob) => ethers.parseUnits(job[sortField], 18);
iteratee = (job: DiscoveredJob) => {
const rewardAmount = Number(job[sortField].trim());

return Number.isFinite(rewardAmount) ? rewardAmount : 0;
};
} else {
iteratee = sortField;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
JobsDiscoveryParamsDto,
JobsDiscoveryResponse,
JobsDiscoveryResponseItem,
DiscoveredJob,
} from '../model/jobs-discovery.model';
import {
JobDiscoveryFieldName,
Expand All @@ -17,6 +18,9 @@ const EXCHANGE_ORACLE_URL = 'https://www.test_url.org';
const ESCROW_ADDRESS1 = 'test_address1';
const ESCROW_ADDRESS2 = 'test_address2';
const ESCROW_ADDRESS3 = 'test_address3';
const JOB_DESCRIPTION = 'Test job description';
const REWARD_TOKEN_HMT = 'HMT';
const REWARD_TOKEN_USDC = 'USDC';
const CHAIN_ID = 1;
const PAGE_SIZE = 10;
const PAGE = 0;
Expand Down Expand Up @@ -101,6 +105,42 @@ export const responseItemsFixture: JobsDiscoveryResponseItem[] = [
responseItemFixture2,
responseItemFixture3,
];
export const hmtRewardAmountResponseItemFixture: DiscoveredJob = {
...responseItemFixture1,
escrow_address: ESCROW_ADDRESS1,
created_at: responseItemFixture1.created_at ?? '',
job_description: JOB_DESCRIPTION,
reward_amount: '1',
reward_token: REWARD_TOKEN_HMT,
updated_at: '2025-03-18T01:00:00.000Z',
};
export const usdcRewardAmountResponseItemFixture: DiscoveredJob = {
...responseItemFixture1,
escrow_address: ESCROW_ADDRESS1,
created_at: responseItemFixture1.created_at ?? '',
job_description: JOB_DESCRIPTION,
reward_amount: '2',
reward_token: REWARD_TOKEN_USDC,
updated_at: '2025-03-18T01:00:00.000Z',
};
export const invalidRewardAmountResponseItemFixture: DiscoveredJob = {
...responseItemFixture1,
escrow_address: ESCROW_ADDRESS1,
created_at: responseItemFixture1.created_at ?? '',
job_description: JOB_DESCRIPTION,
reward_amount: 'NaN',
reward_token: REWARD_TOKEN_HMT,
updated_at: '2025-03-18T01:00:00.000Z',
};
export const validRewardAmountResponseItemFixture: DiscoveredJob = {
...responseItemFixture1,
escrow_address: ESCROW_ADDRESS1,
created_at: responseItemFixture1.created_at ?? '',
job_description: JOB_DESCRIPTION,
reward_amount: '1',
reward_token: REWARD_TOKEN_HMT,
updated_at: '2025-03-18T01:00:00.000Z',
};
export const responseFixture: JobsDiscoveryResponse = {
results: responseItemsFixture,
page: PAGE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,21 @@ import { JobsDiscoveryService } from '../jobs-discovery.service';
import { ExchangeOracleGateway } from '../../../integrations/exchange-oracle/exchange-oracle.gateway';
import { Test, TestingModule } from '@nestjs/testing';
import {
hmtRewardAmountResponseItemFixture,
invalidRewardAmountResponseItemFixture,
jobsDiscoveryParamsCommandFixture,
responseItemsFixture,
responseItemFixture1,
responseItemFixture3,
usdcRewardAmountResponseItemFixture,
validRewardAmountResponseItemFixture,
} from './jobs-discovery.fixtures';
import { EnvironmentConfigService } from '../../../common/config/environment-config.service';
import {
JobDiscoveryFieldName,
JobDiscoverySortField,
SortOrder,
} from '../../../common/enums/global-common';

describe('JobsDiscoveryService', () => {
let service: JobsDiscoveryService;
Expand Down Expand Up @@ -62,5 +71,63 @@ describe('JobsDiscoveryService', () => {
responseItemFixture1,
]);
});

it('should sort reward amounts using human-readable units', async () => {
const command = {
...jobsDiscoveryParamsCommandFixture,
data: {
...jobsDiscoveryParamsCommandFixture.data,
fields: [
JobDiscoveryFieldName.RewardAmount,
JobDiscoveryFieldName.RewardToken,
],
sort: SortOrder.DESC,
sortField: JobDiscoverySortField.REWARD_AMOUNT,
},
};

jest
.spyOn(service as any, 'getCachedJobs')
.mockReturnValue([
hmtRewardAmountResponseItemFixture,
usdcRewardAmountResponseItemFixture,
]);

const result = await service.processJobsDiscovery(command);

expect(result.results).toEqual([
usdcRewardAmountResponseItemFixture,
hmtRewardAmountResponseItemFixture,
]);
});

it('should use zero for invalid reward amounts', async () => {
const command = {
...jobsDiscoveryParamsCommandFixture,
data: {
...jobsDiscoveryParamsCommandFixture.data,
fields: [
JobDiscoveryFieldName.RewardAmount,
JobDiscoveryFieldName.RewardToken,
],
sort: SortOrder.DESC,
sortField: JobDiscoverySortField.REWARD_AMOUNT,
},
};

jest
.spyOn(service as any, 'getCachedJobs')
.mockReturnValue([
invalidRewardAmountResponseItemFixture,
validRewardAmountResponseItemFixture,
]);

const result = await service.processJobsDiscovery(command);

expect(result.results).toEqual([
validRewardAmountResponseItemFixture,
invalidRewardAmountResponseItemFixture,
]);
});
});
});
2 changes: 1 addition & 1 deletion packages/apps/job-launcher/client/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"@mui/icons-material": "^7.3.8",
"@mui/lab": "^7.0.0-beta.17",
"@mui/material": "^5.16.7",
"@mui/system": "^7.3.9",
"@mui/system": "^9.0.1",
"@mui/x-date-pickers": "^9.2.0",
"@reduxjs/toolkit": "^2.5.0",
"@stripe/react-stripe-js": "^3.0.0",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ export enum FortuneJobType {

export enum MarketingJobType {
SOCIAL_MEDIA_PROMOTION = 'social_media_promotion',
SOCIAL_MEDIA_ENGAGEMENT = 'social_media_engagement',
}

export enum CvatJobType {
Expand Down
Loading
Loading