@meetelise/chat 1.25.1 → 1.25.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/coverage/lcov-report/index.html +1 -1
  2. package/coverage/lcov-report/index.js.html +1 -1
  3. package/package.json +1 -1
  4. package/.prettierignore +0 -2
  5. package/dist/src/MyPubnub.d.ts +0 -116
  6. package/dist/src/WebComponent/FeeCalculator/components/collapsible-fee-section/collapsible-fee-section-styles.d.ts +0 -2
  7. package/dist/src/WebComponent/FeeCalculator/components/collapsible-fee-section/collapsible-fee-section.d.ts +0 -20
  8. package/dist/src/WebComponent/FeeCalculator/components/fee-item/fee-item-styles.d.ts +0 -2
  9. package/dist/src/WebComponent/FeeCalculator/components/fee-item/fee-item.d.ts +0 -14
  10. package/dist/src/WebComponent/FeeCalculator/components/floor-plan-selector/floor-plan-selector-styles.d.ts +0 -2
  11. package/dist/src/WebComponent/FeeCalculator/components/floor-plan-selector/floor-plan-selector.d.ts +0 -17
  12. package/dist/src/WebComponent/FeeCalculator/components/index.d.ts +0 -3
  13. package/dist/src/WebComponent/FeeCalculator/components/promo-card/promo-card-styles.d.ts +0 -2
  14. package/dist/src/WebComponent/FeeCalculator/components/promo-card/promo-card.d.ts +0 -13
  15. package/dist/src/WebComponent/FeeCalculator/fee-calculator-styles.d.ts +0 -1
  16. package/dist/src/WebComponent/FeeCalculator/fee-calculator.d.ts +0 -31
  17. package/dist/src/WebComponent/FeeCalculator/index.d.ts +0 -2
  18. package/dist/src/WebComponent/FeeCalculator/model/building-fee.d.ts +0 -75
  19. package/dist/src/WebComponent/FeeCalculator/model/transaction-category.d.ts +0 -23
  20. package/dist/src/WebComponent/LeadSourceClient.d.ts +0 -46
  21. package/dist/src/WebComponent/OfficeHours.d.ts +0 -21
  22. package/dist/src/WebComponent/Scheduler/date-picker.d.ts +0 -28
  23. package/dist/src/WebComponent/Scheduler/time-picker.d.ts +0 -14
  24. package/dist/src/WebComponent/Scheduler/tour-scheduler.d.ts +0 -99
  25. package/dist/src/WebComponent/Scheduler/tour-type-option.d.ts +0 -13
  26. package/dist/src/WebComponent/Scheduler/tourSchedulerStyles.d.ts +0 -1
  27. package/dist/src/WebComponent/actions/InputStyles.d.ts +0 -1
  28. package/dist/src/WebComponent/actions/action-confirm-button.d.ts +0 -13
  29. package/dist/src/WebComponent/actions/call-us-window.d.ts +0 -37
  30. package/dist/src/WebComponent/actions/collapse-expand-button.d.ts +0 -8
  31. package/dist/src/WebComponent/actions/details-window.d.ts +0 -14
  32. package/dist/src/WebComponent/actions/email-us-window.d.ts +0 -46
  33. package/dist/src/WebComponent/actions/formatPhoneNumber.d.ts +0 -17
  34. package/dist/src/WebComponent/actions/minimize-expand-button.d.ts +0 -8
  35. package/dist/src/WebComponent/chat-additional-actions.d.ts +0 -28
  36. package/dist/src/WebComponent/health-chat.d.ts +0 -47
  37. package/dist/src/WebComponent/healthchat-styles.d.ts +0 -1
  38. package/dist/src/WebComponent/icons/ApplyOutlineIcon.d.ts +0 -2
  39. package/dist/src/WebComponent/icons/BookTourOutlineIcon.d.ts +0 -2
  40. package/dist/src/WebComponent/icons/CalculatorOutlineIcon.d.ts +0 -2
  41. package/dist/src/WebComponent/icons/ChatOutlineIcon.d.ts +0 -2
  42. package/dist/src/WebComponent/icons/ChevronLeftIcon.d.ts +0 -2
  43. package/dist/src/WebComponent/icons/ChevronRightIcon.d.ts +0 -2
  44. package/dist/src/WebComponent/icons/ContactResidentIcon.d.ts +0 -2
  45. package/dist/src/WebComponent/icons/DollarOutlineIcon.d.ts +0 -3
  46. package/dist/src/WebComponent/icons/EmailOutlineIcon.d.ts +0 -2
  47. package/dist/src/WebComponent/icons/HeyThereEmojiIcon.d.ts +0 -2
  48. package/dist/src/WebComponent/icons/PhoneOutlineIcon.d.ts +0 -2
  49. package/dist/src/WebComponent/icons/SendMessageIcon.d.ts +0 -3
  50. package/dist/src/WebComponent/icons/TourSelfGuidedIcon.d.ts +0 -2
  51. package/dist/src/WebComponent/icons/TourVirtuallyIcon.d.ts +0 -2
  52. package/dist/src/WebComponent/icons/TourWithAgentIcon.d.ts +0 -2
  53. package/dist/src/WebComponent/icons/XOutlineIcon.d.ts +0 -2
  54. package/dist/src/WebComponent/index.d.ts +0 -2
  55. package/dist/src/WebComponent/launcher/Launcher.d.ts +0 -98
  56. package/dist/src/WebComponent/launcher/launcherStyles.d.ts +0 -1
  57. package/dist/src/WebComponent/launcher/mobile-launcher.d.ts +0 -26
  58. package/dist/src/WebComponent/launcher/typeEmojiStyles.d.ts +0 -1
  59. package/dist/src/WebComponent/launcher/typeMiniStyles.d.ts +0 -1
  60. package/dist/src/WebComponent/launcher/typeMobileStyles.d.ts +0 -1
  61. package/dist/src/WebComponent/leasing-chat-styles.d.ts +0 -1
  62. package/dist/src/WebComponent/me-chat.d.ts +0 -91
  63. package/dist/src/WebComponent/me-select.d.ts +0 -24
  64. package/dist/src/WebComponent/mini-loader.d.ts +0 -5
  65. package/dist/src/WebComponent/pubnub-chat-styles.d.ts +0 -1
  66. package/dist/src/WebComponent/pubnub-chat.d.ts +0 -49
  67. package/dist/src/WebComponent/pubnub-media.d.ts +0 -14
  68. package/dist/src/WebComponent/pubnub-message-styles.d.ts +0 -1
  69. package/dist/src/WebComponent/pubnub-message.d.ts +0 -39
  70. package/dist/src/WebComponent/simple-launcher/simple-launcher-styles.d.ts +0 -1
  71. package/dist/src/WebComponent/simple-launcher/simple-launcher.d.ts +0 -12
  72. package/dist/src/WebComponent/utilities-chat.d.ts +0 -47
  73. package/dist/src/WebComponent/utilities-styles.d.ts +0 -1
  74. package/dist/src/WebComponent/utils.d.ts +0 -31
  75. package/dist/src/analytics.d.ts +0 -64
  76. package/dist/src/disclaimers.d.ts +0 -8
  77. package/dist/src/fetchBuildingABTestType.d.ts +0 -8
  78. package/dist/src/fetchBuildingInfo.d.ts +0 -57
  79. package/dist/src/fetchBuildingWebchatView.d.ts +0 -122
  80. package/dist/src/fetchFeatureFlag.d.ts +0 -14
  81. package/dist/src/fetchLeadSources.d.ts +0 -4
  82. package/dist/src/fetchPhoneNumberFromSource.d.ts +0 -6
  83. package/dist/src/getAvailabilities.d.ts +0 -44
  84. package/dist/src/getBuildingPhoneNumber.d.ts +0 -1
  85. package/dist/src/getShouldAllowScheduling.d.ts +0 -1
  86. package/dist/src/getShouldShowWebchat.d.ts +0 -3
  87. package/dist/src/getTimezoneString.d.ts +0 -1
  88. package/dist/src/globals.d.ts +0 -1
  89. package/dist/src/gtm.d.ts +0 -6
  90. package/dist/src/handleChatId.d.ts +0 -11
  91. package/dist/src/insertDNIIntoWebsite.d.ts +0 -5
  92. package/dist/src/insertLeadSourceIntoSchedulerLinks.d.ts +0 -4
  93. package/dist/src/main/MEChat.d.ts +0 -74
  94. package/dist/src/main/utils.d.ts +0 -2
  95. package/dist/src/postLeadSources.d.ts +0 -3
  96. package/dist/src/rentgrata.d.ts +0 -4
  97. package/dist/src/replaceSelectButtonsWithNewLink.d.ts +0 -5
  98. package/dist/src/services/fees/fetchBuildingFees.d.ts +0 -3
  99. package/dist/src/svgIcons.d.ts +0 -5
  100. package/dist/src/themes.d.ts +0 -5
  101. package/dist/src/types/rest-sdk.types.d.ts +0 -11
  102. package/dist/src/types/webchat-no-show-reason.d.ts +0 -1
  103. package/dist/src/utils.d.ts +0 -13
  104. package/public/demo/index.html +0 -347
  105. package/public/demo/secret.html +0 -63
  106. package/src/MyPubnub.ts +0 -792
  107. package/src/WebComponent/FeeCalculator/components/collapsible-fee-section/collapsible-fee-section-styles.ts +0 -86
  108. package/src/WebComponent/FeeCalculator/components/collapsible-fee-section/collapsible-fee-section.ts +0 -94
  109. package/src/WebComponent/FeeCalculator/components/fee-item/fee-item-styles.ts +0 -47
  110. package/src/WebComponent/FeeCalculator/components/fee-item/fee-item.ts +0 -50
  111. package/src/WebComponent/FeeCalculator/components/floor-plan-selector/floor-plan-selector-styles.ts +0 -46
  112. package/src/WebComponent/FeeCalculator/components/floor-plan-selector/floor-plan-selector.ts +0 -70
  113. package/src/WebComponent/FeeCalculator/components/index.ts +0 -3
  114. package/src/WebComponent/FeeCalculator/components/promo-card/promo-card-styles.ts +0 -39
  115. package/src/WebComponent/FeeCalculator/components/promo-card/promo-card.ts +0 -39
  116. package/src/WebComponent/FeeCalculator/fee-calculator-styles.ts +0 -280
  117. package/src/WebComponent/FeeCalculator/fee-calculator.ts +0 -256
  118. package/src/WebComponent/FeeCalculator/index.ts +0 -4
  119. package/src/WebComponent/FeeCalculator/model/building-fee.ts +0 -83
  120. package/src/WebComponent/FeeCalculator/model/transaction-category.ts +0 -23
  121. package/src/WebComponent/LeadSourceClient.ts +0 -332
  122. package/src/WebComponent/MEChat.css +0 -5
  123. package/src/WebComponent/OfficeHours.ts +0 -73
  124. package/src/WebComponent/Scheduler/date-picker.ts +0 -405
  125. package/src/WebComponent/Scheduler/time-picker.ts +0 -190
  126. package/src/WebComponent/Scheduler/tour-scheduler.ts +0 -1352
  127. package/src/WebComponent/Scheduler/tour-type-option.ts +0 -112
  128. package/src/WebComponent/Scheduler/tourSchedulerStyles.ts +0 -418
  129. package/src/WebComponent/actions/InputStyles.ts +0 -57
  130. package/src/WebComponent/actions/action-confirm-button.ts +0 -125
  131. package/src/WebComponent/actions/call-us-window.ts +0 -445
  132. package/src/WebComponent/actions/collapse-expand-button.ts +0 -65
  133. package/src/WebComponent/actions/details-window.ts +0 -150
  134. package/src/WebComponent/actions/email-us-window.ts +0 -555
  135. package/src/WebComponent/actions/formatPhoneNumber.ts +0 -72
  136. package/src/WebComponent/actions/minimize-expand-button.ts +0 -93
  137. package/src/WebComponent/chat-additional-actions.ts +0 -135
  138. package/src/WebComponent/health-chat.ts +0 -270
  139. package/src/WebComponent/healthchat-styles.ts +0 -119
  140. package/src/WebComponent/icons/ApplyOutlineIcon.ts +0 -22
  141. package/src/WebComponent/icons/BookTourOutlineIcon.ts +0 -13
  142. package/src/WebComponent/icons/CalculatorOutlineIcon.ts +0 -22
  143. package/src/WebComponent/icons/ChatOutlineIcon.ts +0 -10
  144. package/src/WebComponent/icons/ChevronLeftIcon.ts +0 -7
  145. package/src/WebComponent/icons/ChevronRightIcon.ts +0 -7
  146. package/src/WebComponent/icons/ContactResidentIcon.ts +0 -9
  147. package/src/WebComponent/icons/DollarOutlineIcon.ts +0 -18
  148. package/src/WebComponent/icons/EmailOutlineIcon.ts +0 -7
  149. package/src/WebComponent/icons/HeyThereEmojiIcon.ts +0 -12
  150. package/src/WebComponent/icons/PhoneOutlineIcon.ts +0 -7
  151. package/src/WebComponent/icons/SendMessageIcon.ts +0 -17
  152. package/src/WebComponent/icons/TourSelfGuidedIcon.ts +0 -17
  153. package/src/WebComponent/icons/TourVirtuallyIcon.ts +0 -17
  154. package/src/WebComponent/icons/TourWithAgentIcon.ts +0 -17
  155. package/src/WebComponent/icons/XOutlineIcon.ts +0 -8
  156. package/src/WebComponent/index.ts +0 -2
  157. package/src/WebComponent/launcher/Launcher.ts +0 -1193
  158. package/src/WebComponent/launcher/launcherStyles.ts +0 -500
  159. package/src/WebComponent/launcher/mobile-launcher.ts +0 -159
  160. package/src/WebComponent/launcher/typeEmojiStyles.ts +0 -161
  161. package/src/WebComponent/launcher/typeMiniStyles.ts +0 -60
  162. package/src/WebComponent/launcher/typeMobileStyles.ts +0 -50
  163. package/src/WebComponent/leasing-chat-styles.ts +0 -114
  164. package/src/WebComponent/me-chat.ts +0 -1257
  165. package/src/WebComponent/me-select.ts +0 -322
  166. package/src/WebComponent/mini-loader.ts +0 -28
  167. package/src/WebComponent/pubnub-chat-styles.ts +0 -204
  168. package/src/WebComponent/pubnub-chat.ts +0 -928
  169. package/src/WebComponent/pubnub-media.ts +0 -208
  170. package/src/WebComponent/pubnub-message-styles.ts +0 -54
  171. package/src/WebComponent/pubnub-message.ts +0 -431
  172. package/src/WebComponent/simple-launcher/simple-launcher-styles.ts +0 -34
  173. package/src/WebComponent/simple-launcher/simple-launcher.ts +0 -100
  174. package/src/WebComponent/utilities-chat.ts +0 -270
  175. package/src/WebComponent/utilities-styles.ts +0 -110
  176. package/src/WebComponent/utils.ts +0 -82
  177. package/src/analytics.ts +0 -217
  178. package/src/assetUrls.ts +0 -6
  179. package/src/disclaimers.ts +0 -58
  180. package/src/fetchBuildingABTestType.ts +0 -21
  181. package/src/fetchBuildingInfo.ts +0 -87
  182. package/src/fetchBuildingWebchatView.ts +0 -154
  183. package/src/fetchFeatureFlag.ts +0 -250
  184. package/src/fetchLeadSources.ts +0 -98
  185. package/src/fetchPhoneNumberFromSource.ts +0 -31
  186. package/src/fetchWebchatPreferences.ts +0 -54
  187. package/src/getAvailabilities.ts +0 -174
  188. package/src/getBuildingPhoneNumber.ts +0 -26
  189. package/src/getShouldAllowScheduling.ts +0 -16
  190. package/src/getShouldShowWebchat.ts +0 -114
  191. package/src/getTimezoneString.ts +0 -39
  192. package/src/globals.ts +0 -1
  193. package/src/gtm.ts +0 -17
  194. package/src/handleChatId.ts +0 -101
  195. package/src/insertDNIIntoWebsite.ts +0 -146
  196. package/src/insertLeadSourceIntoSchedulerLinks.ts +0 -71
  197. package/src/main/MEChat.test.ts +0 -110
  198. package/src/main/MEChat.ts +0 -404
  199. package/src/main/utils.ts +0 -70
  200. package/src/postLeadSources.ts +0 -44
  201. package/src/rentgrata.ts +0 -74
  202. package/src/replaceSelectButtonsWithNewLink.ts +0 -68
  203. package/src/services/fees/fetchBuildingFees.ts +0 -28
  204. package/src/svgIcons.ts +0 -14
  205. package/src/themes.ts +0 -65
  206. package/src/types/rest-sdk.types.ts +0 -13
  207. package/src/types/webchat-no-show-reason.ts +0 -6
  208. package/src/utils.ts +0 -121
  209. package/tsconfig.json +0 -84
