@livepreso/api 6.44.0 → 6.46.0

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 (502) hide show
  1. package/.eslintrc.js +3 -0
  2. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  3. package/.rush/temp/256021b5963b4c0221d3dec247b697b9691a9b2c.log +10 -0
  4. package/.rush/temp/2a322f00f12cf9d1e64afe81275cc78d01c49050.log +10 -0
  5. package/.rush/temp/30061f1865447dcbb3f20a305061205f3dbe6091.log +10 -0
  6. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  7. package/.rush/temp/45522aea0dee8cb2be1a53248ba45bd235743b43.log +10 -0
  8. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  9. package/.rush/temp/58fcbb7f15a76326d40e0839ab179755da82a891.log +10 -0
  10. package/.rush/temp/5bc0bba70b733baa4dd976667ba0a1386e516186.log +10 -0
  11. package/.rush/temp/64f1bb696f8d7d7e72907b80df316b127f72e23e.log +10 -0
  12. package/.rush/temp/6f640f951414ea68adb65c17e4ed7527cde54faf.log +10 -0
  13. package/.rush/temp/7c7b958682d4ab5697530be47d0aac62efe1adf1.log +10 -0
  14. package/.rush/temp/82bfb987463fbcfebf04022e6ed00015c73879c8.log +10 -0
  15. package/.rush/temp/844034aa6e542115075e8f3dc5ffc640973e0064.log +10 -0
  16. package/.rush/temp/8b42957a7c15da1f29cb57bee125f13affa70dca.log +10 -0
  17. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  18. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  19. package/.rush/temp/a769db9d81a23000c0e9b1bf4f1a9a9e721d0d7c.log +10 -0
  20. package/.rush/temp/a87d3a8b4ece87ec66f27c86226a9f205617681f.log +10 -0
  21. package/.rush/temp/bb7a5bdcc4af4ad1507f81f33774b31f5b4e4fb7.log +10 -0
  22. package/.rush/temp/c20e29ccaaa9231b38a28bb24451b4ce7562cdc0.log +10 -0
  23. package/.rush/temp/e21303db8f59b4625fd184c9114377d781fd24f8.log +10 -0
  24. package/.rush/temp/e6d303862765b6a5f41dd483d0f9ae083a1fae10.log +10 -0
  25. package/.rush/temp/eaf69fbc059d2f1258d7569136180d4a1d3c7072.log +10 -0
  26. package/.rush/temp/f85d279e2674966daaec83e1c3986a96f86ef304.log +10 -0
  27. package/.rush/temp/fc0a332c5b34c6b90006850cf2d93a48fb4b9a6e.log +10 -0
  28. package/.rush/temp/operation/test/all.log +19 -0
  29. package/.rush/temp/operation/test/state.json +3 -0
  30. package/.rush/temp/{package-deps_test.json → package-deps_build.json} +11 -11
  31. package/.rush/temp/shrinkwrap-deps.json +605 -597
  32. package/CHANGELOG.json +29 -0
  33. package/CHANGELOG.md +15 -1
  34. package/README.md +4 -4
  35. package/api.build.log +1 -1
  36. package/api.test.cache.log +1 -0
  37. package/api.test.log +19 -0
  38. package/bin/test.sh +0 -1
  39. package/cjs/api.js +18 -17
  40. package/cjs/api.js.map +1 -1
  41. package/cjs/api.spec.js +0 -4
  42. package/cjs/api.spec.js.map +1 -1
  43. package/cjs/auth.js +35 -36
  44. package/cjs/auth.js.map +1 -1
  45. package/cjs/auth.spec.js +52 -71
  46. package/cjs/auth.spec.js.map +1 -1
  47. package/cjs/caching.js +2 -7
  48. package/cjs/caching.js.map +1 -1
  49. package/cjs/collections/activity.js +16 -56
  50. package/cjs/collections/activity.js.map +1 -1
  51. package/cjs/collections/adjunct-sections.js +1 -10
  52. package/cjs/collections/adjunct-sections.js.map +1 -1
  53. package/cjs/collections/adjunct-slides.js +1 -10
  54. package/cjs/collections/adjunct-slides.js.map +1 -1
  55. package/cjs/collections/adjunct-sub-slides.js +1 -9
  56. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  57. package/cjs/collections/appointment-adjunct-tags.js +1 -9
  58. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  59. package/cjs/collections/appointment-deckversion-tags.js +1 -9
  60. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  61. package/cjs/collections/appointment-duplicates.js +1 -9
  62. package/cjs/collections/appointment-duplicates.js.map +1 -1
  63. package/cjs/collections/appointment-editors.js +1 -10
  64. package/cjs/collections/appointment-editors.js.map +1 -1
  65. package/cjs/collections/appointment-section-tags.js +1 -9
  66. package/cjs/collections/appointment-section-tags.js.map +1 -1
  67. package/cjs/collections/appointment-slide-tags.js +1 -9
  68. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  69. package/cjs/collections/appointment-tags.js +66 -103
  70. package/cjs/collections/appointment-tags.js.map +1 -1
  71. package/cjs/collections/appointment-templates.js +27 -0
  72. package/cjs/collections/appointment-templates.js.map +1 -0
  73. package/cjs/collections/appointments.js +9 -29
  74. package/cjs/collections/appointments.js.map +1 -1
  75. package/cjs/collections/assets.js +1 -9
  76. package/cjs/collections/assets.js.map +1 -1
  77. package/cjs/collections/auto-adjuncts.js +6 -21
  78. package/cjs/collections/auto-adjuncts.js.map +1 -1
  79. package/cjs/collections/base.js +46 -112
  80. package/cjs/collections/base.js.map +1 -1
  81. package/cjs/collections/base.spec.js +204 -233
  82. package/cjs/collections/base.spec.js.map +1 -1
  83. package/cjs/collections/cms-vals.js +9 -16
  84. package/cjs/collections/cms-vals.js.map +1 -1
  85. package/cjs/collections/contact-phones.js +20 -0
  86. package/cjs/collections/contact-phones.js.map +1 -0
  87. package/cjs/collections/contacts.js +1 -9
  88. package/cjs/collections/contacts.js.map +1 -1
  89. package/cjs/collections/created-assets.js +1 -10
  90. package/cjs/collections/created-assets.js.map +1 -1
  91. package/cjs/collections/customers.js +1 -9
  92. package/cjs/collections/customers.js.map +1 -1
  93. package/cjs/collections/deck-notes.js +1 -10
  94. package/cjs/collections/deck-notes.js.map +1 -1
  95. package/cjs/collections/deck-version-screenshots.js +49 -0
  96. package/cjs/collections/deck-version-screenshots.js.map +1 -0
  97. package/cjs/collections/deck-versions.js +5 -20
  98. package/cjs/collections/deck-versions.js.map +1 -1
  99. package/cjs/collections/decks.js +1 -9
  100. package/cjs/collections/decks.js.map +1 -1
  101. package/cjs/collections/deleted-assets.js +1 -10
  102. package/cjs/collections/deleted-assets.js.map +1 -1
  103. package/cjs/collections/dispatches.js +1 -13
  104. package/cjs/collections/dispatches.js.map +1 -1
  105. package/cjs/collections/event-objects.js +1 -9
  106. package/cjs/collections/event-objects.js.map +1 -1
  107. package/cjs/collections/events.js +1 -9
  108. package/cjs/collections/events.js.map +1 -1
  109. package/cjs/collections/groups.js +1 -9
  110. package/cjs/collections/groups.js.map +1 -1
  111. package/cjs/collections/images.js +1 -9
  112. package/cjs/collections/images.js.map +1 -1
  113. package/cjs/collections/locations.js +1 -9
  114. package/cjs/collections/locations.js.map +1 -1
  115. package/cjs/collections/opportunities.js +1 -9
  116. package/cjs/collections/opportunities.js.map +1 -1
  117. package/cjs/collections/pack-diffs.js +1 -9
  118. package/cjs/collections/pack-diffs.js.map +1 -1
  119. package/cjs/collections/packs.js +1 -9
  120. package/cjs/collections/packs.js.map +1 -1
  121. package/cjs/collections/presets.js +1 -9
  122. package/cjs/collections/presets.js.map +1 -1
  123. package/cjs/collections/section-selections.js +1 -9
  124. package/cjs/collections/section-selections.js.map +1 -1
  125. package/cjs/collections/sections.js +1 -9
  126. package/cjs/collections/sections.js.map +1 -1
  127. package/cjs/collections/slide-selections.js +1 -9
  128. package/cjs/collections/slide-selections.js.map +1 -1
  129. package/cjs/collections/slides.js +1 -9
  130. package/cjs/collections/slides.js.map +1 -1
  131. package/cjs/collections/snapshots.js +1 -9
  132. package/cjs/collections/snapshots.js.map +1 -1
  133. package/cjs/collections/sub-slides.js +1 -9
  134. package/cjs/collections/sub-slides.js.map +1 -1
  135. package/cjs/collections/tags.js +1 -9
  136. package/cjs/collections/tags.js.map +1 -1
  137. package/cjs/collections/teams.js +1 -9
  138. package/cjs/collections/teams.js.map +1 -1
  139. package/cjs/collections/templates.js +1 -9
  140. package/cjs/collections/templates.js.map +1 -1
  141. package/cjs/collections/uploads.js +1 -9
  142. package/cjs/collections/uploads.js.map +1 -1
  143. package/cjs/collections/users.js +1 -9
  144. package/cjs/collections/users.js.map +1 -1
  145. package/cjs/collections.js +33 -86
  146. package/cjs/collections.js.map +1 -1
  147. package/cjs/fixtures.js +187 -0
  148. package/cjs/fixtures.js.map +1 -0
  149. package/cjs/index.js +0 -10
  150. package/cjs/index.js.map +1 -1
  151. package/cjs/log.js +0 -1
  152. package/cjs/log.js.map +1 -1
  153. package/cjs/middleware.js +2 -7
  154. package/cjs/middleware.js.map +1 -1
  155. package/cjs/middlewares/auth.js +1 -17
  156. package/cjs/middlewares/auth.js.map +1 -1
  157. package/cjs/middlewares/base.js +3 -9
  158. package/cjs/middlewares/base.js.map +1 -1
  159. package/cjs/middlewares/json.js +1 -19
  160. package/cjs/middlewares/json.js.map +1 -1
  161. package/cjs/middlewares/redirect.js +5 -21
  162. package/cjs/middlewares/redirect.js.map +1 -1
  163. package/cjs/models/activity-item.js +6 -20
  164. package/cjs/models/activity-item.js.map +1 -1
  165. package/cjs/models/adjunct-section.js +8 -21
  166. package/cjs/models/adjunct-section.js.map +1 -1
  167. package/cjs/models/adjunct-slide.js +8 -21
  168. package/cjs/models/adjunct-slide.js.map +1 -1
  169. package/cjs/models/adjunct-sub-slide.js +1 -16
  170. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  171. package/cjs/models/adjunct.js +34 -10
  172. package/cjs/models/adjunct.js.map +1 -1
  173. package/cjs/models/api.js +1 -6
  174. package/cjs/models/api.js.map +1 -1
  175. package/cjs/models/appointment-adjunct-tags.js +1 -13
  176. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  177. package/cjs/models/appointment-deckversion-tags.js +1 -13
  178. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  179. package/cjs/models/appointment-duplicate.js +3 -25
  180. package/cjs/models/appointment-duplicate.js.map +1 -1
  181. package/cjs/models/appointment-editor.js +1 -14
  182. package/cjs/models/appointment-editor.js.map +1 -1
  183. package/cjs/models/appointment-section-tags.js +1 -13
  184. package/cjs/models/appointment-section-tags.js.map +1 -1
  185. package/cjs/models/appointment-slide-tags.js +1 -13
  186. package/cjs/models/appointment-slide-tags.js.map +1 -1
  187. package/cjs/models/appointment-stats.js +1 -11
  188. package/cjs/models/appointment-stats.js.map +1 -1
  189. package/cjs/models/appointment-tags.js +1 -10
  190. package/cjs/models/appointment-tags.js.map +1 -1
  191. package/cjs/models/appointment-template.js +23 -0
  192. package/cjs/models/appointment-template.js.map +1 -0
  193. package/cjs/models/appointment-viewing.js +1 -8
  194. package/cjs/models/appointment-viewing.js.map +1 -1
  195. package/cjs/models/appointment.js +94 -69
  196. package/cjs/models/appointment.js.map +1 -1
  197. package/cjs/models/asset.js +12 -11
  198. package/cjs/models/asset.js.map +1 -1
  199. package/cjs/models/auto-adjunct-key-check.js +1 -15
  200. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  201. package/cjs/models/auto-adjunct.js +5 -14
  202. package/cjs/models/auto-adjunct.js.map +1 -1
  203. package/cjs/models/base.js +89 -173
  204. package/cjs/models/base.js.map +1 -1
  205. package/cjs/models/base.spec.js +8 -30
  206. package/cjs/models/base.spec.js.map +1 -1
  207. package/cjs/models/choicelist.js +1 -8
  208. package/cjs/models/choicelist.js.map +1 -1
  209. package/cjs/models/cms-val.js +28 -15
  210. package/cjs/models/cms-val.js.map +1 -1
  211. package/cjs/models/cms-val.spec.js +25 -0
  212. package/cjs/models/cms-val.spec.js.map +1 -0
  213. package/cjs/models/contact-phone.js +54 -0
  214. package/cjs/models/contact-phone.js.map +1 -0
  215. package/cjs/models/contact.js +1 -18
  216. package/cjs/models/contact.js.map +1 -1
  217. package/cjs/models/customer.js +5 -30
  218. package/cjs/models/customer.js.map +1 -1
  219. package/cjs/models/deck-note.js +1 -9
  220. package/cjs/models/deck-note.js.map +1 -1
  221. package/cjs/models/deck-tags.js +1 -12
  222. package/cjs/models/deck-tags.js.map +1 -1
  223. package/cjs/models/deck-version-screenshot.js +47 -0
  224. package/cjs/models/deck-version-screenshot.js.map +1 -0
  225. package/cjs/models/deck-version.js +54 -47
  226. package/cjs/models/deck-version.js.map +1 -1
  227. package/cjs/models/deck.js +1 -14
  228. package/cjs/models/deck.js.map +1 -1
  229. package/cjs/models/dispatch-preview.js +1 -13
  230. package/cjs/models/dispatch-preview.js.map +1 -1
  231. package/cjs/models/dispatch.js +1 -23
  232. package/cjs/models/dispatch.js.map +1 -1
  233. package/cjs/models/envs.js +1 -6
  234. package/cjs/models/envs.js.map +1 -1
  235. package/cjs/models/event-object.js +1 -11
  236. package/cjs/models/event-object.js.map +1 -1
  237. package/cjs/models/event.js +1 -13
  238. package/cjs/models/event.js.map +1 -1
  239. package/cjs/models/feed-data.js +6 -13
  240. package/cjs/models/feed-data.js.map +1 -1
  241. package/cjs/models/file.js +1 -11
  242. package/cjs/models/file.js.map +1 -1
  243. package/cjs/models/group.js +1 -11
  244. package/cjs/models/group.js.map +1 -1
  245. package/cjs/models/handover.js +1 -13
  246. package/cjs/models/handover.js.map +1 -1
  247. package/cjs/models/hosted-preso.js +1 -15
  248. package/cjs/models/hosted-preso.js.map +1 -1
  249. package/cjs/models/image.js +30 -11
  250. package/cjs/models/image.js.map +1 -1
  251. package/cjs/models/location.js +1 -13
  252. package/cjs/models/location.js.map +1 -1
  253. package/cjs/models/manifest-json.js +75 -74
  254. package/cjs/models/manifest-json.js.map +1 -1
  255. package/cjs/models/onshare.js +1 -14
  256. package/cjs/models/onshare.js.map +1 -1
  257. package/cjs/models/opportunity.js +1 -14
  258. package/cjs/models/opportunity.js.map +1 -1
  259. package/cjs/models/pack-diff.js +1 -14
  260. package/cjs/models/pack-diff.js.map +1 -1
  261. package/cjs/models/pack.js +1 -12
  262. package/cjs/models/pack.js.map +1 -1
  263. package/cjs/models/preset.js +4 -20
  264. package/cjs/models/preset.js.map +1 -1
  265. package/cjs/models/refresh-request.js +17 -11
  266. package/cjs/models/refresh-request.js.map +1 -1
  267. package/cjs/models/room.js +1 -9
  268. package/cjs/models/room.js.map +1 -1
  269. package/cjs/models/salesforce-lookup.js +1 -12
  270. package/cjs/models/salesforce-lookup.js.map +1 -1
  271. package/cjs/models/section-selection.js +1 -14
  272. package/cjs/models/section-selection.js.map +1 -1
  273. package/cjs/models/section.js +4 -15
  274. package/cjs/models/section.js.map +1 -1
  275. package/cjs/models/slide-selection.js +1 -14
  276. package/cjs/models/slide-selection.js.map +1 -1
  277. package/cjs/models/slide.js +4 -15
  278. package/cjs/models/slide.js.map +1 -1
  279. package/cjs/models/snapshot.js +13 -15
  280. package/cjs/models/snapshot.js.map +1 -1
  281. package/cjs/models/snapshot.spec.js +44 -0
  282. package/cjs/models/snapshot.spec.js.map +1 -0
  283. package/cjs/models/sub-slide.js +1 -12
  284. package/cjs/models/sub-slide.js.map +1 -1
  285. package/cjs/models/support-ticket.js +1 -11
  286. package/cjs/models/support-ticket.js.map +1 -1
  287. package/cjs/models/tag.js +1 -13
  288. package/cjs/models/tag.js.map +1 -1
  289. package/cjs/models/team.js +14 -13
  290. package/cjs/models/team.js.map +1 -1
  291. package/cjs/models/template.js +89 -15
  292. package/cjs/models/template.js.map +1 -1
  293. package/cjs/models/tenancy.js +4 -11
  294. package/cjs/models/tenancy.js.map +1 -1
  295. package/cjs/models/timing-log.js +21 -78
  296. package/cjs/models/timing-log.js.map +1 -1
  297. package/cjs/models/timing-log.spec.js +24 -37
  298. package/cjs/models/timing-log.spec.js.map +1 -1
  299. package/cjs/models/token.js +46 -0
  300. package/cjs/models/token.js.map +1 -0
  301. package/cjs/models/transcribe-socket.js +1 -8
  302. package/cjs/models/transcribe-socket.js.map +1 -1
  303. package/cjs/models/upload.js +1 -7
  304. package/cjs/models/upload.js.map +1 -1
  305. package/cjs/models/user.js +11 -28
  306. package/cjs/models/user.js.map +1 -1
  307. package/cjs/models/user.spec.js +20 -30
  308. package/cjs/models/user.spec.js.map +1 -1
  309. package/cjs/models.js +44 -128
  310. package/cjs/models.js.map +1 -1
  311. package/cjs/presentation/appointment-presentation.js +14 -36
  312. package/cjs/presentation/appointment-presentation.js.map +1 -1
  313. package/cjs/presentation/base-presentation-collection.js +1 -7
  314. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  315. package/cjs/presentation/base-presentation-model.js +108 -33
  316. package/cjs/presentation/base-presentation-model.js.map +1 -1
  317. package/cjs/presentation/base-presentation-model.spec.js +58 -23
  318. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  319. package/cjs/presentation/presentation-deck.js +73 -83
  320. package/cjs/presentation/presentation-deck.js.map +1 -1
  321. package/cjs/presentation/presentation-deck.spec.js +118 -88
  322. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  323. package/cjs/presentation/presentation-decks.js +1 -9
  324. package/cjs/presentation/presentation-decks.js.map +1 -1
  325. package/cjs/presentation/presentation-section.js +70 -84
  326. package/cjs/presentation/presentation-section.js.map +1 -1
  327. package/cjs/presentation/presentation-section.spec.js +296 -238
  328. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  329. package/cjs/presentation/presentation-sections.js +1 -9
  330. package/cjs/presentation/presentation-sections.js.map +1 -1
  331. package/cjs/presentation/presentation-slide.js +74 -84
  332. package/cjs/presentation/presentation-slide.js.map +1 -1
  333. package/cjs/presentation/presentation-slide.spec.js +211 -166
  334. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  335. package/cjs/presentation/presentation-slides.js +1 -9
  336. package/cjs/presentation/presentation-slides.js.map +1 -1
  337. package/cjs/presentation/presentation-subslide.js +3 -23
  338. package/cjs/presentation/presentation-subslide.js.map +1 -1
  339. package/cjs/presentation/presentation-subslide.spec.js +101 -125
  340. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  341. package/cjs/presentation/presentation-subslides.js +1 -9
  342. package/cjs/presentation/presentation-subslides.js.map +1 -1
  343. package/cjs/presentation/presentation.js +87 -32
  344. package/cjs/presentation/presentation.js.map +1 -1
  345. package/cjs/presentation.js +0 -20
  346. package/cjs/presentation.js.map +1 -1
  347. package/cjs/selections.js +81 -0
  348. package/cjs/selections.js.map +1 -0
  349. package/cjs/state-register.js +3 -11
  350. package/cjs/state-register.js.map +1 -1
  351. package/cjs/sync.js +32 -76
  352. package/cjs/sync.js.map +1 -1
  353. package/cjs/utils.js +51 -42
  354. package/cjs/utils.js.map +1 -1
  355. package/cjs/utils.spec.js +0 -4
  356. package/cjs/utils.spec.js.map +1 -1
  357. package/jest.config.js +5 -3
  358. package/package.json +11 -8
  359. package/src/api.js +17 -2
  360. package/src/auth.js +45 -9
  361. package/src/auth.spec.js +2 -0
  362. package/src/collections/activity.js +4 -4
  363. package/src/collections/adjunct-sections.js +1 -1
  364. package/src/collections/adjunct-slides.js +1 -1
  365. package/src/collections/adjunct-sub-slides.js +1 -1
  366. package/src/collections/appointment-adjunct-tags.js +1 -1
  367. package/src/collections/appointment-deckversion-tags.js +2 -2
  368. package/src/collections/appointment-duplicates.js +1 -1
  369. package/src/collections/appointment-editors.js +1 -1
  370. package/src/collections/appointment-section-tags.js +1 -1
  371. package/src/collections/appointment-slide-tags.js +1 -1
  372. package/src/collections/appointment-tags.js +20 -18
  373. package/src/collections/appointment-templates.js +26 -0
  374. package/src/collections/appointments.js +9 -9
  375. package/src/collections/assets.js +1 -1
  376. package/src/collections/auto-adjuncts.js +1 -1
  377. package/src/collections/base.js +20 -10
  378. package/src/collections/base.spec.js +19 -5
  379. package/src/collections/cms-vals.js +5 -1
  380. package/src/collections/contact-phones.js +18 -0
  381. package/src/collections/contacts.js +1 -1
  382. package/src/collections/created-assets.js +1 -1
  383. package/src/collections/customers.js +1 -1
  384. package/src/collections/deck-notes.js +1 -1
  385. package/src/collections/deck-version-screenshots.js +48 -0
  386. package/src/collections/deck-versions.js +1 -1
  387. package/src/collections/decks.js +1 -1
  388. package/src/collections/deleted-assets.js +1 -1
  389. package/src/collections/dispatches.js +2 -2
  390. package/src/collections/event-objects.js +1 -1
  391. package/src/collections/events.js +1 -1
  392. package/src/collections/groups.js +1 -1
  393. package/src/collections/images.js +1 -1
  394. package/src/collections/locations.js +1 -1
  395. package/src/collections/opportunities.js +1 -1
  396. package/src/collections/pack-diffs.js +1 -1
  397. package/src/collections/packs.js +1 -1
  398. package/src/collections/presets.js +1 -1
  399. package/src/collections/section-selections.js +1 -1
  400. package/src/collections/sections.js +1 -1
  401. package/src/collections/slide-selections.js +1 -1
  402. package/src/collections/slides.js +1 -1
  403. package/src/collections/snapshots.js +1 -1
  404. package/src/collections/sub-slides.js +1 -1
  405. package/src/collections/tags.js +1 -1
  406. package/src/collections/teams.js +1 -1
  407. package/src/collections/templates.js +1 -1
  408. package/src/collections/uploads.js +1 -1
  409. package/src/collections/users.js +1 -1
  410. package/src/collections.js +3 -0
  411. package/src/fixtures.js +193 -0
  412. package/src/models/activity-item.js +3 -1
  413. package/src/models/adjunct-section.js +7 -2
  414. package/src/models/adjunct-slide.js +7 -2
  415. package/src/models/adjunct-sub-slide.js +1 -1
  416. package/src/models/adjunct.js +39 -1
  417. package/src/models/appointment-adjunct-tags.js +1 -1
  418. package/src/models/appointment-deckversion-tags.js +1 -1
  419. package/src/models/appointment-duplicate.js +1 -1
  420. package/src/models/appointment-editor.js +1 -1
  421. package/src/models/appointment-section-tags.js +1 -1
  422. package/src/models/appointment-slide-tags.js +1 -1
  423. package/src/models/appointment-stats.js +1 -1
  424. package/src/models/appointment-tags.js +1 -1
  425. package/src/models/appointment-template.js +19 -0
  426. package/src/models/appointment-viewing.js +1 -1
  427. package/src/models/appointment.js +112 -37
  428. package/src/models/asset.js +15 -1
  429. package/src/models/auto-adjunct-key-check.js +1 -1
  430. package/src/models/auto-adjunct.js +4 -1
  431. package/src/models/base.js +55 -22
  432. package/src/models/base.spec.js +34 -27
  433. package/src/models/choicelist.js +1 -1
  434. package/src/models/cms-val.js +24 -1
  435. package/src/models/cms-val.spec.js +14 -0
  436. package/src/models/contact-phone.js +57 -0
  437. package/src/models/contact.js +1 -1
  438. package/src/models/customer.js +3 -3
  439. package/src/models/deck-note.js +1 -1
  440. package/src/models/deck-tags.js +1 -1
  441. package/src/models/deck-version-screenshot.js +48 -0
  442. package/src/models/deck-version.js +60 -9
  443. package/src/models/deck.js +1 -1
  444. package/src/models/dispatch-preview.js +1 -1
  445. package/src/models/dispatch.js +1 -1
  446. package/src/models/event-object.js +1 -1
  447. package/src/models/event.js +1 -1
  448. package/src/models/feed-data.js +3 -1
  449. package/src/models/file.js +1 -1
  450. package/src/models/group.js +1 -1
  451. package/src/models/handover.js +1 -1
  452. package/src/models/hosted-preso.js +1 -1
  453. package/src/models/image.js +33 -1
  454. package/src/models/location.js +1 -1
  455. package/src/models/manifest-json.js +57 -6
  456. package/src/models/onshare.js +1 -1
  457. package/src/models/opportunity.js +1 -1
  458. package/src/models/pack-diff.js +1 -1
  459. package/src/models/pack.js +1 -1
  460. package/src/models/preset.js +3 -1
  461. package/src/models/refresh-request.js +15 -1
  462. package/src/models/room.js +1 -1
  463. package/src/models/salesforce-lookup.js +1 -1
  464. package/src/models/section-selection.js +1 -1
  465. package/src/models/section.js +3 -1
  466. package/src/models/slide-selection.js +1 -1
  467. package/src/models/slide.js +3 -1
  468. package/src/models/snapshot.js +11 -2
  469. package/src/models/snapshot.spec.js +31 -0
  470. package/src/models/sub-slide.js +1 -1
  471. package/src/models/support-ticket.js +1 -1
  472. package/src/models/tag.js +1 -1
  473. package/src/models/team.js +14 -3
  474. package/src/models/template.js +74 -2
  475. package/src/models/tenancy.js +4 -1
  476. package/src/models/timing-log.js +2 -2
  477. package/src/models/timing-log.spec.js +1 -1
  478. package/src/models/token.js +47 -0
  479. package/src/models/transcribe-socket.js +1 -1
  480. package/src/models/user.js +15 -2
  481. package/src/models.js +4 -0
  482. package/src/presentation/appointment-presentation.js +13 -5
  483. package/src/presentation/base-presentation-collection.js +1 -1
  484. package/src/presentation/base-presentation-model.js +88 -3
  485. package/src/presentation/base-presentation-model.spec.js +80 -3
  486. package/src/presentation/presentation-deck.js +65 -22
  487. package/src/presentation/presentation-deck.spec.js +55 -2
  488. package/src/presentation/presentation-decks.js +1 -1
  489. package/src/presentation/presentation-section.js +91 -31
  490. package/src/presentation/presentation-section.spec.js +142 -10
  491. package/src/presentation/presentation-sections.js +1 -1
  492. package/src/presentation/presentation-slide.js +69 -23
  493. package/src/presentation/presentation-slide.spec.js +105 -9
  494. package/src/presentation/presentation-slides.js +1 -1
  495. package/src/presentation/presentation-subslide.js +5 -5
  496. package/src/presentation/presentation-subslide.spec.js +3 -3
  497. package/src/presentation/presentation-subslides.js +1 -1
  498. package/src/presentation/presentation.js +27 -8
  499. package/src/selections.js +71 -0
  500. package/src/sync.js +1 -1
  501. package/src/utils.js +31 -8
  502. package/src/utils.spec.js +4 -4
