@livepreso/api 6.45.0 → 6.47.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 (364) hide show
  1. package/.rush/temp/1aebf46f78ad5c45f82f8147751890adb37bef9d.log +10 -0
  2. package/.rush/temp/3cdc82c352e8ed90607952873f3aa4c200490874.log +10 -0
  3. package/.rush/temp/5489ab737e406518983c16c57fc3e1edc07c0341.log +10 -0
  4. package/.rush/temp/924652444ab5a6063f328a2217123a2227058896.log +10 -0
  5. package/.rush/temp/9f2030f96d62f3e38052e35201819a216566f14f.log +10 -0
  6. package/.rush/temp/operation/test/all.log +19 -0
  7. package/.rush/temp/operation/test/state.json +3 -0
  8. package/.rush/temp/package-deps_build.json +156 -141
  9. package/.rush/temp/shrinkwrap-deps.json +281 -214
  10. package/CHANGELOG.json +29 -0
  11. package/CHANGELOG.md +15 -1
  12. package/README.md +4 -4
  13. package/api.build.log +6 -3
  14. package/api.test.cache.log +1 -0
  15. package/api.test.log +19 -0
  16. package/cjs/api.js +18 -2
  17. package/cjs/api.js.map +1 -1
  18. package/cjs/auth.js +3 -3
  19. package/cjs/auth.js.map +1 -1
  20. package/cjs/collections/activity.js.map +1 -1
  21. package/cjs/collections/adjunct-sections.js.map +1 -1
  22. package/cjs/collections/adjunct-slides.js.map +1 -1
  23. package/cjs/collections/adjunct-sub-slides.js.map +1 -1
  24. package/cjs/collections/appointment-adjunct-tags.js.map +1 -1
  25. package/cjs/collections/appointment-deckversion-tags.js.map +1 -1
  26. package/cjs/collections/appointment-editors.js.map +1 -1
  27. package/cjs/collections/appointment-section-tags.js.map +1 -1
  28. package/cjs/collections/appointment-slide-tags.js.map +1 -1
  29. package/cjs/collections/appointment-tags.js +9 -7
  30. package/cjs/collections/appointment-tags.js.map +1 -1
  31. package/cjs/collections/appointment-templates.js +36 -0
  32. package/cjs/collections/appointment-templates.js.map +1 -0
  33. package/cjs/collections/appointments.js.map +1 -1
  34. package/cjs/collections/assets.js.map +1 -1
  35. package/cjs/collections/auto-adjuncts.js.map +1 -1
  36. package/cjs/collections/base.js +4 -0
  37. package/cjs/collections/base.js.map +1 -1
  38. package/cjs/collections/base.spec.js.map +1 -1
  39. package/cjs/collections/cms-vals.js +5 -0
  40. package/cjs/collections/cms-vals.js.map +1 -1
  41. package/cjs/collections/contact-phones.js +28 -0
  42. package/cjs/collections/contact-phones.js.map +1 -0
  43. package/cjs/collections/contacts.js.map +1 -1
  44. package/cjs/collections/created-assets.js.map +1 -1
  45. package/cjs/collections/customers.js.map +1 -1
  46. package/cjs/collections/deck-notes.js.map +1 -1
  47. package/cjs/collections/deck-version-screenshots.js.map +1 -1
  48. package/cjs/collections/deck-versions.js.map +1 -1
  49. package/cjs/collections/decks.js.map +1 -1
  50. package/cjs/collections/deleted-assets.js.map +1 -1
  51. package/cjs/collections/dispatches.js.map +1 -1
  52. package/cjs/collections/event-objects.js.map +1 -1
  53. package/cjs/collections/events.js.map +1 -1
  54. package/cjs/collections/groups.js.map +1 -1
  55. package/cjs/collections/images.js.map +1 -1
  56. package/cjs/collections/locations.js.map +1 -1
  57. package/cjs/collections/opportunities.js.map +1 -1
  58. package/cjs/collections/pack-diffs.js.map +1 -1
  59. package/cjs/collections/packs.js.map +1 -1
  60. package/cjs/collections/presets.js.map +1 -1
  61. package/cjs/collections/section-selections.js.map +1 -1
  62. package/cjs/collections/sections.js.map +1 -1
  63. package/cjs/collections/signers.js +28 -0
  64. package/cjs/collections/signers.js.map +1 -0
  65. package/cjs/collections/signing-requests.js +28 -0
  66. package/cjs/collections/signing-requests.js.map +1 -0
  67. package/cjs/collections/slide-selections.js.map +1 -1
  68. package/cjs/collections/slides.js.map +1 -1
  69. package/cjs/collections/snapshots.js.map +1 -1
  70. package/cjs/collections/sub-slides.js.map +1 -1
  71. package/cjs/collections/tags.js.map +1 -1
  72. package/cjs/collections/teams.js.map +1 -1
  73. package/cjs/collections/templates.js.map +1 -1
  74. package/cjs/collections/uploads.js.map +1 -1
  75. package/cjs/collections/users.js.map +1 -1
  76. package/cjs/collections.js +52 -13
  77. package/cjs/collections.js.map +1 -1
  78. package/cjs/fixtures.js +232 -0
  79. package/cjs/fixtures.js.map +1 -0
  80. package/cjs/index.js +28 -4
  81. package/cjs/index.js.map +1 -1
  82. package/cjs/models/activity-item.js +10 -2
  83. package/cjs/models/activity-item.js.map +1 -1
  84. package/cjs/models/adjunct-section.js +7 -2
  85. package/cjs/models/adjunct-section.js.map +1 -1
  86. package/cjs/models/adjunct-slide.js +7 -2
  87. package/cjs/models/adjunct-slide.js.map +1 -1
  88. package/cjs/models/adjunct-sub-slide.js.map +1 -1
  89. package/cjs/models/adjunct.js +40 -0
  90. package/cjs/models/adjunct.js.map +1 -1
  91. package/cjs/models/appointment-adjunct-tags.js.map +1 -1
  92. package/cjs/models/appointment-deckversion-tags.js.map +1 -1
  93. package/cjs/models/appointment-editor.js.map +1 -1
  94. package/cjs/models/appointment-section-tags.js.map +1 -1
  95. package/cjs/models/appointment-slide-tags.js.map +1 -1
  96. package/cjs/models/appointment-stats.js.map +1 -1
  97. package/cjs/models/appointment-tags.js.map +1 -1
  98. package/cjs/models/appointment-template.js +28 -0
  99. package/cjs/models/appointment-template.js.map +1 -0
  100. package/cjs/models/appointment-viewing.js.map +1 -1
  101. package/cjs/models/appointment.js +108 -15
  102. package/cjs/models/appointment.js.map +1 -1
  103. package/cjs/models/asset.js +12 -0
  104. package/cjs/models/asset.js.map +1 -1
  105. package/cjs/models/auto-adjunct-key-check.js.map +1 -1
  106. package/cjs/models/auto-adjunct.js +2 -1
  107. package/cjs/models/auto-adjunct.js.map +1 -1
  108. package/cjs/models/base.js +25 -5
  109. package/cjs/models/base.js.map +1 -1
  110. package/cjs/models/base.spec.js.map +1 -1
  111. package/cjs/models/choicelist.js.map +1 -1
  112. package/cjs/models/cms-val.js +35 -1
  113. package/cjs/models/cms-val.js.map +1 -1
  114. package/cjs/models/cms-val.spec.js +32 -0
  115. package/cjs/models/cms-val.spec.js.map +1 -0
  116. package/cjs/models/contact-phone.js +66 -0
  117. package/cjs/models/contact-phone.js.map +1 -0
  118. package/cjs/models/contact.js.map +1 -1
  119. package/cjs/models/customer.js +3 -1
  120. package/cjs/models/customer.js.map +1 -1
  121. package/cjs/models/deck-note.js.map +1 -1
  122. package/cjs/models/deck-tags.js.map +1 -1
  123. package/cjs/models/deck-version-screenshot.js.map +1 -1
  124. package/cjs/models/deck-version.js +31 -8
  125. package/cjs/models/deck-version.js.map +1 -1
  126. package/cjs/models/deck.js.map +1 -1
  127. package/cjs/models/dispatch-preview.js.map +1 -1
  128. package/cjs/models/dispatch.js.map +1 -1
  129. package/cjs/models/event-object.js.map +1 -1
  130. package/cjs/models/event.js.map +1 -1
  131. package/cjs/models/feed-data.js.map +1 -1
  132. package/cjs/models/file.js.map +1 -1
  133. package/cjs/models/group.js.map +1 -1
  134. package/cjs/models/handover.js.map +1 -1
  135. package/cjs/models/hosted-preso.js.map +1 -1
  136. package/cjs/models/image.js.map +1 -1
  137. package/cjs/models/location.js.map +1 -1
  138. package/cjs/models/manifest-json.js +70 -2
  139. package/cjs/models/manifest-json.js.map +1 -1
  140. package/cjs/models/onshare.js.map +1 -1
  141. package/cjs/models/opportunity.js.map +1 -1
  142. package/cjs/models/pack-diff.js.map +1 -1
  143. package/cjs/models/pack.js.map +1 -1
  144. package/cjs/models/preset.js +4 -1
  145. package/cjs/models/preset.js.map +1 -1
  146. package/cjs/models/refresh-request.js +24 -0
  147. package/cjs/models/refresh-request.js.map +1 -1
  148. package/cjs/models/room.js.map +1 -1
  149. package/cjs/models/salesforce-lookup.js.map +1 -1
  150. package/cjs/models/section-selection.js.map +1 -1
  151. package/cjs/models/section.js.map +1 -1
  152. package/cjs/models/signer.js +47 -0
  153. package/cjs/models/signer.js.map +1 -0
  154. package/cjs/models/signing-request.js +66 -0
  155. package/cjs/models/signing-request.js.map +1 -0
  156. package/cjs/models/slide-selection.js.map +1 -1
  157. package/cjs/models/slide.js.map +1 -1
  158. package/cjs/models/snapshot.js +41 -2
  159. package/cjs/models/snapshot.js.map +1 -1
  160. package/cjs/models/snapshot.spec.js +51 -0
  161. package/cjs/models/snapshot.spec.js.map +1 -0
  162. package/cjs/models/sub-slide.js.map +1 -1
  163. package/cjs/models/support-ticket.js.map +1 -1
  164. package/cjs/models/tag.js.map +1 -1
  165. package/cjs/models/team.js +15 -2
  166. package/cjs/models/team.js.map +1 -1
  167. package/cjs/models/template.js +105 -3
  168. package/cjs/models/template.js.map +1 -1
  169. package/cjs/models/tenancy.js +3 -0
  170. package/cjs/models/tenancy.js.map +1 -1
  171. package/cjs/models/timing-log.js.map +1 -1
  172. package/cjs/models/timing-log.spec.js.map +1 -1
  173. package/cjs/models/token.js.map +1 -1
  174. package/cjs/models/transcribe-socket.js.map +1 -1
  175. package/cjs/models/user.js +7 -2
  176. package/cjs/models/user.js.map +1 -1
  177. package/cjs/models.js +52 -13
  178. package/cjs/models.js.map +1 -1
  179. package/cjs/presentation/appointment-presentation.js.map +1 -1
  180. package/cjs/presentation/base-presentation-collection.js.map +1 -1
  181. package/cjs/presentation/base-presentation-model.js +23 -14
  182. package/cjs/presentation/base-presentation-model.js.map +1 -1
  183. package/cjs/presentation/base-presentation-model.spec.js.map +1 -1
  184. package/cjs/presentation/presentation-deck.js +5 -1
  185. package/cjs/presentation/presentation-deck.js.map +1 -1
  186. package/cjs/presentation/presentation-deck.spec.js.map +1 -1
  187. package/cjs/presentation/presentation-decks.js.map +1 -1
  188. package/cjs/presentation/presentation-section.js +33 -8
  189. package/cjs/presentation/presentation-section.js.map +1 -1
  190. package/cjs/presentation/presentation-section.spec.js +13 -20
  191. package/cjs/presentation/presentation-section.spec.js.map +1 -1
  192. package/cjs/presentation/presentation-sections.js.map +1 -1
  193. package/cjs/presentation/presentation-slide.js +43 -9
  194. package/cjs/presentation/presentation-slide.js.map +1 -1
  195. package/cjs/presentation/presentation-slide.spec.js +11 -18
  196. package/cjs/presentation/presentation-slide.spec.js.map +1 -1
  197. package/cjs/presentation/presentation-slides.js.map +1 -1
  198. package/cjs/presentation/presentation-subslide.js.map +1 -1
  199. package/cjs/presentation/presentation-subslide.spec.js.map +1 -1
  200. package/cjs/presentation/presentation-subslides.js.map +1 -1
  201. package/cjs/presentation/presentation.js +8 -3
  202. package/cjs/presentation/presentation.js.map +1 -1
  203. package/cjs/selections.js +106 -0
  204. package/cjs/selections.js.map +1 -0
  205. package/cjs/sync.js.map +1 -1
  206. package/cjs/utils.js +43 -6
  207. package/cjs/utils.js.map +1 -1
  208. package/cjs/utils.spec.js +1 -1
  209. package/cjs/utils.spec.js.map +1 -1
  210. package/jest.config.js +4 -3
  211. package/package.json +12 -9
  212. package/src/api.js +17 -2
  213. package/src/auth.js +3 -3
  214. package/src/collections/activity.js +4 -4
  215. package/src/collections/adjunct-sections.js +1 -1
  216. package/src/collections/adjunct-slides.js +1 -1
  217. package/src/collections/adjunct-sub-slides.js +1 -1
  218. package/src/collections/appointment-adjunct-tags.js +1 -1
  219. package/src/collections/appointment-deckversion-tags.js +2 -2
  220. package/src/collections/appointment-editors.js +1 -1
  221. package/src/collections/appointment-section-tags.js +1 -1
  222. package/src/collections/appointment-slide-tags.js +1 -1
  223. package/src/collections/appointment-tags.js +20 -18
  224. package/src/collections/appointment-templates.js +26 -0
  225. package/src/collections/appointments.js +9 -9
  226. package/src/collections/assets.js +1 -1
  227. package/src/collections/auto-adjuncts.js +1 -1
  228. package/src/collections/base.js +10 -6
  229. package/src/collections/base.spec.js +2 -2
  230. package/src/collections/cms-vals.js +5 -1
  231. package/src/collections/contact-phones.js +18 -0
  232. package/src/collections/contacts.js +1 -1
  233. package/src/collections/created-assets.js +1 -1
  234. package/src/collections/customers.js +1 -1
  235. package/src/collections/deck-notes.js +1 -1
  236. package/src/collections/deck-version-screenshots.js +1 -1
  237. package/src/collections/deck-versions.js +1 -1
  238. package/src/collections/decks.js +1 -1
  239. package/src/collections/deleted-assets.js +1 -1
  240. package/src/collections/dispatches.js +2 -2
  241. package/src/collections/event-objects.js +1 -1
  242. package/src/collections/events.js +1 -1
  243. package/src/collections/groups.js +1 -1
  244. package/src/collections/images.js +1 -1
  245. package/src/collections/locations.js +1 -1
  246. package/src/collections/opportunities.js +1 -1
  247. package/src/collections/pack-diffs.js +1 -1
  248. package/src/collections/packs.js +1 -1
  249. package/src/collections/presets.js +1 -1
  250. package/src/collections/section-selections.js +1 -1
  251. package/src/collections/sections.js +1 -1
  252. package/src/collections/signers.js +18 -0
  253. package/src/collections/signing-requests.js +18 -0
  254. package/src/collections/slide-selections.js +1 -1
  255. package/src/collections/slides.js +1 -1
  256. package/src/collections/snapshots.js +1 -1
  257. package/src/collections/sub-slides.js +1 -1
  258. package/src/collections/tags.js +1 -1
  259. package/src/collections/teams.js +1 -1
  260. package/src/collections/templates.js +1 -1
  261. package/src/collections/uploads.js +1 -1
  262. package/src/collections/users.js +1 -1
  263. package/src/collections.js +4 -1
  264. package/src/fixtures.js +195 -0
  265. package/src/index.js +2 -3
  266. package/src/models/activity-item.js +9 -1
  267. package/src/models/adjunct-section.js +7 -2
  268. package/src/models/adjunct-slide.js +7 -2
  269. package/src/models/adjunct-sub-slide.js +1 -1
  270. package/src/models/adjunct.js +39 -1
  271. package/src/models/appointment-adjunct-tags.js +1 -1
  272. package/src/models/appointment-deckversion-tags.js +1 -1
  273. package/src/models/appointment-editor.js +1 -1
  274. package/src/models/appointment-section-tags.js +1 -1
  275. package/src/models/appointment-slide-tags.js +1 -1
  276. package/src/models/appointment-stats.js +1 -1
  277. package/src/models/appointment-tags.js +1 -1
  278. package/src/models/appointment-template.js +19 -0
  279. package/src/models/appointment-viewing.js +1 -1
  280. package/src/models/appointment.js +104 -38
  281. package/src/models/asset.js +15 -1
  282. package/src/models/auto-adjunct-key-check.js +1 -1
  283. package/src/models/auto-adjunct.js +2 -1
  284. package/src/models/base.js +36 -21
  285. package/src/models/base.spec.js +18 -18
  286. package/src/models/choicelist.js +1 -1
  287. package/src/models/cms-val.js +24 -1
  288. package/src/models/cms-val.spec.js +14 -0
  289. package/src/models/contact-phone.js +57 -0
  290. package/src/models/contact.js +1 -1
  291. package/src/models/customer.js +3 -3
  292. package/src/models/deck-note.js +1 -1
  293. package/src/models/deck-tags.js +1 -1
  294. package/src/models/deck-version-screenshot.js +1 -1
  295. package/src/models/deck-version.js +32 -6
  296. package/src/models/deck.js +1 -1
  297. package/src/models/dispatch-preview.js +1 -1
  298. package/src/models/dispatch.js +1 -1
  299. package/src/models/event-object.js +1 -1
  300. package/src/models/event.js +1 -1
  301. package/src/models/feed-data.js +2 -2
  302. package/src/models/file.js +1 -1
  303. package/src/models/group.js +1 -1
  304. package/src/models/handover.js +1 -1
  305. package/src/models/hosted-preso.js +1 -1
  306. package/src/models/image.js +1 -1
  307. package/src/models/location.js +1 -1
  308. package/src/models/manifest-json.js +65 -5
  309. package/src/models/onshare.js +1 -1
  310. package/src/models/opportunity.js +1 -1
  311. package/src/models/pack-diff.js +1 -1
  312. package/src/models/pack.js +1 -1
  313. package/src/models/preset.js +4 -1
  314. package/src/models/refresh-request.js +16 -1
  315. package/src/models/room.js +1 -1
  316. package/src/models/salesforce-lookup.js +1 -1
  317. package/src/models/section-selection.js +1 -1
  318. package/src/models/section.js +1 -1
  319. package/src/models/signer.js +37 -0
  320. package/src/models/signing-request.js +56 -0
  321. package/src/models/slide-selection.js +1 -1
  322. package/src/models/slide.js +1 -1
  323. package/src/models/snapshot.js +30 -2
  324. package/src/models/snapshot.spec.js +31 -0
  325. package/src/models/sub-slide.js +1 -1
  326. package/src/models/support-ticket.js +1 -1
  327. package/src/models/tag.js +1 -1
  328. package/src/models/team.js +14 -3
  329. package/src/models/template.js +72 -2
  330. package/src/models/tenancy.js +4 -1
  331. package/src/models/timing-log.js +2 -2
  332. package/src/models/timing-log.spec.js +1 -1
  333. package/src/models/token.js +1 -1
  334. package/src/models/transcribe-socket.js +1 -1
  335. package/src/models/user.js +13 -2
  336. package/src/models.js +4 -1
  337. package/src/presentation/appointment-presentation.js +4 -4
  338. package/src/presentation/base-presentation-collection.js +1 -1
  339. package/src/presentation/base-presentation-model.js +25 -16
  340. package/src/presentation/base-presentation-model.spec.js +5 -5
  341. package/src/presentation/presentation-deck.js +28 -23
  342. package/src/presentation/presentation-deck.spec.js +4 -4
  343. package/src/presentation/presentation-decks.js +1 -1
  344. package/src/presentation/presentation-section.js +59 -31
  345. package/src/presentation/presentation-section.spec.js +31 -32
  346. package/src/presentation/presentation-sections.js +1 -1
  347. package/src/presentation/presentation-slide.js +51 -25
  348. package/src/presentation/presentation-slide.spec.js +21 -27
  349. package/src/presentation/presentation-slides.js +1 -1
  350. package/src/presentation/presentation-subslide.js +5 -5
  351. package/src/presentation/presentation-subslide.spec.js +3 -3
  352. package/src/presentation/presentation-subslides.js +1 -1
  353. package/src/presentation/presentation.js +5 -3
  354. package/src/selections.js +71 -0
  355. package/src/sync.js +1 -1
  356. package/src/utils.js +31 -8
  357. package/src/utils.spec.js +8 -8
  358. package/.rush/temp/package-deps_test.json +0 -172
  359. package/cjs/collections/appointment-duplicates.js +0 -29
  360. package/cjs/collections/appointment-duplicates.js.map +0 -1
  361. package/cjs/models/appointment-duplicate.js +0 -94
  362. package/cjs/models/appointment-duplicate.js.map +0 -1
  363. package/src/collections/appointment-duplicates.js +0 -19
  364. package/src/models/appointment-duplicate.js +0 -73
