stargaze-studio/contracts/splits/messages/query.ts
2023-03-19 21:10:11 +03:00

44 lines
1.3 KiB
TypeScript

import type { SplitsInstance } from '../contract'
export type QueryType = typeof QUERY_TYPES[number]
export const QUERY_TYPES = ['admin', 'group', 'member', 'list_members'] as const
export interface QueryListItem {
id: QueryType
name: string
description?: string
}
export const QUERY_LIST: QueryListItem[] = [
{ id: 'list_members', name: 'Query Members', description: 'View the group members' },
{ id: 'member', name: 'Query Member Weight', description: 'Query the weight of a member in the group' },
{ id: 'admin', name: 'Query Admin', description: 'View the splits contract admin' },
{ id: 'group', name: 'Query Group Contract Address', description: 'View the group contract address' },
]
export interface DispatchQueryProps {
messages: SplitsInstance | undefined
type: QueryType
address: string
startAfter?: string
limit?: number
}
export const dispatchQuery = (props: DispatchQueryProps) => {
const { messages, type, address, startAfter, limit } = props
switch (type) {
case 'list_members':
return messages?.listMembers(startAfter, limit)
case 'admin':
return messages?.getAdmin()
case 'member':
return messages?.getMemberWeight(address)
case 'group':
return messages?.getGroup()
default: {
throw new Error('unknown query type')
}
}
}