OSDN Git Service

fix: change the sentry dsn
[bytom/Byone.git] / src / prompt.js
1 import './ga.js'
2 import Vue from 'vue'
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';
9
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';
28
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";
36
37 import { updateLockTime, isNeedLock } from '@/models/lock'
38
39 store.dispatch(Actions.LOAD_BYTOM).then(() => {
40   Vue.use(VueI18n)
41   const i18n = new VueI18n({
42     fallbackLocale: 'en',
43     locale: getLanguage(store.getters.language),
44     messages
45   })
46   Vue.use(Vuelidate)
47   Vue.use(InfiniteLoading)
48   Vue.use(i18n)
49   Vue.use(VueRouter)
50   Vue.use(SelectionPage)
51   Vue.use(Header)
52   Vue.use(Footer)
53   Vue.use(Loading)
54   Vue.use(BackButton)
55   Vue.use(Dialog, i18n)
56   Vue.use(Toast, i18n)
57   Vue.component('success', Success)
58   Vue.component('menu-bar', Menubar)
59   Vue.component('v-select', vSelect)
60   Vue.component('modal-passwd', ModalPasswd)
61
62
63   Vue.filter('moment', function(value, formatString) {
64     formatString = formatString || 'YYYY-MM-DD HH:mm:ss'
65     return moment(value * 1000).format(formatString)
66   })
67   Vue.prototype.$vuescrollConfig = {
68     mode: 'native',
69     sizeStrategy: 'percent',
70     detectResize: true,
71     bar: {
72       keepShow: true,
73       background: '#c9c9c9'
74     }
75   }
76
77   apis.storage.onChanged.addListener(function(changes, namespace) {
78     for (let key in changes) {
79       if(key === 'bytom'){
80         const newNetwork = changes[key].newValue.settings.network
81         if(newNetwork !== changes[key].oldValue.settings.network){
82           account.setupNet(`${newNetwork}${store.getters.netType}`)
83         }
84
85         store.dispatch(Actions.LOAD_BYTOM)
86       }
87     }
88   });
89
90   Sentry.init({
91     dsn: "https://f5d345e069fe4d0a9e4509ff31c8862c@sentry.8btc-ops.com/14",
92     release: "byone@" + process.env.npm_package_version,
93     integrations: [
94       new VueIntegration({
95         Vue,
96         tracing: true
97       }),
98       new Integrations.BrowserTracing()
99     ],
100     tracesSampleRate: 1
101   });
102
103   Sentry.configureScope(function(scope) {
104     scope.setUser({ id: store.getters.clientId });
105   });
106
107   account.setupNet(`${store.getters.net}${store.getters.netType}`)
108
109   store.watch(
110     (state, getters) => getters.netType,
111     (newValue, oldValue) => {
112       if(newValue !== oldValue){
113         account.setupNet(`${store.getters.net}${store.getters.netType}`)
114       }
115     },
116   );
117
118   getDomains().then(({domains, domainMeta})=>{
119     const _bytom = store.state.bytom.clone()
120
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)
125       }
126   })
127
128   Vue.filter('moment', function(value, formatString) {
129     formatString = formatString || 'YYYY-MM-DD HH:mm:ss'
130     return moment(value * 1000).format(formatString)
131   })
132
133   const RouterConfig = {
134     routes: Routers
135   }
136   const router = new VueRouter(RouterConfig)
137   router.beforeEach((to, from, next) => {
138     // wallet init
139
140     if (!to.meta.nolock) {
141       if (store.getters.currentAccount && isNeedLock()) {
142         next({ name: 'lock', query: { to: to.name } })
143         return
144       } 
145       updateLockTime()
146     }
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 });
151       return
152     }
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 });
157       return
158     }
159
160     next()
161   })
162   new Vue({
163     el: '#app',
164     i18n: i18n,
165     router: router,
166     store,
167     render: h => h(ViewBase)
168   })
169 });