@@ -81,7 +81,7 @@ export const SectionModel = BaseModel.extend(
81
81
  collections: {
82
82
  slide_set: "SlideCollection",
83
83
  },
84
- }
84
+ },
85
85
  );
86
86
 
87
87
  register("SectionModel", SectionModel);
@@ -0,0 +1,37 @@
1
+ import "../models/contact.js";
2
+
3
+ import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
+
6
+ /**
7
+ * @constructor
8
+ * @alias models.Signer
9
+ * @extends models.BaseModel
10
+ */
11
+ export const SignerModel = BaseModel.extend(
12
+ /** @lends models.SignerModel# */ {
13
+ // modelName: "signers",
14
+
15
+ /**
16
+ * @property {string} first_name
17
+ * @property {string} last_name
18
+ * @property {string} full_name
19
+ * @property {string} backend_config
20
+ */
21
+ props: {
22
+ first_name: "string",
23
+ last_name: "string",
24
+ full_name: "string",
25
+ backend_config: "string",
26
+ },
27
+
28
+ /**
29
+ * @property {models.ContactModel} contact
30
+ */
31
+ children: {
32
+ contact: "ContactModel",
33
+ },
34
+ },
35
+ );
36
+
37
+ register("SignerModel", SignerModel);
@@ -0,0 +1,56 @@
1
+ import "./customer.js";
2
+
3
+ import { BaseModel } from "./base.js";
4
+ import { register } from "../state-register.js";
5
+
6
+ import "../collections/signers.js";
7
+
8
+ /**
9
+ * @constructor
10
+ * @alias models.SigningRequestModel
11
+ * @extends models.BaseModel
12
+ */
13
+ export const SigningRequestModel = BaseModel.extend(
14
+ /** @lends models.SigningRequestModel# */ {
15
+ modelName: "signingrequests",
16
+
17
+ /**
18
+ * @property {date} created_date
19
+ * @property {date} modified_date
20
+ * @property {date} signed_date
21
+ * @property {string} signing_backend
22
+ * @property {string} status
23
+ * @property {string} original_document
24
+ * @property {string} signed_document
25
+ * @property {array} choicelist
26
+ */
27
+ props: {
28
+ created_date: "date",
29
+ modified_date: "date",
30
+ signed_date: "date",
31
+ signing_backend: "string",
32
+ status: "string",
33
+ original_document: "string",
34
+ signed_document: "string",
35
+ choicelist: "array",
36
+ },
37
+
38
+ /**
39
+ * @property {collections.SignerCollection} signer_set
40
+ */
41
+ collections: {
42
+ signer_set: "SignerCollection",
43
+ },
44
+
45
+ /**
46
+ * @property {models.SnapshotModel} snapshot
47
+ * @property {models.UserModel} requested_by
48
+ */
49
+ children: {
50
+ snapshot: "SnapshotModel",
51
+ requested_by: "UserModel",
52
+ },
53
+ },
54
+ );
55
+
56
+ register("SigningRequestModel", SigningRequestModel);
@@ -50,7 +50,7 @@ export const SlideSelectionModel = BaseModel.extend(
50
50
 
51
51
  return data;
52
52
  },
