BastyonSdk Reference
Содержание
Установка
Подключение через CDN
<script src="https://bastyon.com/js/lib/apps/sdk.js"></script>Основы работы
Инициализация
const sdk = new BastyonSdk();
// Инициализация SDK
await sdk.init();
// Сообщаем платформе о готовности
sdk.emit('loaded');События
BastyonSdk поддерживает систему событий для взаимодействия с платформой.
| Событие | Описание |
|---|---|
| block | Изменения в блокчейне |
| state | Изменение состояния приложения |
| action | Действия пользователя |
| balance | Обновления баланса |
| locale | Изменение локали |
| theme | Изменение темы |
| changestate | Изменение состояния |
API Reference
Основные методы
init()
Инициализирует SDK.
Возвращает:
Promise<{
id: string; // ID приложения
name: string; // Название
version: string; // Версия
theme: string; // Тема
margintop: number; // Отступ сверху
production: boolean; // Режим
project: object; // Конфигурация
}>emit(event, data?)
Отправляет событие в приложение.
Параметры:
event: string- Название событияdata?: object- Данные события (опционально)
sdk.emit('changestate', { value: 'newState', replace: true });on(event, callback)
Подписывается на событие.
Параметры:
event: string- Название событияcallback: (data: any) => void- Обработчик
sdk.on('balance', (balance) => {
console.log('Новый баланс:', balance);
});off(event, callback)
Отписывается от события.
Параметры:
event: string- Название событияcallback: Function- Обработчик для удаления
Методы get
get.account()
Требует разрешение:
account
Получает информацию об аккаунте.
Возвращает:
Promise<{
address: string; // Адрес
signature: string; // Подпись
status?: string; // Статус
}>get.balance()
Требует разрешение:
account
Получает баланс пользователя.
Возвращает: Promise<number>
get.zaddress()
Требует разрешение:
zaddress
Получает Z-адрес пользователя.
Возвращает: Promise<string>
get.geolocation()
Требует разрешение:
geolocation
Получает координаты.
Возвращает:
Promise<{
latitude: number; // Широта
longitude: number; // Долгота
}>Методы permissions
permissions.check({ permission })
Проверяет наличие разрешения.
Параметры:
permission: string- Название разрешения
Возвращает: Promise<boolean>
permissions.request(permissions)
Запрашивает разрешения.
Параметры:
permissions: string[]- Массив разрешений
Возвращает: Promise<void>
Методы open
open.post(txid)
Открывает пост.
Параметры:
txid: string- ID поста
open.donation(receiver)
Требует разрешения:
payment,account
Открывает форму доната.
Параметры:
receiver: string- Адрес получателя
Методы barteron
barteron.account(data)
Требует разрешение:
account
Управляет аккаунтом Barteron.
Параметры:
data: object- Данные аккаунта
barteron.offer(data)
Требует разрешение:
account
Создает предложение.
Параметры:
data: object- Данные предложения
barteron.removeOffer(data)
Требует разрешение:
account
Удаляет предложение.
Параметры:
data: object- Данные для удаления
Методы images
images.upload(data)
Загружает изображение.
Параметры:
data: { image: string }- Изображение в base64
Возвращает: Promise<string> - URL загруженного изображения
Методы chat
chat.getOrCreateRoom(params)
Требует разрешение:
chat
Создает или получает комнату чата.
Параметры:
{
users: string[]; // ID пользователей
parameters?: object; // Дополнительные параметры
}chat.send(params)
Требует разрешение:
chat
Отправляет сообщение.
Параметры:
{
roomid: string; // ID комнаты
content: { // Содержимое
text: string; // Текст сообщения
[key: string]: any; // Дополнительные данные
}
}chat.openRoom(roomid)
Требует разрешение:
chat
Открывает комнату чата.
Параметры:
roomid: string- ID комнаты
Методы helpers
helpers.alert(message)
Требует разрешение:
messaging
Показывает уведомление.
Параметры:
message: string- Текст уведомления
helpers.opensettings()
Открывает настройки приложения.
helpers.registration()
Открывает форму регистрации.
helpers.userstate()
Получает состояние пользователя.
Возвращает: Promise<object>
helpers.share(data)
Делится контентом.
Параметры:
{
path: string; // Путь
sharing: { // Параметры шаринга
title: string; // Заголовок
[key: string]: any; // Дополнительные параметры
}
}Типы данных
ApplicationInfo
interface ApplicationInfo {
id: string;
name: string;
version: string;
theme: string;
margintop: number;
production: boolean;
project: ProjectConfig;
}AccountInfo
interface AccountInfo {
address: string;
signature: string;
status?: string;
}ChatRoom
interface ChatRoom {
id: string;
users: string[];
lastMessage?: {
content: any;
timestamp: number;
};
}Обработка ошибок
SDK использует Promise для асинхронных операций. Все ошибки следует обрабатывать через .catch():
sdk.get.account()
.then(account => {
// Обработка успешного результата
})
.catch(error => {
// Обработка ошибки
console.error('Ошибка:', error.message);
});Лучшие практики
Инициализация:
async function initializeApp() { try { const sdk = new BastyonSdk(); await sdk.init(); sdk.emit('loaded'); } catch (error) { console.error('Ошибка инициализации:', error); } }Проверка разрешений:
async function checkAndRequestPermissions() { const required = ['account', 'payment']; for (const permission of required) { const granted = await sdk.permissions.check({ permission }); if (!granted) { await sdk.permissions.request([permission]); } } }Обработка событий:
function setupEventListeners() { sdk.on('balance', handleBalanceChange); sdk.on('theme', handleThemeChange); // Очистка при размонтировании return () => { sdk.off('balance', handleBalanceChange); sdk.off('theme', handleThemeChange); }; }
