Описание изменений

This commit is contained in:
2025-02-19 12:36:38 +03:00
parent b56e6b5e46
commit 7cb967138d
20 changed files with 1886 additions and 297 deletions

View File

@@ -3,103 +3,24 @@ import App from './App.vue';
import { createAppKit } from '@reown/appkit/vue';
import { EthersAdapter } from '@reown/appkit-adapter-ethers';
import { sepolia } from '@reown/appkit/networks';
import { createSIWEConfig, formatMessage } from '@reown/appkit-siwe';
import config from './config'; // Импортируем конфигурацию
// Определяем базовый URL для API
const BASE_URL = 'http://localhost:3000';
// 1. Get projectId
const projectId = '9a6515f7259ebccd149fd53341e01e6b';
// 2. Create SIWE config
const siweConfig = createSIWEConfig({
getMessageParams: async () => ({
domain: window.location.host,
uri: window.location.origin,
chains: [11155111], // Sepolia chainId
statement: 'Подпишите это сообщение для входа в DApp for Business. Это безопасно и не требует оплаты.',
}),
createMessage: ({ address, ...args }) => formatMessage(args, address),
getNonce: async () => {
try {
const res = await fetch(`${BASE_URL}/nonce`, {
method: 'GET',
credentials: 'include',
headers: {
'Accept': 'text/plain'
}
});
if (!res.ok) throw new Error('Failed to get nonce');
return await res.text();
} catch (error) {
console.error('Ошибка получения nonce:', error);
throw error;
}
const appKit = createAppKit({
adapters: [new EthersAdapter()],
projectId: config.ethereum.projectId,
networks: [sepolia],
defaultNetwork: sepolia,
metadata: config.metadata,
features: {
analytics: true
},
getSession: async () => {
try {
const res = await fetch(`${BASE_URL}/session`, {
method: 'GET',
credentials: 'include',
headers: {
'Accept': 'application/json'
}
});
if (!res.ok) return null;
return await res.json();
} catch (error) {
console.error('Ошибка получения сессии:', error);
return null;
}
},
verifyMessage: async ({ message, signature }) => {
try {
const res = await fetch(`${BASE_URL}/verify`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
body: JSON.stringify({ message, signature }),
credentials: 'include'
});
return res.ok;
} catch (error) {
console.error('Ошибка верификации:', error);
return false;
}
},
signOut: async () => {
try {
await fetch(`${BASE_URL}/signout`, {
method: 'GET',
credentials: 'include'
});
} catch (error) {
console.error('Ошибка выхода:', error);
}
themeMode: 'light', // Добавляем светлую тему
themeVariables: {
'--w3m-color-mix': '#00BB7F',
'--w3m-color-mix-strength': 40
}
});
// 3. Create AppKit instance
createAppKit({
adapters: [new EthersAdapter()],
networks: [sepolia],
projectId,
metadata: {
name: 'DApp for Business',
description: 'Smart Contract Management DApp',
url: window.location.origin,
icons: ['https://avatars.githubusercontent.com/u/37784886']
},
defaultNetwork: sepolia,
features: {
analytics: true,
connectMethodsOrder: ['wallet', 'email', 'social'],
autoConnect: false
},
siweConfig
});
const app = createApp(App);
app.use(appKit); // Подключаем AppKit как плагин
app.mount('#app');