Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions themes/vuetober/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,30 @@
"dependencies": {
"axios": "^0.19.2",
"bootstrap": "^4.5.0",
"bootstrap-vue": "^2.14.0",
"bootstrap-vue": "^2.15.0",
"core-js": "^3.6.5",
"moment": "^2.25.3",
"moment": "^2.26.0",
"smartlook-client": "^4.4.0",
"vee-validate": "^3.3.0",
"vue": "^2.6.11",
"vue-router": "^3.1.5",
"vue-gtag": "^1.6.2",
"vue-router": "^3.3.1",
"vuex": "^3.4.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^4.3.1",
"@vue/cli-plugin-eslint": "^4.3.1",
"@vue/cli-plugin-router": "^4.3.1",
"@vue/cli-plugin-vuex": "^4.3.1",
"@vue/cli-service": "^4.3.1",
"@vue/cli-plugin-babel": "^4.4.1",
"@vue/cli-plugin-eslint": "^4.4.1",
"@vue/cli-plugin-router": "^4.4.1",
"@vue/cli-plugin-vuex": "^4.4.1",
"@vue/cli-service": "^4.4.1",
"@vue/eslint-config-airbnb": "^5.0.2",
"babel-eslint": "^10.0.3",
"eslint": "^6.7.2",
"eslint-plugin-import": "^2.20.2",
"eslint-plugin-vue": "^6.2.2",
"sass": "^1.26.5",
"sass-loader": "^8.0.2",
"stylelint": "^13.4.0",
"stylelint": "^13.5.0",
"stylelint-config-recommended-scss": "^4.2.0",
"stylelint-scss": "^3.17.2",
"stylelint-webpack-plugin": "^2.0.0",
Expand Down
96 changes: 54 additions & 42 deletions themes/vuetober/src/custom.js
Original file line number Diff line number Diff line change
@@ -1,54 +1,66 @@
import Vue from 'vue';

import Axios from 'axios';

import { BootstrapVue, IconsPlugin } from 'bootstrap-vue';
import './custom.scss';

import { ValidationProvider, extend } from 'vee-validate';
import * as rules from 'vee-validate/dist/rules';
import { messages } from 'vee-validate/dist/locale/sk.json';

import Axios from 'axios';
import SmartlookClient from 'smartlook-client';

import router from './router';
import store from './store';

export function setup() {
Vue.use(BootstrapVue);
Vue.use(IconsPlugin);

Object.keys(rules).forEach((rule) => {
extend(rule, {
...rules[rule], // copies rule configuration
message: messages[rule], // assign message
const custom = {
setup() {
Vue.use(BootstrapVue);
Vue.use(IconsPlugin);

Object.keys(rules).forEach((rule) => {
extend(rule, {
...rules[rule], // copies rule configuration
message: messages[rule], // assign message
});
});

extend('upperCase', {
validate: (value) => value !== value.toLowerCase(),
message: '{_field_} musí obsahovať veľké písmeno',
});
});

extend('upperCase', {
validate: (value) => value !== value.toLowerCase(),
message: '{_field_} musí obsahovať veľké písmeno',
});
extend('containsNumber', {
validate: (value) => /\d/.test(value),
message: '{_field_} musí obsahovať číslicu',
});

Vue.component('ValidationProvider', ValidationProvider);
}

export function created(router, store) {
const token = localStorage.getItem('token');
if (token) {
// eslint-disable-next-line dot-notation
Axios.defaults.headers.common['Authorization'] = `Bearer ${
token
}`;
}

Axios.interceptors.response.use(
(response) => response,
(error) => {
if ((error.response.status === 401 && error.response.data.error === 'token_expired')
|| (error.response.status === 400 && error.response.data.error === 'token_invalid')) {
store.dispatch('logout').finally(() => router.push('/'));
}
return Promise.reject(error);
},
);
}
extend('containsNumber', {
validate: (value) => /\d/.test(value),
message: '{_field_} musí obsahovať číslicu',
});

Vue.component('ValidationProvider', ValidationProvider);
},

created() {
const token = localStorage.getItem('token');
if (token) {
// eslint-disable-next-line dot-notation
Axios.defaults.headers.common['Authorization'] = `Bearer ${
token
}`;
}

SmartlookClient.init('fc12e3b81c44e9f5321d50d48848f14a85ac8786');

Axios.interceptors.response.use(
(response) => response,
(error) => {
if ((error.response.status === 401 && error.response.data.error === 'token_expired')
|| (error.response.status === 400 && error.response.data.error === 'token_invalid')) {
store.dispatch('logout').finally(() => router.push('/'));
}
return Promise.reject(error);
},
);
},
};

export default custom;
6 changes: 3 additions & 3 deletions themes/vuetober/src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ import App from './App.vue';
import router from './router';
import store from './store';

import { setup, created } from './custom';
import Custom from './custom';

setup();
Custom.setup();

Vue.config.productionTip = false;

Expand All @@ -15,6 +15,6 @@ new Vue({
store,
render: (h) => h(App),
created() {
created(router, store);
Custom.created();
},
}).$mount('#app');
6 changes: 6 additions & 0 deletions themes/vuetober/src/router/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import Vue from 'vue';
import VueRouter from 'vue-router';
import VueGtag from 'vue-gtag';
import store from '../store/index';


Vue.use(VueRouter);

const routes = [
Expand Down Expand Up @@ -53,4 +55,8 @@ const router = new VueRouter({
routes,
});

Vue.use(VueGtag, {
config: { id: 'UA-167888903-1' },
}, router);

export default router;