Aleksandr Bautin 11 months ago
parent
commit
59e8a2b7a2
No known key found for this signature in database
GPG Key ID: 9B3364A12DFE9211
  1. 2
      src/api.ts
  2. 3
      src/components/Header.vue
  3. 4
      src/components/SiteSettings.vue
  4. 68
      src/main.ts
  5. 6
      src/views/Explore.vue

2
src/api.ts

@ -15,7 +15,7 @@ export class Api {
public readonly tonviewer_url: string; public readonly tonviewer_url: string;
constructor() { constructor() {
if (process.env.NODE_ENV === "development" && false) { if (process.env.NODE_ENV === "development") {
this.api_url = "http://localhost:5170/"; this.api_url = "http://localhost:5170/";
this.ton_api_url = "https://testnet.tonapi.io/v2/"; this.ton_api_url = "https://testnet.tonapi.io/v2/";
this.tonscan_url = "https://testnet.tonscan.org/"; this.tonscan_url = "https://testnet.tonscan.org/";

3
src/components/Header.vue

@ -66,6 +66,9 @@ export default {
return address.slice(0, 5) + "..." + address.slice(-4); return address.slice(0, 5) + "..." + address.slice(-4);
}, },
}, },
async mounted() {
this.$store.getters.connector.restoreConnection();
},
}; };
</script> </script>

4
src/components/SiteSettings.vue

@ -175,13 +175,15 @@ export default {
constructor_params: { constructor_params: {
handler: function (newVal) { handler: function (newVal) {
this.$emit("change-constructor", newVal); this.$emit("change-constructor", newVal);
this.constructor_params.template_id = this.activeTemplateName;
}, },
deep: true, deep: true,
}, },
saved_constructor_params: { saved_constructor_params: {
handler: function (newVal, oldVal) { handler: function (newVal, oldVal) {
if (newVal === oldVal) return; if (newVal === oldVal) return;
this.constructor_params = newVal.copy(); // this.constructor_params.template_id = this.activeTemplateName;
// this.constructor_params = newVal.copy();
this.contacts = newVal.contacts ? Object.entries(newVal.contacts) : []; this.contacts = newVal.contacts ? Object.entries(newVal.contacts) : [];
}, },
deep: true, deep: true,

68
src/main.ts

@ -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");

6
src/views/Explore.vue

@ -94,11 +94,12 @@
@save-constructor="saveSiteConstr()" @save-constructor="saveSiteConstr()"
@select-template="selectTemplate" @select-template="selectTemplate"
@change="site_rec = $event" @change="site_rec = $event"
@change-constructor="constructor_params = $event"
:template-id="constructor_params.template_id" :template-id="constructor_params.template_id"
:site-changed="siteChanged" :site-changed="siteChanged"
:signing-site="signingSite" :signing-site="signingSite"
@change-constructor="changeConstructor"
/> />
<!-- @change-constructor="changeConstructor" -->
</div> </div>
<div v-else> <div v-else>
This domain is not owned. This domain is not owned.
@ -331,6 +332,9 @@ export default {
useMyWallet() { useMyWallet() {
this.wallet_rec = this.$store.getters.address; this.wallet_rec = this.$store.getters.address;
}, },
changeConstructor(evt) {
this.constructor_params = evt;
},
}, },
watch: { watch: {
records: function (val) { records: function (val) {

Loading…
Cancel
Save