@@ -0,0 +1,193 @@
1
+ import * as collections from "./collections.js";
2
+ import * as models from "./models.js";
3
+ import * as presentation from "./presentation.js";
4
+
5
+ import { Factory } from "rosie";
6
+ import { faker } from "@faker-js/faker";
7
+
8
+ const presentationModels = {
9
+ AppointmentPresentation: presentation.AppointmentPresentation,
10
+ PresentationDeck: presentation.PresentationDeck,
11
+ PresentationSection: presentation.PresentationSection,
12
+ PresentationSlide: presentation.PresentationSlide,
13
+ PresentationSubSlide: presentation.PresentationSubSlide,
14
+ Presentation: presentation.Presentation,
15
+ };
16
+
17
+ const presentationCollections = {
18
+ PresentationDecks: presentation.PresentationDecks,
19
+ PresentationSections: presentation.PresentationSections,
20
+ PresentationSlides: presentation.PresentationSlides,
21
+ PresentationSubSlides: presentation.PresentationSubSlides,
22
+ };
23
+
24
+ function makeFactory(name, Model, ignoreFields = []) {
25
+ const factory = Factory.define(name, Model).sequence("id");
26
+
27
+ const { _definition: definition, _children: children } = Model.prototype;
28
+
29
+ if (definition) {
30
+ for (const [key, value] of Object.entries(definition)) {
31
+ if (typeof value.default !== "undefined") {
32
+ // If we have a default actually specified on the model, use that
33
+ let defaultValue = value.default;
34
+ if (typeof defaultValue === "function") {
35
+ defaultValue = defaultValue();
36
+ }
37
+ factory.attr(key, defaultValue);
38
+ } else if (value.type === "string") {
39
+ factory.attr(key, "");
40
+ } else if (value.type === "number") {
41
+ factory.attr(key, 0);
42
+ } else if (value.type === "array") {
43
+ factory.attr(key, []);
44
+ } else if (value.type === "object") {
45
+ factory.attr(key, {});
46
+ }
47
+ }
48
+ }
49
+
50
+ if (children) {
51
+ for (const [key, value] of Object.entries(children)) {
52
+ if (ignoreFields.includes(key)) {
53
+ continue;
54
+ }
55
+ factory.attr(key, () => {
56
+ return Factory.build(value);
57
+ });
58
+ }
59
+ }
60
+
61
+ return factory;
62
+ }
63
+
64
+ const allModels = { ...models, ...presentationModels };
65
+
66
+ const factories = Object.keys(allModels).reduce(
67
+ (registered, key) => {
68
+ registered[key] = makeFactory(key, allModels[key]);
69
+ return registered;
70
+ },
71
+ {},
72
+ );
73
+
74
+ export function M(modelName, opts) {
75
+ if (!factories[modelName]) {
76
+ throw new Error(
77
+ `Model with name '${modelName}' not found. Check your spelling of the model`,
78
+ );
79
+ }
80
+ const model = factories[modelName].build(opts);
81
+ return model;
82
+ }
83
+
84
+ export function C(collectionName, data) {
85
+ const allCollections = { ...collections, ...presentationCollections };
86
+ const Collection = allCollections[collectionName];
87
+ if (!Collection) {
88
+ throw new Error(`Collection with name ${collectionName} does not exist`);
89
+ }
90
+
91
+ const modelName = Collection.prototype.model;
92
+
93
+ return new Collection(data.map((d) => M(modelName, d)));
94
+ }
95
+
96
+ factories.AppointmentModel.attr("latest_snapshot", null)
97
+ .attr("latest_feed_data", null)
98
+ .attr("latest_tele", null)
99
+ .attr("stats", null)
100
+ .attr("appointmentssection_set", [])
101
+ .attr("appointmentsslide_set", [])
102
+ .after((appt) => {
103
+ if (!appt.latest_snapshot) {
104
+ appt.latest_snapshot = M("SnapshotModel", { appointment: appt });
105
+ }
106
+
107
+ if (!appt.latest_feed_data) {
108
+ appt.latest_feed_data = M("FeedDataModel", {
109
+ snapshot: appt.latest_snapshot,
110
+ });
111
+ }
112
+ });
113
+
114
+ factories.DeckModel.attr("approved_version", null)
115
+ .attr("head_version", null)
116
+ .after((deck) => {
117
+ if (!deck.approved_version || !deck.head_version) {
118
+ const dv = M("DeckVersionModel", { deck });
119
+ if (!deck.approved_version) {
120
+ deck.approved_version = dv;
121
+ }
122
+ if (!deck.head_version) {
123
+ deck.head_version = dv;
124
+ }
125
+ }
126
+ });
127
+
128
+ factories.SnapshotModel.attr("creation_status", "ready");
129
+
130
+ factories.AutoAdjunctModel.attr("team", null)
131
+ .attr("enabled", true)
132
+ .sequence("sequence")
133
+ .attr("_tenancy", {
134
+ editable: true,
135
+ owner_id: null,
136
+ })
137
+ .after((auto) => {
138
+ if (auto.template?.cmsvalkey_set) {
139
+ auto.cmsvalkey_set = auto.template.cmsvalkey_set.map((key) => {
140
+ return `${key}-autoadjunct-${auto.id}`;
141
+ });
142
+ }
143
+ });
144
+
145
+ factories.DeckVersionModel.attr("deck", null)
146
+ .attr("approved", true)
147
+ .attr("creation_status", "created")
148
+ .attr("approval", "approved")
149
+ .after((dv) => {
150
+ if (!dv.deck) {
151
+ dv.deck = M("DeckModel", {
152
+ approved_version: dv,
153
+ head_version: dv,
154
+ });
155
+ }
156
+ });
157
+
158
+ factories.UserModel.attr("first_name", () => faker.name.firstName()).attr(
159
+ "last_name",
160
+ () => faker.name.lastName(),
161
+ );
162
+
163
+ factories.TenancyModel.attr("administrator", null);
164
+
165
+ factories.TemplateModel.sequence("sequence")
166
+ // Prevent max call stack overflow
167
+ .attr("original_template", null)
168
+ .sequence("index")
169
+ .after((template) => {
170
+ if (template.original_template?.index_asset) {
171
+ template.index_asset = template.original_template.index_asset.url();
172
+ }
173
+ });
174
+
175
+ factories.ContactModel.attr("customer", null)
176
+ .attr("name_first", () => faker.name.firstName())
177
+ .attr("name_last", () => faker.name.lastName())
178
+ .attr("email", () => faker.internet.email())
179
+ .after((contact, options) => {
180
+ if (!contact.customer) {
181
+ contact.customer = M("CustomerModel", {
182
+ contact_set: [contact],
183
+ });
184
+ }
185
+
186
+ contact.customer.contact_set = [contact.toJSON()];
187
+ });
188
+
189
+ factories.CustomerModel.attr("default_location", null)
190
+ .attr("default_opportunity", null)
191
+ .attr("title", () => faker.company.name());
192
+
193
+ export { Factory };
@@ -38,6 +38,8 @@ export const ActivityItemModel = BaseModel.extend(
38
38
  notyours: "boolean",
39
39
  onshare: "boolean",
40
40
  view_type: "string",
41
+ is_muted: "boolean",
42
+ appointment_is_deleted: "boolean",
41
43
  },