53
- }
53
+ },
54
54
  );
55
55
 
56
56
  register("SlideSelectionModel", SlideSelectionModel);
@@ -82,7 +82,7 @@ export const SlideModel = BaseModel.extend(
82
82
  collections: {
83
83
  subslide_set: "SubSlideCollection",
84
84
  },
85
- }
85
+ },
86
86
  );
87
87
 
88
88
  register("SlideModel", SlideModel);
@@ -1,7 +1,9 @@
1
1
  import "./appointment.js";
2
2
 
3
3
  import { BaseModel } from "./base.js";
4
+ import Promise from "bluebird";
4
5
  import { register } from "../state-register.js";
6
+ import { sanitizeBase64 } from "../utils.js";
5
7
 
6
8
  /**
7
9
  * @constructor
@@ -15,10 +17,15 @@ export const SnapshotModel = BaseModel.extend(
15
17
  /**
16
18
  * @property {object} context
17
19
  * @property {boolean} creation_status
20
+ * @property {date} created_date
21
+ * @property {date} modified_date
18
22
  */
19
23
  props: {
20
24
  context: "object",
21
25
  creation_status: "string",
26
+ force_requires_capture: "boolean",
27
+ created_date: "date",
28
+ modified_date: "date",
22
29
  },
23
30
 
