44 lines
1.3 KiB
TypeScript
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')
|
|
}
|
|
}
|
|
}
|