@@ -1,332 +0,0 @@
1
- import axios from "axios";
2
- import parseISO from "date-fns/parseISO";
3
- import formatISO from "date-fns/formatISO";
4
- import { CampaignSources, getCampaignSources } from "../analytics";
5
- import { getUrlQueryParameters } from "../postLeadSources";
6
- import { isTimestampExpired } from "../utils";
7
- import isEmpty from "lodash/isEmpty";
8
-
9
- export interface LeadSourceInput {
10
- buildingSlug: string | null;
11
- queryParams: {
12
- [queryKey: string]: string;
13
- } | null;
14
- referrer: string;
15
- campaignSources: CampaignSources;
16
- }
17
-
18
- export function getDefaultLeadSourceAttribution(orgSlug: string): string {
19
- if (orgSlug === "avb") {
20
- // this is stupid and we should not do this
21
- // if anything, should read from DB and give clients default ability to set this
22
- return "AVB Company Website";
23
- }
24
- if (orgSlug === "windsor") {
25
- return "Windsorcommunities.com";
26
- }
27
- return "property-website";
28
- }
29
-
30
- class LeadSourceClient {
31
- chatId: string | null = null;
32
-
33
- private apiHost = "https://app.meetelise.com";
34
- public leadSource: string | null = null;
35
- private localStorageTTLDays = 30;
36
-
37
- buildingId: number | null = null;
38
- orgSlug: string | null = null;
39
- buildingSlug: string | null = null;
40
- queryParameters: {
41
- [queryKey: string]: string;
42
- } | null = null;
43
-
44
- leadSourceInput: {
45
- websiteOrigin: string | null;
46
- websiteSearch: string | null;
47
- queryParameters: {
48
- [queryKey: string]: string;
49
- } | null;
50
- referrer: string | null;
51
- parsedUtmSource: string | null;
52
- campaignSources: string[] | null;
53
- } | null = null;
54
-
55
- private updateLeadSourceLocalStorage = (
56
- buildingSlug: string,
57
- leadSource: string | null,
58
- leadId: string,
59
- ignorePost: boolean, // if we dont have lead source, we just want to still use for logging
60
- isOverrideFromNewLeadSource: boolean
61
- ) => {
62
- const queryParameters = getUrlQueryParameters();
63
- this.leadSourceInput = {
64
- websiteOrigin: window.location.origin,
65
- websiteSearch: window.location.search,
66
- queryParameters: queryParameters,
67
- referrer: document.referrer,
68
- parsedUtmSource: queryParameters ? queryParameters["utm_source"] : null,
69
- campaignSources: Object.values(getCampaignSources()).filter(
70
- (source) => source
71
- ),
72
- };
73
- if (ignorePost) return;
74
-
75
- if (!isOverrideFromNewLeadSource) {
76
- const existingLeadSource = this.getLeadSourceBodyIfValid(buildingSlug);
77
- if (existingLeadSource) {
78
- const isExpired = isTimestampExpired(
79
- existingLeadSource.timestamp,
80
- this.localStorageTTLDays * 24
81
- );
82
- if (!isExpired) {
83
- return {
84
- ...existingLeadSource,
85
- timestamp: parseISO(existingLeadSource.timestamp),
86
- };
87
- }
88
- }
89
- }
90
-
91
- const body = {
92
- leadSource: leadSource,
93
- leadId: leadId,
94
- buildingSlug: buildingSlug,
95
- timestamp: formatISO(new Date()),
96
- leadSourceInput: this.leadSourceInput,
97
- };
98
- localStorage.setItem(
99
- "com.elise.webchat.leadsource.slug=" + buildingSlug,
100
- JSON.stringify(body)
101
- );
102
- return { ...body, timestamp: parseISO(body.timestamp) };
103
- };
104
-
105
- private getLeadSourceBodyIfValid = (buildingSlug: string) => {
106
- const body = localStorage.getItem(
107
- "com.elise.webchat.leadsource.slug=" + buildingSlug
108
- );
109
- if (body) {
110
- try {
111
- const parsedBody = JSON.parse(body);
112
- const isValid =
113
- parsedBody.buildingSlug === buildingSlug &&
114
- parsedBody.leadSource &&
115
- parsedBody.leadId &&
116
- parsedBody.timestamp &&
117
- !isTimestampExpired(
118
- parseISO(parsedBody.timestamp),
119
- this.localStorageTTLDays * 24
120
- );
121
- if (isValid) {
122
- try {
123
- this.leadSourceInput = parsedBody.leadSourceInput;
124
- } catch (_) {
125
- // eslint-disable-next-line no-console
126
- console.error("Error parsing leadSourceInput from localStorage");
127
- }
128
- return parsedBody;
129
- }
130
- } catch (_) {
131
- return null;
132
- }
133
- }
134
- return null;
135
- };
136
-
137
- private async fetchCurrentParsedLeadSource({
138
- buildingSlug,
139
- queryParams,
140
- referrer,
141
- campaignSources,
142
- }: LeadSourceInput): Promise<string | null> {
143
- try {
144
- const currentParsedLeadSourceResponse = await axios.post(
145
- `${this.apiHost}/platformApi/webchat/current-parsed-lead-source`,
146
- {
147
- query_params: queryParams,
148
- building_slug: buildingSlug,
149
- referrer: referrer,
150
- campaign_sources: campaignSources,
151
- }
152
- );
153
- return currentParsedLeadSourceResponse.data;
154
- } catch (_) {
155
- return null;
156
- }
157
- }
158
-
159
- async checkAndHandleForLogLeadSource({
160
- webchatAction,
161
- stateId,
162
- }: {
163
- webchatAction: string;
164
- stateId: string | null;
165
- }): Promise<null> {
166
- try {
167
- if (!this.chatId) {
168
- // eslint-disable-next-line no-console
169
- console.error("chatId is not set");
170
- return null;
171
- }
172
- if (!this.orgSlug) {
173
- // eslint-disable-next-line no-console
174
- console.error("orgId is not set");
175
- return null;
176
- }
177
-
178
- let google_analytics_client_id = null;
179
- let extras = null;
180
- try {
181
- if (this.orgSlug === "f1ba5a20-d207-4e5a-879e-65199e7d0a53") {
182
- // SCION only
183
- const gaCookie = await this.getCookieValue("_ga");
184
- if (gaCookie) {
185
- google_analytics_client_id = gaCookie;
186
- }
187
- // find the object in the dataLayer that has the extras gtagApiGet
188
- extras = window.dataLayer.find(
189
- (obj) => obj.value?.event == "gtagApiGet"
190
- )?.value;
191
- }
192
- } catch (error) {
193
- // eslint-disable-next-line no-console
194
- console.error("error getting cookie");
195
- }
196
-
197
- await axios.post(`${this.apiHost}/platformApi/webchat/log/lead-source`, {
198
- chat_id: this.chatId,
199
- webchat_action: webchatAction,
200
- state_id: stateId,
201
- building_id: this.buildingId,
202
- org_slug: this.orgSlug,
203
- building_slug: this.buildingSlug,
204
- website_origin: this.leadSourceInput?.websiteOrigin,
205
- website_search: this.leadSourceInput?.websiteSearch,
206
- query_parameters: this.leadSourceInput?.queryParameters,
207
- referrer: this.leadSourceInput?.referrer,
208
- parsed_utm_source: this.leadSourceInput?.parsedUtmSource,
209
- campaign_sources: this.leadSourceInput?.campaignSources,
210
- lead_source_output: this.leadSource,
211
- google_analytics_client_id: isEmpty(google_analytics_client_id)
212
- ? null
213
- : google_analytics_client_id,
214
- extras: extras ?? null,
215
- });
216
- return null;
217
- } catch (_) {
218
- return null;
219
- }
220
- }
221
-
222
- async getCookieValue(key: string): Promise<string | null> {
223
- try {
224
- const cookies = document.cookie.split(";");
225
- for (let i = 0; i < cookies.length; i++) {
226
- const cookie = cookies[i].trim();
227
- if (cookie.startsWith(key + "=")) {
228
- const value = cookie.substring(
229
- (key + "=").length,
230
- cookie.indexOf(";") === -1 ? undefined : cookie.indexOf(";")
231
- );
232
- return value;
233
- }
234
- }
235
- return null;
236
- } catch (error) {
237
- // eslint-disable-next-line no-console
238
- console.error("error getting cookie value");
239
- }
240
- return null;
241
- }
242
-
243
- // TODO(erol): clean up this entire function
244
- async generateUserLeadSource({
245
- leadId,
246
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
247
- orgSlug,
248
- buildingSlug,
249
- }: {
250
- leadId: string;
251
- orgSlug: string;
252
- buildingSlug: string | null;
253
- }): Promise<string | null> {
254
- try {
255
- // 1. try to generate a lead source
256
- // 2. if we have a match, use that
257
- // 3. if we dont have a match utilize the one from local storage
258
- const leadSourceInput: LeadSourceInput = {
259
- queryParams: getUrlQueryParameters(),
260
- buildingSlug: buildingSlug,
261
- referrer: document.referrer,
262
- campaignSources: getCampaignSources(),
263
- };
264
-
265
- let isOverrideFromNewLeadSource = false;
266
- // We detect if there is an existing lead source in local storage
267
- const isCurrentlyStoredLeadSource = buildingSlug
268
- ? this.getLeadSourceBodyIfValid(buildingSlug)
269
- : null;
270
- if (isCurrentlyStoredLeadSource) {
271
- const orgSlugsAlwaysUseMostRecentLeadSource = [
272
- "test-company",
273
- "daf00bd2-1ecb-482c-b6f4-e1c5511a01be", // talked w/ carbon https://meetelise.zendesk.com/agent/tickets/75095
274
- ];
275
- if (orgSlugsAlwaysUseMostRecentLeadSource.includes(orgSlug)) {
276
- const currentParsedLeadSource =
277
- await this.fetchCurrentParsedLeadSource(leadSourceInput);
278
-
279
- if (currentParsedLeadSource) {
280
- this.leadSource = currentParsedLeadSource;
281
- isOverrideFromNewLeadSource = true;
282
- } else {
283
- this.leadSource = isCurrentlyStoredLeadSource.leadSource;
284
- return this.leadSource;
285
- }
286
- } else {
287
- this.leadSource = isCurrentlyStoredLeadSource.leadSource;
288
- return this.leadSource;
289
- }
290
- }
291
-
292
- const currentParsedLeadSource = await this.fetchCurrentParsedLeadSource(
293
- leadSourceInput
294
- );
295
- this.leadSource = currentParsedLeadSource;
296
-
297
- this.buildingId = null;
298
- this.orgSlug = orgSlug;
299
- this.buildingSlug = buildingSlug;
300
-
301
- // If we do NOT detect a lead source from the current session, we check the local storage and use that
302
- if (buildingSlug && !currentParsedLeadSource) {
303
- const isCurrentlyStoredLeadSource =
304
- this.getLeadSourceBodyIfValid(buildingSlug);
305
- if (isCurrentlyStoredLeadSource) {
306
- this.leadSource = isCurrentlyStoredLeadSource.leadSource;
307
- return this.leadSource;
308
- }
309
- }
310
-
311
- if (buildingSlug) {
312
- const leadSourceExistsInLocalStorage =
313
- !!currentParsedLeadSource && currentParsedLeadSource.length > 0;
314
-
315
- this.updateLeadSourceLocalStorage(
316
- buildingSlug,
317
- currentParsedLeadSource,
318
- leadId,
319
- !leadSourceExistsInLocalStorage && !isOverrideFromNewLeadSource,
320
- isOverrideFromNewLeadSource
321
- );
322
- }
323
- return currentParsedLeadSource;
324
- } catch (error) {
325
- // eslint-disable-next-line no-console
326
- console.error(error);
327
- }
328
- return null;
329
- }
330
- }
331
-
332
- export default LeadSourceClient;
@@ -1,5 +0,0 @@
1
- @media screen and (min-width: 767px) {
2
- .meetelise-chat.pane.launcher__desktop {
3
- right: -32px;
4
- }
5
- }
@@ -1,73 +0,0 @@
1
- import eachDayOfInterval from "date-fns/eachDayOfInterval";
2
- import startOfWeek from "date-fns/startOfWeek";
3
- import endOfWeek from "date-fns/endOfWeek";
4
- import setHours from "date-fns/setHours";
5
- import getDay from "date-fns/getDay";
6
- import axios from "axios";
7
-
8
- interface OfficeHourAvailabilityReponse {
9
- [dayOfWeek: string]: { start: string; end: string };
10
- }
11
-
12
- const officeHoursCache: {
13
- [buildingId: number]: OfficeHourAvailabilityReponse;
14
- } = {};
15
-
16
- export const getRawOfficeHours = async (
17
- buildingId: number
18
- ): Promise<OfficeHourAvailabilityReponse> => {
19
- if (officeHoursCache[buildingId]) {
20
- return officeHoursCache[buildingId];
21
- }
22
- const url = `https://app.meetelise.com/platformApi/connectors/talk_js/leasing_office_hours/${buildingId}`;
23
- const result = await axios.get<OfficeHourAvailabilityReponse>(url);
24
- officeHoursCache[buildingId] = result.data;
25
- return result.data;
26
- };
27
-
28
- export const getDefaultOfficeHours = (): {
29
- startTime: Date;
30
- endTime: Date;
31
- }[] => {
32
- return eachDayOfInterval({
33
- start: startOfWeek(new Date()),
34
- end: endOfWeek(new Date()),
35
- })
36
- .filter((date) => getDay(date) !== 0 && getDay(date) !== 6)
37
- .map((date) => ({
38
- startTime: setHours(date, 9),
39
- endTime: setHours(date, 17),
40
- }));
41
- };
42
-
43
- export const dayNamesInOrder = [
44
- "monday",
45
- "tuesday",
46
- "wednesday",
47
- "thursday",
48
- "friday",
49
- "saturday",
50
- "sunday",
51
- ];
52
-
53
- /**
54
- * Based on the design, we're going with monday as the first day of the week
55
- */
56
- export const getOfficeHourText = async (
57
- buildingId: number
58
- ): Promise<
59
- (string | { dayOfWeek: string; startTime: string; endTime: string })[]
60
- > => {
61
- const rawOfficeHours = await getRawOfficeHours(buildingId);
62
- return dayNamesInOrder.map((dow) => {
63
- const officeHourInfo = rawOfficeHours[dow];
64
- if (!officeHourInfo) {
65
- return dow;
66
- }
67
- return {
68
- dayOfWeek: dow,
69
- startTime: officeHourInfo.start,
70
- endTime: officeHourInfo.end,
71
- };
72
- });
73
- };