42
44
 
43
45
  children: {
@@ -58,7 +60,7 @@ export const ActivityItemModel = BaseModel.extend(
58
60
  ...data,
59
61
  };
60
62
  },
61
- }
63
+ },
62
64
  );
63
65
 
64
66
  register("ActivityItemModel", ActivityItemModel);
@@ -43,7 +43,10 @@ export const AdjunctSectionModel = BaseModel.extend(
43
43
  title: "string",
44
44
  sequence: "number",
45
45
  deleted: "boolean",
46
- enabled: "boolean",
46
+ enabled: {
47
+ type: "boolean",
48
+ default: true,
49
+ },
47
50
  created_by_autoadjunct: "boolean",
48
51
  impostor: "boolean",
49
52
  tags: "array",
@@ -67,8 +70,10 @@ export const AdjunctSectionModel = BaseModel.extend(
67
70
  const data = {
68
71
  sequence: this.sequence,
69
72
  appointment: this._retrieveURL(this.appointment),
73
+ template: this._retrieveURL(this.template),
70
74
  deckversion: this._retrieveURL(this.deckversion),
71
75
  enabled: this.enabled,
76
+ tags: this.tags,
72
77
  };
73
78
 
74
79
  if (this.adjunct) {
@@ -90,7 +95,7 @@ export const AdjunctSectionModel = BaseModel.extend(
90
95
 
91
96
  return data;
92
97
  },
93
- }
98
+ },
94
99
  );
