index.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import Vue from 'vue';
  2. import Vuex from 'vuex';
  3. const state = {
  4. loggedIn: false,
  5. user: {},
  6. token: null,
  7. config: null
  8. };
  9. /* eslint-disable no-shadow */
  10. const mutations = {
  11. loggedIn(state, payload) {
  12. state.loggedIn = payload;
  13. },
  14. user(state, payload) {
  15. if (!payload) {
  16. state.user = {};
  17. localStorage.removeItem('lolisafe-user');
  18. return;
  19. }
  20. localStorage.setItem('lolisafe-user', JSON.stringify(payload));
  21. state.user = payload;
  22. },
  23. token(state, payload) {
  24. if (!payload) {
  25. localStorage.removeItem('lolisafe-token');
  26. state.token = null;
  27. return;
  28. }
  29. localStorage.setItem('lolisafe-token', payload);
  30. setAuthorizationHeader(payload);
  31. state.token = payload;
  32. },
  33. config(state, payload) {
  34. state.config = payload;
  35. }
  36. };
  37. const actions = {
  38. nuxtServerInit({ commit }, { req }) {
  39. commit('config', {
  40. version: process.env.npm_package_version,
  41. URL: process.env.DOMAIN,
  42. baseURL: `${process.env.DOMAIN}${process.env.ROUTE_PREFIX}`,
  43. serviceName: process.env.SERVICE_NAME,
  44. maxFileSize: parseInt(process.env.MAX_SIZE, 10),
  45. chunkSize: parseInt(process.env.CHUNK_SIZE, 10),
  46. maxLinksPerAlbum: parseInt(process.env.MAX_LINKS_PER_ALBUM, 10),
  47. publicMode: process.env.PUBLIC_MODE == 'true' ? true : false,
  48. enableAccounts: process.env.USER_ACCOUNTS == 'true' ? true : false
  49. });
  50. }
  51. };
  52. const setAuthorizationHeader = payload => {
  53. console.log('hihi');
  54. Vue.axios.defaults.headers.common.Authorization = payload ? `Bearer ${payload}` : '';
  55. };
  56. const store = () => new Vuex.Store({
  57. state,
  58. mutations,
  59. actions
  60. });
  61. export default store;