24
31
  /**
@@ -28,19 +35,40 @@ export const SnapshotModel = BaseModel.extend(
28
35
  appointment: "AppointmentModel",
29
36
  },
30
37
 
38
+ waitForReady(opts = {}, attempts = 20) {
39
+ if (attempts === 0) {
40
+ return Promise.reject();
41
+ }
42
+ return this.fetch(opts).then(() => {
43
+ if (["ready", "failed"].indexOf(this.creation_status) > -1) {
44
+ return Promise.resolve();
45
+ }
46
+ return Promise.delay(1000).then(() =>
47
+ this.waitForReady(opts, attempts - 1),
48
+ );
49
+ });
50
+ },
51
+
31
52
  toServer() {
32
53
  const data = {
33
- context: JSON.stringify(this.context),
54
+ context: JSON.stringify(
55
+ // If this is a base64 string, and it's sufficiently long enough that it'll
56
+ // cause issues if we save it, let's just remove it. Better that it can save.
57
+ sanitizeBase64(this.context, (obj) => obj.length > 50_000),
58
+ ),
34
59
  appointment: this._retrieveURL(this.appointment),
35
60
  };
36
61
 
62
+ if (typeof this.force_requires_capture !== "undefined") {
63
+ data.force_requires_capture = this.force_requires_capture;
64
+ }
37
65
  if (this.id) {
38
66
  data.id = this.id;
39
67
  }
40
68
 
41
69
  return data;
42
70
  },
43
- }
71
+ },
44
72
  );
45
73
 
46
74
  register("SnapshotModel", SnapshotModel);
@@ -0,0 +1,31 @@
1
+ import { G } from "sp-test/api";
2
+
3
+ it("should remove large base64 strings from context when saving", async () => {
4
+ const SnapshotModel = G("SnapshotModel");
5
+ const smallBase64 = "data:image/gif;base64,abcdefghhikl";
6
+ const largeBase64 = smallBase64 + new Array(50_000).fill("a").join("");
7
+
8
+ const snapshot = new SnapshotModel({
9
+ context: {
10
+ number: 1,
11
+ nested: {
12
+ skip: null,
13
+ normal: "hello",
14
+ small: smallBase64,
15
+ large: largeBase64,
16
+ arr: [smallBase64, largeBase64, 1, "foo"],
17
+ },
18
+ },
19
+ });
20
+
21
+ expect(JSON.parse(snapshot.toServer().context)).toEqual({
22
+ number: 1,
23
+ nested: {
24
+ skip: null,
25
+ normal: "hello",
26
+ small: smallBase64, // Small ones are ok
27
+ large: "",
28
+ arr: [smallBase64, "", 1, "foo"],
29
+ },
30
+ });
31
+ });
@@ -56,7 +56,7 @@ export const SubSlideModel = BaseModel.extend(
56
56
  index_asset: "AssetModel",
57
57
  slide: "SlideModel",
58
58
  },
59
- }
59
+ },
60
60
  );
61
61
 
62
62
  register("SubSlideModel", SubSlideModel);
@@ -33,7 +33,7 @@ export const SupportTicketModel = BaseModel.extend(
33
33
  user: "UserModel",
34
34
  resolved_by: "UserModel",
35
35
  },
36
- }
36
+ },
37
37
  );
38
38
 
39
39
  register("SupportTicketModel", SupportTicketModel);
package/src/models/tag.js CHANGED
@@ -36,7 +36,7 @@ export const TagModel = BaseModel.extend(
36
36
  team: "TeamModel",
37
37
  deck: "DeckModel",
38
38
  },
39
- }
39
+ },
40
40
  );
41
41
 
42
42
  register("TagModel", TagModel);
@@ -1,3 +1,5 @@
1
+ import "../collections/decks.js";
2
+ import "../collections/users.js";
1
3
  import "./user.js";
2
4
 
3
5
  import { BaseModel } from "./base.js";
@@ -23,6 +25,7 @@ export const TeamModel = BaseModel.extend(
23
25
  name: "string",
24
26
  profile: "object",
25
27
  has_autoadjuncts: "boolean",
28
+ has_cmsvals: "boolean",
26
29
  theme_enabled: "boolean",
27
30
  is_selectable: "boolean",
28
31
  brand_colour: "string",
@@ -40,13 +43,21 @@ export const TeamModel = BaseModel.extend(
40
43
 
41
44
  /**
42
45
  * @property {collections.UserCollection} user_set
43
- * @property {collections.PresentationDeckCollection} deck_set
46
+ * @property {collections.DeckCollection} deck_set
44
47
  */
45
48
  collections: {
46
49
  user_set: "UserCollection",
47
- deck_set: "PresentationDeckCollection",
50
+ deck_set: "DeckCollection",
48
51
  },
49
- }
52
+ derived: {
53
+ hasCustomContent: {
54
+ deps: ["has_autoadjuncts", "has_cmsvals"],
55
+ fn: function () {
56
+ return this.has_autoadjuncts || this.has_cmsvals;
57
+ },
58
+ },
59
+ },
60
+ },
50
61
  );
51
62
 
52
63
  register("TeamModel", TeamModel);
@@ -1,7 +1,9 @@
1
1
  import "./deck-version.js";
2
2
  import "./asset.js";
3
3
 
4
+ import { Auth } from "../auth.js";
4
5
  import { BaseModel } from "./base.js";
6
+ import SuperAgentRequest from "superagent-bluebird-promise";
5
7
  import { register } from "../state-register.js";
6
8
 
7
9
  /**
@@ -18,34 +20,102 @@ export const TemplateModel = BaseModel.extend(
18
20
  * @property {date} modified_date
19
21
  * @property {string} title
20
22
  * @property {string} key
23
+ * @property {scope} scope
21
24
  * @property {number} sequence
22
- * @property {string} image_128
25
+ * @property {object} context
26
+ * @property {string} image_original
23
27
  * @property {string} image_128
24
28
  * @property {string} image_256
25
29
  * @property {string} image_512
26
30
  * @property {string[]} cmsvalkey_set
31
+ * @property {boolean} available_in_presos
27
32
  */