95
100
 
96
101
  register("AdjunctSectionModel", AdjunctSectionModel);
@@ -43,7 +43,10 @@ export const AdjunctSlideModel = BaseModel.extend(
43
43
  modified_date: "date",
44
44
  title: "string",
45
45
  sequence: "number",
46
- enabled: "boolean",
46
+ enabled: {
47
+ type: "boolean",
48
+ default: true,
49
+ },
47
50
  created_by_autoadjunct: "boolean",
48
51
  tags: "array",
49
52
  },
@@ -67,8 +70,10 @@ export const AdjunctSlideModel = BaseModel.extend(
67
70
  const data = {
68
71
  sequence: this.sequence,
69
72
  appointment: this._retrieveURL(this.appointment),
73
+ template: this._retrieveURL(this.template),
70
74
  section: this._retrieveURL(this.section),
71
75
  enabled: this.enabled,
76
+ tags: this.tags,
72
77
  };
73
78
 
74
79
  if (this.adjunct) {
@@ -90,7 +95,7 @@ export const AdjunctSlideModel = BaseModel.extend(
90
95
 
91
96
  return data;
92
97
  },
93
- }
98
+ },
94
99
  );
95
100
 
96
101
  register("AdjunctSlideModel", AdjunctSlideModel);
@@ -70,7 +70,7 @@ export const AdjunctSubSlideModel = BaseModel.extend(
70
70
 
71
71
  return data;
72
72
  },
