From 54ffab279236c72ef2d77ec8161d183fa15904d7 Mon Sep 17 00:00:00 2001 From: Kuduzow Akhmad Date: Wed, 22 Feb 2023 12:31:11 +0300 Subject: [PATCH] feat: add pagination support (#57) Co-authored-by: kuduzow Co-authored-by: Aleksandr Kraiz --- package.json | 2 +- src/services/ReferralSystem/index.ts | 21 +++++---- .../schemas/rewardsMappingSchema.ts | 46 +++++++++++-------- 3 files changed, 40 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index cfba43a..eb4841b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@orionprotocol/sdk", - "version": "0.17.18", + "version": "0.17.19-rc.0", "description": "Orion Protocol SDK", "main": "./lib/esm/index.js", "module": "./lib/esm/index.js", diff --git a/src/services/ReferralSystem/index.ts b/src/services/ReferralSystem/index.ts index 3a6c81e..790e4d9 100644 --- a/src/services/ReferralSystem/index.ts +++ b/src/services/ReferralSystem/index.ts @@ -85,15 +85,20 @@ class ReferralSystem { }), ); - getRewardsMapping = (referralAddress: string) => fetchWithValidation( - `${this.apiUrl}/referer/view/rewards-mapping`, - rewardsMappingSchema, - { - headers: { - referral: referralAddress, + getRewardsMapping = ( + referralAddress: string, + page = 1, + positionsPerPage = 10 + ) => + fetchWithValidation( + `${this.apiUrl}/referer/view/rewards-mapping?n_per_page=${positionsPerPage}&page=${page}`, + rewardsMappingSchema, + { + headers: { + referral: referralAddress, + }, }, - }, - ); + ); createReferralLink = (payload: CreateLinkPayloadType, signature: SignatureType) => fetchWithValidation( `${this.apiUrl}/referer/create`, diff --git a/src/services/ReferralSystem/schemas/rewardsMappingSchema.ts b/src/services/ReferralSystem/schemas/rewardsMappingSchema.ts index 916879d..984a120 100644 --- a/src/services/ReferralSystem/schemas/rewardsMappingSchema.ts +++ b/src/services/ReferralSystem/schemas/rewardsMappingSchema.ts @@ -1,25 +1,31 @@ import { z } from 'zod'; -const rewardsMappingSchema = z.array( - z.object({ - distribution: z.object({ - dist: z.object({ - orion: z.number(), - referers_list: z.array(z.number()), +const rewardsMappingSchema = z.object({ + data: z.array( + z.object({ + distribution: z.object({ + dist: z.object({ + orion: z.number(), + referers_list: z.array(z.number()), + }), + address_to_reward_mapping: z.record(z.string(), z.number()), + ref_offset_to_rewarded_actors: z.record(z.string(), z.string()), + governance_reward_only: z.number(), + total_reward: z.number(), + trade_initiator: z.string(), }), - address_to_reward_mapping: z.record(z.string(), z.number()), - ref_offset_to_rewarded_actors: z.record(z.string(), z.string()), - governance_reward_only: z.number(), - total_reward: z.number(), - trade_initiator: z.string(), - }), - timestamp_ms: z.number(), - block_height: z.number(), - tx_hash: z.string(), - price_feed_meta_info: z - .record(z.string(), z.record(z.string(), z.number())) - .nullable(), - }) -); + timestamp_ms: z.number(), + block_height: z.number(), + tx_hash: z.string(), + price_feed_meta_info: z + .record(z.string(), z.record(z.string(), z.number())) + .nullable(), + }) + ), + pagination_info: z.object({ + c_page: z.number().int().nonnegative(), + t_pages: z.number().int().nonnegative(), + }), +}); export default rewardsMappingSchema;