28
33
  props: {
29
34
  created_date: "date",
30
35
  modified_date: "date",
31
36
  title: "string",
32
37
  key: "string",
38
+ scope: {
39
+ type: "string",
40
+ default: "global",
41
+ values: ["global", "team", "user"],
42
+ },
33
43
  sequence: "number",
44
+ context: {
45
+ type: "object",
46
+ default: () => {},
47
+ },
48
+ image_original: "string",
34
49
  image_128: "string",
35
50
  image_256: "string",
36
51
  image_512: "string",
37
52
  cmsvalkey_set: "array",
53
+ available_in_presos: {
54
+ type: "boolean",
55
+ default: true,
56
+ },
38
57
  },
39
58
 
40
59
  /**
41
60
  * @property {models.AssetModel} index_asset
42
61
  * @property {models.DeckVersionModel} deckversion
62
+ * @property {models.Template} original_template
43
63
  */
44
64
  children: {
45
65
  index_asset: "AssetModel",
46
66
  deckversion: "DeckVersionModel",
67
+ original_template: "TemplateModel",
68
+ },
69
+
70
+ async saveWithImage() {
71
+ const formData = new FormData();
72
+
73
+ if (this.image_original) {
74
+ const image = await SuperAgentRequest.get(
75
+ this.image_original,
76
+ ).responseType("blob");
77
+
78
+ formData.append("image_original", image.body, "image.png");
79
+ }
80
+
81
+ for (const field of ["title", "key", "scope", "sequence"]) {
82
+ if (this[field]) {
83
+ formData.append(field, this[field]);
84
+ }
85
+ }
86
+
87
+ for (const field of ["original_template", "deckversion"]) {
88
+ if (this[field]) {
89
+ formData.append(field, this[field].url());
90
+ }
91
+ }
92
+
93
+ // Set these here, because after the save these will be set to whatever the return value
94
+ // is in the next request.
95
+ const cmsvalkeys = this.cmsvalkey_set;
96
+ const context = this.context;
97
+
98
+ await SuperAgentRequest.post(this.url())
99
+ .send(formData)
100
+ .set(Auth.headers)
101
+ .then((response) => {
102
+ Object.keys(response.body).forEach((key) => {
103
+ this.set(key, response.body[key]);
104
+ });
105
+ return response;
106
+ });
107
+
108
+ // HACK: Can't send an array (or can't figure out how to do it!) to django,
109
+ // so we send it in a seperate patch.
110
+ return await this.save(
111
+ {
112
+ cmsvalkey_set: cmsvalkeys,
113
+ context,
114
+ },
115
+ { patch: true },
116
+ );
47
117
  },