73
- }
73
+ },
74
74
  );
75
75
 
76
76
  register("AdjunctSubSlideModel", AdjunctSubSlideModel);
@@ -31,7 +31,45 @@ export const AdjunctModel = BaseModel.extend(
31
31
  children: {
32
32
  template: "TemplateModel",
33
33
  },
34
- }
34
+
35
+ url() {
36
+ if (this._data.url) {
37
+ return this._data.url;
38
+ }
39
+
40
+ if (this._data.id) {
41
+ return `${this.getResourceURL()}adjuncts/${this._data.id}/`;
42
+ }
43
+
44
+ return null;
45
+ },
46
+
47
+ getID() {
48
+ if (this._data.id) {
49
+ return this._data.id;
50
+ }
51
+
52
+ const resourceURL = `${this.getResourceURL()}adjuncts/`;
53
+ const url = this.url();
54
+
55
+ return this._getIDFromURL(url, resourceURL);
56
+ },
57
+
58
+ toJSON() {
59
+ const data = BaseModel.prototype.toJSON.apply(this, arguments);
60
+
61
+ // There's no "adjuncts" resource endpoint, so we have to use a
62
+ // workaround to get the ID.
63
+ const id = this.getID();
64
+ const url = this.url();
65
+
66
+ return {
67
+ ...data,
68
+ url,
69
+ id,
70
+ };
71
+ },
72
+ },
35
73
  );
