Advertisement
Guest User

Untitled

a guest
Oct 15th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. import Vue from 'vue';
  2.  
  3. /**
  4. * Use global tooltips
  5. */
  6. import VueTippy from 'vue-tippy'
  7. Vue.use(VueTippy,{
  8. flipDuration: 0,
  9. theme: 'light',
  10. animation: 'fade',
  11. animateFill: false,
  12. duration: 200,
  13. distance : 5
  14. });
  15.  
  16. import VueClipboard from 'vue-clipboard2'
  17. Vue.use(VueClipboard);
  18.  
  19. console.log(process.env.NODE_ENV);
  20.  
  21. /**
  22. * Use global progressbar
  23. */
  24. import VueProgressBar from 'vue-progressbar';
  25. Vue.use(VueProgressBar, {
  26. color: 'rgb(120, 163, 0)',
  27. failedColor: 'rgb(185, 74, 72)',
  28. height: '2px'
  29. });
  30.  
  31. /**
  32. * Init global Vuex storage
  33. */
  34. import storage from "./storage";
  35.  
  36. /**
  37. * Init global Mixins
  38. */
  39. import tokenizer from "./mixins/tokenizer";
  40. import helper from "./mixins/helper";
  41. Vue.mixin(tokenizer);
  42. Vue.mixin(helper);
  43.  
  44. /**
  45. * Init Vue Router
  46. */
  47. import VueRouter from 'vue-router';
  48. import routes from './routes';
  49. Vue.use(VueRouter);
  50. const router = new VueRouter({routes});
  51.  
  52. /**
  53. * Init Zendesk Source fake data
  54. */
  55. import injector from 'vue-inject';
  56.  
  57. Vue.use(injector);
  58. // injector.constant('identities', [
  59. // 'jason@crazyeffective.com',
  60. // 'e.rieznyk@gmail.com',
  61. // 'sadsdsa',
  62. // 'sfsdf32423asdasdasxc',
  63. // '+003 80999 741071sdfsdf',
  64. // '123-756-78901'
  65. // ]);
  66. // injector.constant('author', {
  67. // email: 'e.rieznyk@gmail.com',
  68. // name: 'Eugene Rieznyk'
  69. // });
  70.  
  71. /**
  72. * Use Zendesk ZAFClient
  73. */
  74. if(process.env.NODE_ENV == 'production') {
  75. // init ZD api client
  76. let client = ZAFClient.init();
  77. // resize zd app window
  78. client.invoke('resize', { width: '100%', height: '70vh'});
  79. // get identities for user
  80. client.get('user').then(function(data) {
  81. let identities = [];
  82. data.user.identities.forEach(element => {
  83. identities.push(element.value);
  84. });
  85. // inject identities into vue app
  86. injector.constant('identities', identities);
  87. storage.state.identityHandler.original = identities.slice();
  88. let identityArr = identities.map((element) => {
  89. if(validateEmail(element)) {
  90. return element;
  91. } else {
  92. return element.replace(/\D/g,'');
  93. }
  94. });
  95. storage.state.identityHandler.initial = identityArr.slice();
  96. storage.state.identityHandler.filtered = identityArr.slice();
  97.  
  98. }).catch(function(error) {});
  99. // get identities for user (ticket side)
  100. client.get('ticket.requester').then(function(data) {
  101. let identities = [];
  102. data['ticket.requester'].identities.forEach(element => {
  103. identities.push(element.value);
  104. });
  105. // inject identities into vue app
  106. injector.constant('identities', identities);
  107. storage.state.identityHandler.original = identities.slice();
  108. let identityArr = identities.map((element) => {
  109. if(validateEmail(element)) {
  110. return element;
  111. } else {
  112. return element.replace(/\D/g,'');
  113. }
  114. });
  115. storage.state.identityHandler.initial = identityArr.slice();
  116. storage.state.identityHandler.filtered = identityArr.slice();
  117. }).catch(function(error) {});
  118.  
  119. injector.constant('author', {
  120. email: '',
  121. name: ''
  122. });
  123. client.get('currentUser').then(function(data) {
  124. injector.constant('author', {
  125. email: data.currentUser.email,
  126. name: data.currentUser.name
  127. });
  128. });
  129. } else {
  130. // save identities keys arr to storage
  131. let identityArr = [
  132. 'e.rieznyk@gmail.com',
  133. 'jason@crazyeffective.com',
  134. 'jason@creditsuite.com',
  135. '+380999741071',
  136. 'jul23test@crazyeffective.com',
  137. 'rumondat@gmail.com',
  138. ];
  139. storage.state.identityHandler.original = identityArr.slice();
  140. identityArr = identityArr.map((element) => {
  141. if(validateEmail(element)) {
  142. return element;
  143. } else {
  144. return element.replace(/\D/g,'');
  145. }
  146. });
  147. storage.state.identityHandler.initial = identityArr.slice();
  148. storage.state.identityHandler.filtered = identityArr.slice();
  149. //
  150.  
  151. injector.constant('identities', [
  152. 'e.rieznyk@gmail.com',
  153. 'jason@crazyeffective.com',
  154. 'jason@creditsuite.com',
  155. '380999741071',
  156. '202-555-0143',
  157. ]);
  158. injector.constant('author', {
  159. email: 'reznik.demarket@gmail.com',
  160. name: 'Yevhen Rieznyk',
  161. });
  162.  
  163. // add zendesk author data to vuex state
  164. storage.state.identityHandler.author = {email: 'reznik.demarket@gmail.com', name: 'Eugene Smith'};
  165. // appInit();
  166. }
  167.  
  168. /**
  169. * Use defined Api Endpoints as dependency with Injector
  170. */
  171. import endpoints from './api.js';
  172. injector.constant('endpoints', endpoints);
  173.  
  174. /**
  175. * Init global Event Bus: events listener
  176. */
  177. import eventBus from "./event-bus";
  178. injector.constant('eventBus', eventBus);
  179.  
  180. /**
  181. * Init Vue Zendesk App
  182. */
  183. import app from './components/app';
  184. const zendeskApp = new Vue({
  185. el: '#app',
  186. store: storage,
  187. router,
  188. components: { app },
  189. });
  190.  
  191. //
  192. function validateEmail(email) {
  193. let re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  194. return re.test(String(email).toLowerCase());
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement