React frontend for Agorata
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.2 KiB

// import {call_api} from "@/api";
export class Result {
domain: string;
buy_price?: number;
auction_price?: number;
owner?: string;
constructor(domain: string, buy_price?: number, auction_price?: number, owner?: string) {
this.domain = domain;
this.buy_price = buy_price;
this.auction_price = auction_price;
this.owner = owner;
}
getRouteParams(): any {
return {
domain_init: /* domain up to . */ this.domain.split('.')[0],
domain: /* domain up to . */ this.domain.split('.')[0],
zone: /* domain after . */ this.domain.split('.').slice(1).join('.')
}
}
canAuction(): boolean {
return this.auction_price !== undefined && this.auction_price !== null;
}
canBuy(): boolean {
return this.buy_price !== undefined && this.buy_price !== null;
}
zone(): string {
return this.domain.split('.').slice(1).join('.');
}
}
const sleep = (milliseconds: number) => {
return new Promise(resolve => setTimeout(resolve, milliseconds))
}
export async function get_search_results(query: string) {
// return await call_api('find/' + query);
await sleep(1000);
return [
new Result(query + '.ton', 5, 3),
new Result(query + '.ton', 1),
new Result(query + '.ton', undefined, 2),
new Result(query + '.ton', undefined, undefined, '123')
];
}
export async function get_domain_result(domain: string) {
// return await call_api('get/' + domain);
await sleep(1000);
if (domain === 'test.ton') {
return new Result(domain);
}
return new Result(domain, 5, 3);
}
export class TonLink {
address: string;
sum?: number;
message: string;
constructor(address: string, message: string, sum?: number) {
this.address = address;
this.sum = sum;
this.message = message;
}
getLink(): string {
let link = `ton://${this.address}/transfer?message=${this.message}`;
if (this.sum !== undefined) {
link += `&amount=${this.sum}`;
}
return link;
}
}
// Get the link for buying a domain
export function get_ton_link(res: Result) {
return new TonLink(res.zone(), res.buy_price!, 'b/' + res.domain);
}