PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.6
Booking for Appointments and Events Calendar – Amelia v2.4.6
2.4.7 2.4.6 2.4.5 2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / v3 / src / assets / js / common / integrationOutlook.js
ameliabooking / v3 / src / assets / js / common Last commit date
appointments.js 1 month ago attendees.js 1 month ago colorManipulation.js 1 month ago customer.js 1 month ago date.js 3 weeks ago defaultCustomize.js 3 weeks ago employee.js 5 days ago events.js 1 month ago formFieldsTemplates.js 1 month ago formatting.js 1 month ago helper.js 5 days ago image.js 1 month ago integrationApple.js 1 month ago integrationGoogle.js 1 month ago integrationOutlook.js 1 month ago integrationStripe.js 1 month ago integrationZoom.js 1 month ago licence.js 1 month ago liveAnnouncer.js 3 weeks ago phone.js 3 weeks ago pricing.js 1 month ago recurring.js 5 days ago responsive.js 1 month ago scrollElements.js 1 month ago settings.js 1 month ago translationsElementPlus.js 1 month ago utilHeaderHeight.js 1 month ago
integrationOutlook.js
174 lines
1 import httpClient from '../../../plugins/axios'
2 import { useRemoveUrlParameter, useUrlQueryParams } from './helper'
3
4 function useOutlookSync(code, successCallback) {
5 let redirectURL = useRemoveUrlParameter(
6 useRemoveUrlParameter(useRemoveUrlParameter(window.location.href, 'code'), 'state'),
7 'type',
8 )
9
10 httpClient
11 .post('/outlook/authorization/token', {
12 authCode: code,
13 userId: useUrlQueryParams(window.location.href)['state'].split(
14 'amelia-outlook-calendar-auth-',
15 )[1],
16 redirectUri: window.location.href.split('?')[0],
17 })
18 .then(() => {
19 history.pushState({}, null, redirectURL)
20 })
21 .catch((error) => {
22 console.log(error)
23 })
24 .finally(() => {
25 successCallback()
26 })
27 }
28
29 function useOutlookConnect(store) {
30 const amSettings = store.getters['getSettings']
31 if (!store.getters['auth/getOutlookLoading']) {
32 store.commit('auth/setOutlookLoading', true)
33
34 if (!amSettings.outlookCalendar.accessToken) {
35 httpClient
36 .get('/outlook/authorization/url/' + store.getters['employee/getId'], {
37 redirectUri: window.location.href.split('?')[0],
38 })
39 .then((response) => {
40 window.location.href = response.data.data.authUrl.replace(
41 /redirect_uri=.+?&/,
42 'redirect_uri=' + window.location.href + '&',
43 )
44 })
45 .catch((error) => {
46 console.log(error)
47
48 store.commit('auth/setOutlookLoading', false)
49 })
50 }
51
52 if (amSettings.outlookCalendar.accessToken) {
53 httpClient
54 .get('/outlook-calendar/authorization/url/' + store.getters['employee/getId'], {
55 params: {
56 redirectUri: window.location.href,
57 },
58 })
59 .then((response) => {
60 window.location.href = response.data.data.authUrl
61 })
62 .catch((error) => {
63 console.log(error)
64
65 store.commit('auth/setOutlookLoading', false)
66 })
67 }
68 }
69 }
70
71 function useOutlookDisconnect(store, accountId = null) {
72 store.commit('auth/setOutlookLoading', true)
73
74 const endpoint = '/outlook/disconnect/' + store.getters['employee/getId']
75 const data = accountId ? { accountId: accountId } : {}
76
77 httpClient
78 .post(endpoint, data)
79 .then((response) => {
80 if (accountId) {
81 const accounts = store.getters['employee/getOutlookCalendarAccounts'] || []
82
83 const disconnectedAccount = accounts.find((a) => String(a.id) === String(accountId))
84
85 const updatedAccounts = accounts.filter(
86 (account) => String(account.id) !== String(accountId),
87 )
88 store.commit('employee/setOutlookCalendarAccounts', updatedAccounts)
89
90 if (updatedAccounts.length === 0) {
91 store.commit('employee/setOutlookId', '')
92 store.commit('employee/setOutlookCalendarId', '')
93 store.commit('employee/setOutlookToken', null)
94 store.commit('employee/setOutlookCalendarBlockedCalendars', [])
95 store.commit('auth/setOutlookCalendars', [])
96 } else {
97 const remainingCalendarIds = new Set()
98 updatedAccounts.forEach((account) => {
99 if (account.calendarList && account.calendarList.length) {
100 account.calendarList.forEach((cal) => remainingCalendarIds.add(String(cal.id)))
101 }
102 if (account.calendarId) {
103 remainingCalendarIds.add(String(account.calendarId))
104 }
105 })
106
107 const removedCalendarIds = new Set()
108 if (disconnectedAccount) {
109 if (disconnectedAccount.calendarId) {
110 removedCalendarIds.add(String(disconnectedAccount.calendarId))
111 }
112 if (disconnectedAccount.calendarList && disconnectedAccount.calendarList.length) {
113 disconnectedAccount.calendarList.forEach((cal) =>
114 removedCalendarIds.add(String(cal.id)),
115 )
116 }
117 if (
118 disconnectedAccount.blockedCalendars &&
119 disconnectedAccount.blockedCalendars.length
120 ) {
121 disconnectedAccount.blockedCalendars.forEach((id) =>
122 removedCalendarIds.add(String(id)),
123 )
124 }
125 }
126 if (
127 response &&
128 response.data &&
129 response.data.data &&
130 response.data.data.removedCalendarIds
131 ) {
132 response.data.data.removedCalendarIds.forEach((id) =>
133 removedCalendarIds.add(String(id)),
134 )
135 }
136
137 const currentCalendarId = store.getters['employee/getOutlookCalendarId']
138 if (
139 currentCalendarId &&
140 (removedCalendarIds.has(String(currentCalendarId)) ||
141 !remainingCalendarIds.has(String(currentCalendarId)))
142 ) {
143 store.commit('employee/setOutlookCalendarId', '')
144 }
145
146 const blocked = store.getters['employee/getOutlookCalendarBlockedCalendars'] || []
147 const cleanedBlocked = blocked.filter((id) => remainingCalendarIds.has(String(id)))
148 store.commit('employee/setOutlookCalendarBlockedCalendars', cleanedBlocked)
149
150 const firstRemainingConnected = updatedAccounts.find((a) => !!a.token)
151 if (firstRemainingConnected) {
152 store.commit('employee/setOutlookId', firstRemainingConnected.id)
153 store.commit('employee/setOutlookToken', firstRemainingConnected.token)
154 }
155 }
156 } else {
157 store.commit('employee/setOutlookId', '')
158 store.commit('employee/setOutlookCalendarId', '')
159 store.commit('employee/setOutlookToken', null)
160 store.commit('employee/setOutlookCalendarAccounts', [])
161 store.commit('employee/setOutlookCalendarBlockedCalendars', [])
162 store.commit('auth/setOutlookCalendars', [])
163 }
164 })
165 .catch((error) => {
166 console.log(error)
167 })
168 .finally(() => {
169 store.commit('auth/setOutlookLoading', false)
170 })
171 }
172
173 export { useOutlookSync, useOutlookConnect, useOutlookDisconnect }
174