36
74
 
37
75
  register("AdjunctModel", AdjunctModel);
@@ -35,7 +35,7 @@ export const AppointmentAdjunctTagsModel = BaseModel.extend(
35
35
  adjunct: "AdjunctModel",
36
36
  user: "UserModel",
37
37
  },
38
- }
38
+ },
39
39
  );
40
40
 
41
41
  register("AppointmentAdjunctTagsModel", AppointmentAdjunctTagsModel);
@@ -35,7 +35,7 @@ export const AppointmentDeckVersionTagsModel = BaseModel.extend(
35
35
  deckversion: "DeckVersionModel",
36
36
  user: "UserModel",
37
37
  },
38
- }
38
+ },
39
39
  );
40
40
 
41
41
  register("AppointmentDeckVersionTagsModel", AppointmentDeckVersionTagsModel);
@@ -67,7 +67,7 @@ export const AppointmentDuplicateModel = BaseModel.extend(
67
67
 
68
68
  return data;
69
69
  },
70
- }
70
+ },
71
71
  );
72
72
 
73
73
  register("AppointmentDuplicateModel", AppointmentDuplicateModel);
@@ -50,7 +50,7 @@ export const AppointmentEditorModel = BaseModel.extend(
50
50
 
51
51
  return data;
52
52
  },