48
- }
118
+ },
49
119
  );
50
120
 
51
121
  register("TemplateModel", TemplateModel);
@@ -11,6 +11,7 @@ import { register } from "../state-register.js";
11
11
  export const TenancyModel = BaseModel.extend(
12
12
  /** @lends models.TenancyModel# */ {
13
13
  modelName: "tenancies",
14
+ detailType: "uuid",
14
15
 
15
16
  /**
16
17
  * @property {string[]} eventtag_set
@@ -31,6 +32,8 @@ export const TenancyModel = BaseModel.extend(
31
32
  logo_background_colour: "string",
32
33
  billing_frequency: "string",
33
34
  is_default: "boolean",
35
+ eula_key: "string",
36
+ eula_url: "string",
34
37
  status_set: {
35
38
  type: "array",
36
39
  default: () => [],
@@ -43,7 +46,7 @@ export const TenancyModel = BaseModel.extend(
43
46
  children: {
44
47
  administrator: "UserModel",
45
48
  },
46
- }
49
+ },
47
50
  );
48
51
 
49
52
  register("TenancyModel", TenancyModel);
@@ -113,7 +113,7 @@ export const TimingLogModel = BaseModel.extend(
113
113
  const user = getShortURL(this.user.url());
114
114
 
115
115
  const url = getShortURL(
116
- this.hostedPreso ? this.hostedPreso.url() : this.appointment.url()
116
+ this.hostedPreso ? this.hostedPreso.url() : this.appointment.url(),
117
117
  );
118
118
  // At this point, the expected output should have a space instead of a T in this
119
119
  // date format.
@@ -308,7 +308,7 @@ export const TimingLogModel = BaseModel.extend(
308
308
  throw e;
309
309
  });
310
310
  },
311
- }
311
+ },
312
312
  );
313
313
 
314
314
  register("TimingLogModel", TimingLogModel);
@@ -35,7 +35,7 @@ describe("TimingLogModel", () => {
35
35
 
36
36
  // Some precision in milliseconds is lost here
37
37
  expect(timingLog.events[0].timestamp).toEqual(
38
- "2016-10-27T00:42:47.044000Z"
38
+ "2016-10-27T00:42:47.044000Z",
39
39
  );
40
40
  expect(timingLog.events[0].path).toEqual("/api/sections/1/");
41
41
  });
@@ -41,7 +41,7 @@ export const TokenModel = BaseModel.extend(
41
41
  url() {
42
42
  return `${this.urlRoot()}${this.key}/`;
43
43
  },
44
- }
44
+ },
45
45
  );
46
46
 
47
47
  register("TokenModel", TokenModel);
@@ -13,7 +13,7 @@ export const TranscribeSocketModel = BaseModel.extend(
13
13
  props: {
14
14
  presigned_url: "string",
15
15
  },
16
- }
16
+ },
17
17
  );
18
18
 
19
19
  register("TranscribeSocketModel", TranscribeSocketModel);
@@ -53,6 +53,7 @@ export const UserModel = BaseModel.extend(
53
53
  email_signature: "",
54
54
  app_prefs: {},
55
55
  timezone: "",
56
+ eula_key: "",
56
57
  };
57
58
  },
58
59
  },
@@ -134,6 +135,10 @@ export const UserModel = BaseModel.extend(
134
135
  presomanager.isGlobalTemporarySlideManager ||
135
136
  presomanager.isTeamTemporarySlideManager;
136
137
 
138
+ presomanager.isPresoManagerUser =
139
+ presomanager.canModifyTemporarySlides ||
140
+ presomanager.canModifyContent;
141
+
137
142
  presomanager.canModifyContent =
138
143
  this.actions.indexOf("Create Content") > -1 ||
139
144
  this.actions.indexOf("Manage Team Editable Text") > -1;
@@ -159,6 +164,12 @@ export const UserModel = BaseModel.extend(
159
164
  this.actions.indexOf("Use Closed Captions") > -1,
160
165
  canCreateMutedAppointments:
161
166
  this.actions.indexOf("Create Muted Appointments") > -1,
167
+ canHandoverPresosOfOthers:
168
+ this.actions.indexOf("Handover Presos of Others") > -1,
169
+ canChooseShareVisAnyone:
170
+ this.actions.indexOf("Choose Share Visibility Anyone") > -1,
171
+ canChooseShareVis2fa:
172
+ this.actions.indexOf("Choose Share Visibility 2FA") > -1,
162
173
  };
163
174
 
164
175
  const customers = {
@@ -185,7 +196,7 @@ export const UserModel = BaseModel.extend(
185
196
  return this.fetch({ url: `${resourceURL}?_=${preventCachingID}` }).then(
186
197
  ({ url }) => {
187
198
  return url;
188
- }
199
+ },
189
200
  );
190
201
  },
191
202
 
@@ -229,7 +240,7 @@ export const UserModel = BaseModel.extend(
229
240
 
230
241
  return data;
231
242
  },
232
- }
243
+ },
233
244
  );
234
245
 
235
246
  register("UserModel", UserModel);
package/src/models.js CHANGED
@@ -15,6 +15,7 @@ export * from "./models/base";
15
15
  export * from "./models/choicelist.js";
16
16
  export * from "./models/cms-val";
17
17
  export * from "./models/contact";
18
+ export * from "./models/contact-phone";
18
19
  export * from "./models/customer";
19
20
  export * from "./models/deck";
20
21
  export * from "./models/deck-tags";
@@ -43,6 +44,8 @@ export * from "./models/room";
43
44
  export * from "./models/salesforce-lookup.js";
44
45
  export * from "./models/section";
45
46
  export * from "./models/section-selection";
47
+ export * from "./models/signing-request";
48
+ export * from "./models/signer";
46
49
  export * from "./models/slide";
47
50
  export * from "./models/slide-selection";
48
51
  export * from "./models/snapshot";
@@ -55,12 +58,12 @@ export * from "./models/upload.js";
55
58
  export * from "./models/user";
56
59
  export * from "./models/onshare";
57
60
  export * from "./models/appointment-editor.js";
58
- export * from "./models/appointment-duplicate.js";
59
61
  export * from "./models/appointment-stats.js";
60
62
  export * from "./models/appointment-viewing.js";
61
63
  export * from "./models/appointment-deckversion-tags.js";
62
64
  export * from "./models/appointment-section-tags.js";
63
65
  export * from "./models/appointment-slide-tags.js";
66
+ export * from "./models/appointment-template.js";
64
67
  export * from "./models/appointment-adjunct-tags.js";
65
68
  export * from "./models/team.js";
66
69
  export * from "./models/template.js";
@@ -54,7 +54,7 @@ export const AppointmentPresentation = BaseModel.extend(
54
54
  opportunities: "OpportunityCollection",
55
55
  contacts: "ContactCollection",
56
56
  },
57
- }
57
+ },
58
58
  );
59
59
 
60
60
  const createFromAppointment = function (appointment, options) {
@@ -68,7 +68,7 @@ const createFromAppointment = function (appointment, options) {
68
68
  appointment.deckversion_set.map((model, index) => {
69
69
  const screenshots = PresentationDeck.filterScreenshotsByTeam(
70
70
  model.screenshots,
71
- team
71
+ team,
72
72
  );
73
73
 
74
74
  return PresentationDeck.createFromDeckVersion(model, {
@@ -82,7 +82,7 @@ const createFromAppointment = function (appointment, options) {
82
82
  index,
83
83
  ...options,
84
84
  });
85
- })
85
+ }),
86
86
  );
87
87
 
88
88
  appointmentPresentation.tele = appointment.latest_tele;
@@ -134,7 +134,7 @@ AppointmentPresentation.createFromID = function (id, options = {}) {
134
134
  */
135
135
  AppointmentPresentation.createFromAppointment = function (
136
136
  appointment,
137
- options = {}
137
+ options = {},
138
138
  ) {
139
139
  return createFromAppointment(appointment, options);
140
140
  };
@@ -6,7 +6,7 @@ import { BaseCollection } from "../collections/base.js";
6
6
  * @extends collections.BaseCollection
7
7
  */
8
8
  export const BasePresentationCollection = BaseCollection.extend(
9
- /** @lends presentation.BasePresentationCollection# */ {}
9
+ /** @lends presentation.BasePresentationCollection# */ {},
10
10
  );
11
11
 
12
12
  BasePresentationCollection.canBeEmpty = true;
@@ -13,31 +13,40 @@ export const BasePresentationModel = BaseModel.extend(
13
13
  url() {
14
14
  return null;
15
15
  },
16
- }
16
+ },
17
17
  );
