|
|
@ -1,13 +1,17 @@ |
|
|
|
import {createApp} from 'vue' |
|
|
|
import { createApp } from "vue"; |
|
|
|
import App from './App.vue' |
|
|
|
import App from "./App.vue"; |
|
|
|
import router from './router' |
|
|
|
import router from "./router"; |
|
|
|
import {createStore} from 'vuex' |
|
|
|
import { createStore } from "vuex"; |
|
|
|
import TonConnect from '@tonconnect/sdk'; |
|
|
|
import TonConnect from "@tonconnect/sdk"; |
|
|
|
import {isWalletInfoInjected} from '@tonconnect/sdk'; |
|
|
|
import { isWalletInfoInjected } from "@tonconnect/sdk"; |
|
|
|
import type {WalletInfo, WalletInfoInjected, WalletInfoRemote} from '@tonconnect/sdk'; |
|
|
|
import type { |
|
|
|
import './assets/main.css' |
|
|
|
WalletInfo, |
|
|
|
|
|
|
|
WalletInfoInjected, |
|
|
|
|
|
|
|
WalletInfoRemote, |
|
|
|
|
|
|
|
} from "@tonconnect/sdk"; |
|
|
|
|
|
|
|
import "./assets/main.css"; |
|
|
|
|
|
|
|
|
|
|
|
const app = createApp(App) |
|
|
|
const app = createApp(App); |
|
|
|
|
|
|
|
|
|
|
|
class State { |
|
|
|
class State { |
|
|
|
connector: TonConnect; |
|
|
|
connector: TonConnect; |
|
|
@ -15,7 +19,9 @@ class State { |
|
|
|
initialization: Promise<void>; |
|
|
|
initialization: Promise<void>; |
|
|
|
|
|
|
|
|
|
|
|
constructor() { |
|
|
|
constructor() { |
|
|
|
this.connector = new TonConnect({manifestUrl: 'https://front.agorata.io/tonconnect-manifest.json'}); |
|
|
|
this.connector = new TonConnect({ |
|
|
|
|
|
|
|
manifestUrl: "https://front.agorata.io/tonconnect-manifest.json", |
|
|
|
|
|
|
|
}); |
|
|
|
this.initialization = this.initialize(); |
|
|
|
this.initialization = this.initialize(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -27,31 +33,37 @@ class State { |
|
|
|
|
|
|
|
|
|
|
|
const store = createStore({ |
|
|
|
const store = createStore({ |
|
|
|
state() { |
|
|
|
state() { |
|
|
|
return new State() |
|
|
|
return new State(); |
|
|
|
}, |
|
|
|
}, |
|
|
|
mutations: { |
|
|
|
mutations: { |
|
|
|
set_connector(state, connector) { |
|
|
|
set_connector(state, connector) { |
|
|
|
state.connector = connector |
|
|
|
state.connector = connector; |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
}, |
|
|
|
getters: { |
|
|
|
getters: { |
|
|
|
is_connected(state) { |
|
|
|
is_connected(state) { |
|
|
|
return state.connector.connected; |
|
|
|
return state.connector.connected; |
|
|
|
}, |
|
|
|
}, |
|
|
|
address(state) { |
|
|
|
address(state) { |
|
|
|
if (state.connector.account !== null && state.connector.account.address !== undefined) { |
|
|
|
if ( |
|
|
|
|
|
|
|
state.connector.account !== null && |
|
|
|
|
|
|
|
state.connector.account.address !== undefined |
|
|
|
|
|
|
|
) { |
|
|
|
return state.connector.account.address; |
|
|
|
return state.connector.account.address; |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
return ''; |
|
|
|
return ""; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
connector(state) { |
|
|
|
|
|
|
|
return state.connector; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
}, |
|
|
|
actions: { |
|
|
|
actions: { |
|
|
|
async connect_embedded({ state }) { |
|
|
|
async connect_embedded({ state }) { |
|
|
|
const walletsList = await TonConnect.getWallets(); |
|
|
|
const walletsList = await TonConnect.getWallets(); |
|
|
|
let connector = state.connector; |
|
|
|
let connector = state.connector; |
|
|
|
const embeddedWallet = walletsList.find( |
|
|
|
const embeddedWallet = walletsList.find( |
|
|
|
wallet => isWalletInfoInjected(wallet) && wallet.embedded |
|
|
|
(wallet) => isWalletInfoInjected(wallet) && wallet.embedded |
|
|
|
) as WalletInfoInjected; |
|
|
|
) as WalletInfoInjected; |
|
|
|
console.log(walletsList, embeddedWallet); |
|
|
|
console.log(walletsList, embeddedWallet); |
|
|
|
|
|
|
|
|
|
|
@ -62,7 +74,7 @@ const store = createStore({ |
|
|
|
/* Connect embedded wallet if it exists, otherwise get connection url for a QR code unless we're already connected */ |
|
|
|
/* Connect embedded wallet if it exists, otherwise get connection url for a QR code unless we're already connected */ |
|
|
|
async get_connection_url({ state }): Promise<string | null> { |
|
|
|
async get_connection_url({ state }): Promise<string | null> { |
|
|
|
await state.initialization; |
|
|
|
await state.initialization; |
|
|
|
await this.dispatch('connect_embedded'); |
|
|
|
await this.dispatch("connect_embedded"); |
|
|
|
if (state.connector.connected) { |
|
|
|
if (state.connector.connected) { |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
} |
|
|
|
} |
|
|
@ -76,25 +88,25 @@ const store = createStore({ |
|
|
|
let wallet_r = wallet as WalletInfoRemote; |
|
|
|
let wallet_r = wallet as WalletInfoRemote; |
|
|
|
let wallet_desc = { |
|
|
|
let wallet_desc = { |
|
|
|
bridgeUrl: wallet_r.bridgeUrl, |
|
|
|
bridgeUrl: wallet_r.bridgeUrl, |
|
|
|
universalLink: wallet_r.universalLink |
|
|
|
universalLink: wallet_r.universalLink, |
|
|
|
} |
|
|
|
}; |
|
|
|
let res = await state.connector.connect(wallet_desc); |
|
|
|
let res = await state.connector.connect(wallet_desc); |
|
|
|
if (typeof res === 'string') { |
|
|
|
if (typeof res === "string") { |
|
|
|
return res; |
|
|
|
return res; |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (e) { |
|
|
|
} catch (e) { |
|
|
|
console.log(wallet, e) |
|
|
|
console.log(wallet, e); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
}, |
|
|
|
}, |
|
|
|
async disconnect({ state }) { |
|
|
|
async disconnect({ state }) { |
|
|
|
await state.connector.disconnect(); |
|
|
|
await state.connector.disconnect(); |
|
|
|
} |
|
|
|
}, |
|
|
|
} |
|
|
|
}, |
|
|
|
}) |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
app.use(router) |
|
|
|
app.use(router); |
|
|
|
app.use(store) |
|
|
|
app.use(store); |
|
|
|
|
|
|
|
|
|
|
|
app.mount('#app') |
|
|
|
app.mount("#app"); |
|
|
|