53
- }
53
+ },
54
54
  );
55
55
 
56
56
  register("AppointmentEditorModel", AppointmentEditorModel);
@@ -35,7 +35,7 @@ export const AppointmentSectionTagsModel = BaseModel.extend(
35
35
  section: "SectionModel",
36
36
  user: "UserModel",
37
37
  },
38
- }
38
+ },
39
39
  );
40
40
 
41
41
  register("AppointmentSectionTagsModel", AppointmentSectionTagsModel);
@@ -35,7 +35,7 @@ export const AppointmentSlideTagsModel = BaseModel.extend(
35
35
  slide: "SlideModel",
36
36
  user: "UserModel",
37
37
  },
38
- }
38
+ },
39
39
  );
40
40
 
41
41
  register("AppointmentSlideTagsModel", AppointmentSlideTagsModel);
@@ -33,7 +33,7 @@ export const AppointmentStatsModel = BaseModel.extend(
33
33
  children: {
34
34
  appointment: "AppointmentModel",
35
35
  },
36
- }
36
+ },
37
37
  );
38
38
 
39
39
  register("AppointmentStatsModel", AppointmentStatsModel);
@@ -31,7 +31,7 @@ export const AppointmentTagsModel = BaseModel.extend(
31
31
  appointment: "AppointmentModel",
32
32
  user: "UserModel",
33
33
  },
34
- }
34
+ },
35
35
  );
36
36
 
37
37
  AppointmentTagsModel.canBeEmpty = true;
@@ -0,0 +1,19 @@
1
+ import { TemplateModel } from "./template.js";
2
+ import { register } from "../state-register.js";
3
+
4
+ /**
5
+ * @constructor
6
+ * @alias models.AppointmentTemplateModel
7
+ * @extends models.BaseModel
8
+ */
9
+ export const AppointmentTemplateModel = TemplateModel.extend({
10
+ modelName: "appointment-templates",
11
+
12
+ getResourceURL() {
13
+ return TemplateModel.prototype.getResourceURL.call({
14
+ modelName: TemplateModel.prototype.modelName,
15
+ });
16
+ },
17
+ });
18
+
19
+ register("AppointmentTemplateModel", AppointmentTemplateModel);
@@ -22,7 +22,7 @@ export const AppointmentViewingModel = BaseModel.extend(
22
22
  top_slides: "array",
23
23
  not_viewed: "array",
24
24
  },
25
- }
25
+ },
26
26
  );
27
27
 
28
28
  register("AppointmentViewingModel", AppointmentViewingModel);
@@ -15,13 +15,20 @@ import "../collections/slide-selections.js";
15
15
  import "../collections/dispatches.js";
16
16
  import "../collections/users.js";
17
17
  import "../collections/appointment-tags";
18
+ import "../collections/appointment-deckversion-tags";
19
+ import "../collections/appointment-section-tags";
20
+ import "../collections/appointment-slide-tags";
21
+ import "../collections/appointment-adjunct-tags";
18
22
 
19
23
  import { AdjunctSectionCollection } from "../collections/adjunct-sections.js";
20
24
  import { AdjunctSlideCollection } from "../collections/adjunct-slides.js";
21
25
  import { AdjunctSubSlideCollection } from "../collections/adjunct-sub-slides.js";
26
+ import { AppointmentTemplateCollection } from "../collections/appointment-templates.js";
22
27
  import { BaseModel } from "./base.js";
28
+ import { ContactPhoneCollection } from "../collections/contact-phones.js";
23
29
  import { DeckNoteCollection } from "../collections/deck-notes.js";
24
30
  import Promise from "bluebird";
31
+ import _ from "lodash";
25
32
  import log from "../log.js";
26
33
  import moment from "moment";
27
34
  import { register } from "../state-register.js";
