3 import moment from 'moment'
4 import VueI18n from 'vue-i18n'
5 import VueRouter from 'vue-router'
6 import Loading from 'vue-loading-overlay'
7 import 'vue-loading-overlay/dist/vue-loading.css'
8 import InfiniteLoading from 'vue-infinite-loading';
10 import {store} from './store/store'
11 import * as Actions from './store/constants'
12 import Routers from './router'
13 import ViewBase from '@/views/viewBase'
14 import Dialog from '@/components/dialog'
15 import Header from '@/components/header'
16 import Footer from '@/components/footer'
17 import vSelect from '@/components/select'
18 import SelectionPage from '@/components/selection-page'
19 import BackButton from '@/components/backButton'
20 import Success from '@/components/Success.vue'
21 import Menubar from '@/components/MenubarComponent.vue'
22 import ModalPasswd from '@/components/modal-passwd.vue'
23 import Toast from '@/components/toast'
24 import messages, { getLanguage } from '@/assets/language'
25 import '@/assets/style.css'
26 import Vuelidate from "vuelidate";
27 import {apis} from '@/utils/BrowserApis';
29 import account from "@/models/account";
30 import {getDomains} from '@/utils/utils.js'
31 import _ from 'lodash'
32 import * as Sentry from "@sentry/browser";
33 import { Vue as VueIntegration } from "@sentry/integrations";
34 import { Integrations } from '@sentry/tracing';
35 import BytomObj from "./utils/Bytom";
37 import { updateLockTime, isNeedLock } from '@/models/lock'
39 store.dispatch(Actions.LOAD_BYTOM).then(() => {
41 const i18n = new VueI18n({
43 locale: getLanguage(store.getters.language),
47 Vue.use(InfiniteLoading)
50 Vue.use(SelectionPage)
57 Vue.component('success', Success)
58 Vue.component('menu-bar', Menubar)
59 Vue.component('v-select', vSelect)
60 Vue.component('modal-passwd', ModalPasswd)
63 Vue.filter('moment', function(value, formatString) {
64 formatString = formatString || 'YYYY-MM-DD HH:mm:ss'
65 return moment(value * 1000).format(formatString)
67 Vue.prototype.$vuescrollConfig = {
69 sizeStrategy: 'percent',
77 apis.storage.onChanged.addListener(function(changes, namespace) {
78 for (let key in changes) {
80 const newNetwork = changes[key].newValue.settings.network
81 if(newNetwork !== changes[key].oldValue.settings.network){
82 account.setupNet(`${newNetwork}${store.getters.netType}`)
85 store.dispatch(Actions.LOAD_BYTOM)
91 dsn: "https://f5d345e069fe4d0a9e4509ff31c8862c@sentry.8btc-ops.com/14",
92 release: "byone@" + process.env.npm_package_version,
98 new Integrations.BrowserTracing()
103 Sentry.configureScope(function(scope) {
104 scope.setUser({ id: store.getters.clientId });
107 account.setupNet(`${store.getters.net}${store.getters.netType}`)
110 (state, getters) => getters.netType,
111 (newValue, oldValue) => {
112 if(newValue !== oldValue){
113 account.setupNet(`${store.getters.net}${store.getters.netType}`)
118 getDomains().then(({domains, domainMeta})=>{
119 const _bytom = store.state.bytom.clone()
121 if(!domains.every(v => _bytom.settings.domains.includes(v)) || _.isEmpty(_bytom.settings.domainsMeta)){
122 _bytom.settings.domains = Array.from(new Set(_bytom.settings.domains.concat(domains)))
123 _bytom.settings.domainsMeta = Object.assign(_bytom.settings.domainsMeta, domainMeta)
124 store.dispatch(Actions.UPDATE_STORED_BYTOM, _bytom)
128 Vue.filter('moment', function(value, formatString) {
129 formatString = formatString || 'YYYY-MM-DD HH:mm:ss'
130 return moment(value * 1000).format(formatString)
133 const RouterConfig = {
136 const router = new VueRouter(RouterConfig)
137 router.beforeEach((to, from, next) => {
140 if (!to.meta.nolock) {
141 if (store.getters.currentAccount && isNeedLock()) {
142 next({ name: 'lock', query: { to: to.name } })
147 if (!(store.getters.currentAccount) && to.name == 'home') {
148 next({ name: 'welcome' })
149 let newURL = `${apis.runtime.getURL('pages/prompt.html')}#/welcome`;
150 chrome.tabs.create({ url: newURL });
153 if (!(store.getters.currentAccount && store.getters.vMnemonic) && to.name == 'home') {
154 next({ name: 'welcome-verify-mnemonic' })
155 let newURL = `${apis.runtime.getURL('pages/prompt.html')}#/mnemonic`;
156 chrome.tabs.create({ url: newURL });
167 render: h => h(ViewBase)