Skip to content
This repository was archived by the owner on May 7, 2021. It is now read-only.

Commit 5008a12

Browse files
authored
Merge pull request #151 from ProgrammingLab/gedorinku/google_analytics
Google Analyticsを入れる
2 parents cc7f2fb + b38448a commit 5008a12

File tree

14 files changed

+55
-22
lines changed

14 files changed

+55
-22
lines changed

.env.development

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
VUE_APP_ACCOUNTS_BASE_URL=http://localhost:3000
2+
VUE_APP_GOOGLE_ANALYTICS_ID=UA-00000000-0

.env.production

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
VUE_APP_ACCOUNTS_BASE_URL=https://accounts.prolab.club
2+
VUE_APP_GOOGLE_ANALYTICS_ID=UA-00000000-0

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ language: node_js
22
node_js:
33
- 'stable'
44

5+
before_install:
6+
- echo $GOOGLE_ANALYTICS_ID > .env.production.local
7+
58
script:
69
- npm run build && npm run lint
710

package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"axios": "^0.18.0",
1313
"rxjs": "^6.4.0",
1414
"vue": "^2.6.10",
15+
"vue-analytics": "^5.16.4",
1516
"vue-meta": "^1.6.0",
1617
"vue-multiselect": "^2.1.4",
1718
"vue-router": "^3.0.6",

src/main.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
import Vue from 'vue';
22
import Meta from 'vue-meta';
33
import VueRx from 'vue-rx';
4+
import VueAnalytics from 'vue-analytics';
45
import App from './App.vue';
56
import router from './router';
67
import store from './store';
78

89
Vue.config.productionTip = false;
910
Vue.use(Meta);
1011
Vue.use(VueRx);
12+
Vue.use(
13+
VueAnalytics, {
14+
id: process.env.VUE_APP_GOOGLE_ANALYTICS_ID,
15+
router,
16+
},
17+
);
1118

1219
new Vue({
1320
router,

src/router.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ const router = new Router({
9898
router.beforeEach(async (to, from, next) => {
9999
store.commit('criticalError/clearError');
100100
if (to.matched.length === 0) {
101-
store.commit('criticalError/createError', {
101+
store.dispatch('criticalError/createError', {
102102
response: {
103103
status: 404,
104104
data: {
@@ -116,7 +116,7 @@ router.beforeEach(async (to, from, next) => {
116116
}
117117

118118
if (to.matched.some(record => record.meta.requiresAdmin) && !store.getters['user/isAdmin']) {
119-
store.commit('criticalError/createError', {
119+
store.dispatch('criticalError/createError', {
120120
response: {
121121
status: 404,
122122
data: {

src/store/modules/achievement/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ export default {
2929
},
3030
/* eslint-enable no-param-reassign */
3131
actions: {
32-
async getAchievements({ commit }, sessionID) {
32+
async getAchievements({ commit, dispatch }, sessionID) {
3333
try {
3434
commit('setAchievements', await achievementClient.getAchievements(sessionID));
3535
} catch (e) {
36-
commit('criticalError/createError', e, { root: true });
36+
dispatch('criticalError/createError', e, { root: true });
3737
}
3838
},
3939
async saveAchievement({ commit, dispatch }, { sessionID, achievement, image }) {
Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { exception } from 'vue-analytics';
2+
13
export default {
24
namespaced: true,
35
state: {
@@ -6,14 +8,9 @@ export default {
68
},
79
/* eslint-disable no-param-reassign */
810
mutations: {
9-
createError(state, error) {
10-
if (!error.response) {
11-
state.number = '';
12-
state.message = 'Connection refused';
13-
return;
14-
}
15-
state.number = error.response.status;
16-
state.message = error.response.data.message || error.response.statusText;
11+
setError(state, { number, message }) {
12+
state.number = number;
13+
state.message = message;
1714
},
1815
clearError(state) {
1916
state.number = null;
@@ -26,4 +23,22 @@ export default {
2623
return state.number !== null || state.message !== null;
2724
},
2825
},
26+
actions: {
27+
createError({ commit }, error) {
28+
if (!error.response) {
29+
const number = '';
30+
const message = 'Connection refused';
31+
exception(message);
32+
commit('setError', { number, message });
33+
return;
34+
}
35+
36+
const number = error.response.status;
37+
const message = error.response.data.message || error.response.statusText;
38+
if (number >= 500 && number < 600) {
39+
exception(error);
40+
}
41+
commit('setError', { number, message });
42+
},
43+
},
2944
};

src/store/modules/invitation/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ export default {
2020
},
2121
/* eslint-enable no-param-reassign */
2222
actions: {
23-
async listInvitations({ commit }, sessionID) {
23+
async listInvitations({ commit, dispatch }, sessionID) {
2424
try {
2525
commit('setInvitations', await invitationClient.listInvitations(sessionID));
2626
} catch (e) {
27-
commit('criticalError/createError', e, { root: true });
27+
dispatch('criticalError/createError', e, { root: true });
2828
}
2929
},
3030
async invite({ commit, dispatch }, { sessionID, rawEmails }) {

0 commit comments

Comments
 (0)