18
18
 
19
- /**
20
- * Logic to pick a thumbnail based on either the model itself or from
21
- * and overriding screenshot if one exists.
22
- */
23
- BasePresentationModel.getThumbnail = function (model, screenshots) {
24
- const overrideScreenshot =
25
- screenshots?.filter((screen) => {
26
- return screen.subject === model.url();
27
- }) ?? [];
19
+ BasePresentationModel.screenshotsToMap = function (screenshots) {
20
+ if (!screenshots?.models) {
21
+ return screenshots;
22
+ }
28
23
 
29
- if (overrideScreenshot.length) {
30
- if (overrideScreenshot.length > 1) {
24
+ return screenshots.reduce((result, model) => {
25
+ if (result[model.subject]) {
31
26
  throw new Error(`
32
27
  Found multiple screenshots that could match this subject. If there is a team
33
28
  and a global, be sure to remove the screenshot that you don't need.
34
29
  `);
35
30
  }
31
+ result[model.subject] = model.image_256;
32
+ return result;
33
+ }, {});
34
+ };
35
+
36
+ /**
37
+ * Logic to pick a thumbnail based on either the model itself or from
38
+ * and overriding screenshot if one exists.
39
+ */
40
+ BasePresentationModel.getThumbnail = function (model, screenshots) {
41
+ if (screenshots?.models) {
42
+ throw new Error("Expected map file");
43
+ }
36
44
 
37
- return overrideScreenshot[0].image_256;
45
+ if (!model) {
46
+ return null;
38
47
  }
39
48
 
40
- return model.image_256;
49
+ return screenshots[model.url()] || model.image_256;
41
50
  };
42
51
 
43
52
  /**
@@ -53,7 +62,7 @@ BasePresentationModel.getThumbnail = function (model, screenshots) {
53
62
  */
54
63
  BasePresentationModel.filterScreenshotsByTeam = function (
55
64
  _screenshots,
56
- _team = null
65
+ _team = null,
57
66
  ) {
58
67
  const screenshots = new DeckVersionScreenshotCollection(_screenshots);
59
68
  const team = _team ? new TeamModel(_team) : null;
@@ -99,7 +108,7 @@ BasePresentationModel.filterScreenshotsByTeam = function (
99
108
  */
100
109
  BasePresentationModel.getVisibilityAndSequence = function (
101
110
  model,
102
- options = {}
111
+ options = {},
103
112
  ) {
104
113
  const { choicelist = null, selections = null } = options;
105
114
  const url = model.url();