From b8edde9bc07af142e4fd77cbf5dee480560cd9a6 Mon Sep 17 00:00:00 2001 From: liangping <18786721@qq.com> Date: Sat, 11 Jan 2025 07:53:41 +0800 Subject: [PATCH] support atom one --- src/libs/api/customization/atomone.ts | 68 +++++++++++++++++++++++ src/modules/[chain]/gov/[proposal_id].vue | 2 +- 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 src/libs/api/customization/atomone.ts diff --git a/src/libs/api/customization/atomone.ts b/src/libs/api/customization/atomone.ts new file mode 100644 index 00000000..5e03678c --- /dev/null +++ b/src/libs/api/customization/atomone.ts @@ -0,0 +1,68 @@ +import type{ RequestRegistry } from '@/libs/api/registry' +// import dayjs from 'dayjs' +import { adapter } from '@/libs/api/registry' +import type { GovProposal, PaginatedProposals } from '@/types' + +// which registry is store +export const store = 'name' // name or version +// Blockchain Name +export const name = 'atomone' + +function proposalAdapter(p: any): GovProposal { + if(p) { + if(p.messages && p.messages.length >= 1) p.content = p.messages[0].content || p.messages[0] + //p.proposal_id = p.id + p.final_tally_result = { + yes: p.final_tally_result?.yes_count, + no: p.final_tally_result?.no_count, + no_with_veto: p.final_tally_result?.no_with_veto_count, + abstain: p.final_tally_result?.abstain_count, + } + } + return p +} + +// osmosis custom request +export const requests: Partial = { + // mint_inflation: { + // url: `https://public-osmosis-api.numia.xyz/apr?start_date=${new Date(new Date().getTime() - 186400*1000).toISOString().split('T')[0]}&end_date=${new Date().toISOString().split('T')[0]}`, + // adapter: async (data: any) => { + // const [first] = data + // return {inflation: String(Number(first?.apr|| "0")/100.0)} + // } + // }, + gov_params_voting: { url: '/atomone/gov/v1beta1/params/voting', adapter }, + gov_params_tally: { url: '/atomone/gov/v1beta1/params/tallying', adapter }, + gov_params_deposit: { url: '/atomone/gov/v1beta1/params/deposit', adapter }, + gov_proposals: { url: '/atomone/gov/v1beta1/proposals', adapter: async (source: any): Promise => { + const proposals = source.proposals.map((p:any) => proposalAdapter(p)) + return { + proposals, + pagination: source.pagination + } + }}, + gov_proposals_proposal_id: { + url: '/atomone/gov/v1beta1/proposals/{proposal_id}', + adapter: async (source: any): Promise<{proposal: GovProposal}> => { + return { + proposal: proposalAdapter(source.proposal) + } + }, + }, + gov_proposals_deposits: { + url: '/atomone/gov/v1beta1/proposals/{proposal_id}/deposits', + adapter, + }, + gov_proposals_tally: { + url: '/atomone/gov/v1beta1/proposals/{proposal_id}/tally', + adapter, + }, + gov_proposals_votes: { + url: '/atomone/gov/v1beta1/proposals/{proposal_id}/votes', + adapter, + }, + gov_proposals_votes_voter: { + url: '/atomone/gov/v1beta1/proposals/{proposal_id}/votes/{voter}', + adapter, + }, +} diff --git a/src/modules/[chain]/gov/[proposal_id].vue b/src/modules/[chain]/gov/[proposal_id].vue index 4cf268d2..943f9ebb 100644 --- a/src/modules/[chain]/gov/[proposal_id].vue +++ b/src/modules/[chain]/gov/[proposal_id].vue @@ -396,7 +396,7 @@ function metaItem(metadata: string|undefined): { title: string; summary: string {{ showValidatorName(item.voter) }}