|
|
|
// import {call_api} from "@/api";
|
|
|
|
|
|
|
|
import {Zone} from "@/zone";
|
|
|
|
import {Collection} from "@/collection";
|
|
|
|
|
|
|
|
let ex_collection = () => new Collection("example.ton", "Example collection");
|
|
|
|
|
|
|
|
export class Result {
|
|
|
|
domain: string;
|
|
|
|
buy_price?: number;
|
|
|
|
auction_price?: number;
|
|
|
|
owner?: string;
|
|
|
|
collection_required: Collection | null;
|
|
|
|
|
|
|
|
constructor(domain: string, buy_price?: number, auction_price?: number, owner?: string, collection_required: Collection | null = null) {
|
|
|
|
this.domain = domain;
|
|
|
|
this.buy_price = buy_price;
|
|
|
|
this.auction_price = auction_price;
|
|
|
|
this.owner = owner;
|
|
|
|
this.collection_required = collection_required;
|
|
|
|
}
|
|
|
|
|
|
|
|
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(200);
|
|
|
|
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')
|
|
|
|
];
|
|
|
|
}
|
|
|
|
|
|
|
|
function parse_zone(domain: string) {
|
|
|
|
// extract the zone from the domain (e.g. example.ton from 123.example.ton)
|
|
|
|
return domain.split('.').slice(1).join('.');
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function get_domain_result(domain: string) {
|
|
|
|
// return await call_api('get/' + domain);
|
|
|
|
await sleep(100);
|
|
|
|
if (domain === 'test.ton') {
|
|
|
|
return new Result(domain);
|
|
|
|
}
|
|
|
|
// if (domain.split('.')[0] === 'owned') {
|
|
|
|
// return new Result(domain, 5, 3, '123');
|
|
|
|
// }
|
|
|
|
console.log(domain);
|
|
|
|
console.log(domain.split('.'))
|
|
|
|
let exc = ex_collection();
|
|
|
|
if (parse_zone(domain) === 'example.ton') {
|
|
|
|
return new Result(domain, 5, 3, undefined, exc);
|
|
|
|
}
|
|
|
|
return new Result(domain, 5, 3);
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function get_zones() {
|
|
|
|
// return await call_api('zones');
|
|
|
|
await sleep(10);
|
|
|
|
return [
|
|
|
|
new Zone("example.ton", 3, 5, ex_collection()),
|
|
|
|
new Zone("agorata.ton", 3, 5),
|
|
|
|
new Zone("testtesttest.ton", 1, 1)];
|
|
|
|
}
|
|
|
|
|
|
|
|
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 {
|
|
|
|
// todo: use tonapi to run dnsresolve on the address (or move the task to the backend) - domains don't work well in links
|
|
|
|
let link = `ton://transfer/${this.address}?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(), 'b/' + res.domain, res.buy_price!);
|
|
|
|
}
|