@@ -50,9 +57,11 @@ export const AppointmentModel = BaseModel.extend(
50
57
  * @property {string} display_title
51
58
  * @property {string} viewtype
52
59
  * @property {boolean} support_mode
60
+ * @property {boolean} is_muted
53
61
  * @property {date} no_edit_after
54
62
  * @property {date} no_share_after
55
63
  * @property {date} no_delete_after
64
+ * @property {string} share_visibility_mode
56
65
  */
57
66
  props: {
58
67
  name: "stringSanitized",
@@ -73,10 +82,12 @@ export const AppointmentModel = BaseModel.extend(
73
82
  display_title: "stringSanitized",
74
83
  viewtype: "string",
75
84
  support_mode: "boolean",
85
+ is_muted: "boolean",
76
86
  no_edit_after: "date",
77
87
  no_share_after: "date",
78
88
  no_delete_after: "date",
79
89
  no_snapshot_create_after: "date",
90
+ share_visibility_mode: "string",
80
91
  },
81
92
 
82
93
  /**
@@ -150,6 +161,17 @@ export const AppointmentModel = BaseModel.extend(
150
161
  return adjunctSubSlides;
151
162
  },
152
163
  },
164
+ includedTemplates: {
165
+ deps: ["id"],
166
+ fn() {
167
+ return new AppointmentTemplateCollection(
168
+ {},
169
+ {
170
+ appointment: this,
171
+ },
172
+ );
173
+ },
174
+ },
153
175
  deckNotes: {
154
176
  deps: ["id"],
155
177
  fn() {
@@ -209,27 +231,45 @@ export const AppointmentModel = BaseModel.extend(
209
231
  return this.cannotEdit || this.cannotDelete;
210
232
  },
211
233
  },
234
+ // This property should be set by the calling code of the appointment and be the set of
235
+ // contact phones for all contacts on this preso. It must be fetchd and set after the contact_set
236
+ // is fetched. It's up to the calling code to decide if this property is required and
237
+ // therefore the extra fetch
238
+ contactPhones: {
239
+ deps: ["id", "contact_set"],
240
+ fn() {
241
+ return new ContactPhoneCollection();
242
+ },
243
+ },
244
+ },
245
+
246
+ getHooksPath() {
247
+ if (!this.deckversion_set.length) {
248
+ throw new Error("Requires a deckversion to get hooks.");
249
+ }
250
+ return this.deckversion_set.first().getHooksPath();
212
251
  },
213
- fetchAll(fetchSelf = false, options = {}) {
252
+
253
+ fetchAll(fetchSelf = false, fetchOptions = {}) {
214
254
  return Promise.resolve()
215
255
  .then(() => {
216
256
  if (!this._url || fetchSelf) {
217
- return this.fetch(options);
257
+ return this.fetch(fetchOptions);
218
258
  }
219
259
  return Promise.resolve();
220
260
  })
221
261
  .then(() => {
222
262
  const fetches = [
223
- this.deckversion_set.fetchModels(options),
224
- this.appointmentssection_set.fetch(options),
225
- this.appointmentsslide_set.fetch(options),
226
- this.appointmenteditor_set.fetch(options),
227
- this.adjunctSlides.fetch(options),
228
- this.adjunctSections.fetch(options),
229
- this.adjunctSubSlides.fetch(options),
230
- this.contact_set.fetchSet(options),
231
- this.tags.fetch(options),
232
- this.user.fetch(options).catch((e) => {
263
+ this.deckversion_set?.fetchModels(fetchOptions),
264
+ this.appointmentssection_set?.fetch(fetchOptions),
265
+ this.appointmentsslide_set?.fetch(fetchOptions),
266
+ this.appointmenteditor_set?.fetch(fetchOptions),
267
+ this.adjunctSlides?.fetch(fetchOptions),
268
+ this.adjunctSections?.fetch(fetchOptions),
269
+ this.adjunctSubSlides?.fetch(fetchOptions),
270
+ this.contact_set?.fetchSet(fetchOptions),
271
+ this.tags?.fetch(fetchOptions),
272
+ this.user?.fetch(fetchOptions)?.catch((e) => {
233
273
  if (e.status && e.status === 404) {
234
274
  // It's possible for a user to be deactivated, which means they'll
235
275
  // return with a 404. We want to be able to still load the preso,
@@ -239,51 +279,84 @@ export const AppointmentModel = BaseModel.extend(
239
279
  }
240
280
  throw e;
241
281
  }),
242
- this.deckNotes.fetch(options),
243
- this.opportunity_set.fetchSet(options).catch(() => {
244
- log.error(
245
- `Failed to fetch Opportunity set`,
246
- this.opportunity_set.toJSON()
247
- );
248
- return Promise.resolve();
249
- }),
282
+ this.deckNotes?.fetch(fetchOptions),
283
+ this.includedTemplates.fetch(fetchOptions),
284
+ this.opportunity_set
285
+ ?.fetchSet(fetchOptions)
286
+ ?.then(() => {
287
+ return Promise.all(
288
+ this.opportunity_set.map((opp) =>
289
+ opp.customer.fetch(fetchOptions),
290
+ ),
291
+ );
292
+ })
293
+ ?.catch(() => {
294
+ log.error(
295
+ `Failed to fetch Opportunity set`,
296
+ this.opportunity_set.toJSON(),
297
+ );
298
+ return Promise.resolve();
299
+ }),
250
300
  ];
251
301
 
252
302
  if (this.latest_snapshot) {
253
- fetches.push(this.latest_snapshot.fetch(options));
303
+ fetches.push(this.latest_snapshot.fetch(fetchOptions));
254
304
  }
255
305
 
256
306
  if (this.latest_feed_data) {
257
- fetches.push(this.latest_feed_data.fetch(options));
307
+ fetches.push(this.latest_feed_data.fetch(fetchOptions));
258
308
  }
259
309
 
260
310
  if (this.latest_tele) {
261
- fetches.push(this.latest_tele.fetch(options));
311
+ fetches.push(this.latest_tele.fetch(fetchOptions));
262
312
  }
263
313
 
264
314
  return Promise.all(fetches);
265
315
  })
266
316
  .then(() => {
317
+ return Promise.all(
318
+ this.deckversion_set.map((model) => {
319
+ return Promise.all([
320
+ model.screenshots.fetch(fetchOptions),
321
+ model.template_set.fetchSet(fetchOptions),
322
+ model.manifest_json.fetch(fetchOptions),
323
+ model.deck.fetch(fetchOptions),
324
+ ]);
325
+ }),
326
+ );
327
+ })
328
+ .then(() => {
329
+ const deckversionTemplates =
330
+ this.deckversion_set.first().template_set.models;
331
+
332
+ const allTemplates = _.uniqBy(
333
+ this.includedTemplates.models.concat(deckversionTemplates),
334
+ "id",
335
+ );
336
+
337
+ async function getTemplateOrFetch(adj) {
338
+ const existingTemplate = allTemplates.find(
339
+ (t) => t.id === adj.template.id,
340
+ );
341
+ if (existingTemplate) {
342
+ adj.template = existingTemplate;
343
+ } else {
344
+ await adj.template.fetch(fetchOptions);
345
+ }
346
+
347
+ return adj;
348
+ }
349
+
267
350
  const adjunctSlides = this.adjunctSlides
268
351
  .filter((adj) => adj.template)
269
- .map((adj) => adj.template.fetch(options));
352
+ .map((adj) => getTemplateOrFetch(adj));
353
+
270
354
  const adjunctSections = this.adjunctSections
271
355
  .filter((adj) => adj.template)
272
- .map((adj) => adj.template.fetch(options));
356
+ .map((adj) => getTemplateOrFetch(adj));
273
357
 
274
358
  return Promise.all([...adjunctSlides, ...adjunctSections]);
275
359
  })
276
- .then(() => {
277
- return Promise.all(
278
- this.deckversion_set.map((model) => {
279
- return Promise.all([
280
- model.template_set.fetchSet(options),
281
- model.manifest_json.fetch(options),
282
- model.deck.fetch(options),
283
- ]);
284
- })
285
- );
286
- })
287
360
  .return(this);
288
361
  },
289
362
 
@@ -303,11 +376,13 @@ export const AppointmentModel = BaseModel.extend(
303
376
  viewtype: appointment.viewtype,
304
377
  preset: this._retrieveURL(appointment.preset),
305
378
  locks: appointment.locks,
379
+ is_muted: appointment.is_muted,
306
380
  no_edit_after: appointment.no_edit_after,
307
381
  no_share_after: appointment.no_share_after,
308
382
  no_delete_after: appointment.no_delete_after,
309
383
  team: this._retrieveURL(appointment.team),
310
384
  editors_can_change_editors: appointment.editors_can_change_editors,
385
+ share_visibility_mode: appointment.share_visibility_mode,
311
386
  };
312
387
 
313
388
  if (this.id) {
@@ -316,7 +391,7 @@ export const AppointmentModel = BaseModel.extend(
316
391
 
317
392
  return data;
318
393
  },
319
- }
394
+ },
320
395
  );
321
396
 
322
397
  register("AppointmentModel", AppointmentModel);