@openneuro/app 4.20.5 → 4.20.6-alpha.3

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 (358) hide show
  1. package/__mocks__/fileMock.js +1 -1
  2. package/package.json +5 -5
  3. package/pluralize-esm.js +204 -211
  4. package/src/@types/custom.d.ts +3 -3
  5. package/src/@types/react.d.ts +3 -4
  6. package/src/client.jsx +17 -16
  7. package/src/scripts/__mocks__/config.ts +6 -6
  8. package/src/scripts/__utils__/mock-app-shell.tsx +9 -8
  9. package/src/scripts/apm.js +6 -6
  10. package/src/scripts/app.tsx +7 -7
  11. package/src/scripts/authentication/__tests__/profile.spec.js +10 -10
  12. package/src/scripts/authentication/admin-user.jsx +2 -2
  13. package/src/scripts/authentication/logged-in.jsx +2 -2
  14. package/src/scripts/authentication/logged-out.jsx +2 -2
  15. package/src/scripts/authentication/loginCheck.js +2 -2
  16. package/src/scripts/authentication/loginUrls.ts +1 -1
  17. package/src/scripts/authentication/profile.ts +7 -7
  18. package/src/scripts/authentication/regular-user.tsx +3 -3
  19. package/src/scripts/authentication/signOut.ts +2 -2
  20. package/src/scripts/authentication/withProfile.jsx +6 -6
  21. package/src/scripts/common/block-navigation.jsx +3 -4
  22. package/src/scripts/common/containers/__tests__/header.spec.tsx +16 -16
  23. package/src/scripts/common/containers/footer.tsx +3 -3
  24. package/src/scripts/common/containers/header.tsx +30 -30
  25. package/src/scripts/common/forms/__tests__/warn-button.spec.jsx +6 -6
  26. package/src/scripts/common/forms/warn-button.jsx +21 -17
  27. package/src/scripts/common/partials/block-navigation.jsx +3 -4
  28. package/src/scripts/common/partials/freshdesk-widget.jsx +17 -20
  29. package/src/scripts/common/partials/toast-content.jsx +2 -2
  30. package/src/scripts/components/__tests__/data-table.spec.tsx +7 -7
  31. package/src/scripts/components/data-table.tsx +23 -22
  32. package/src/scripts/config.ts +2 -2
  33. package/src/scripts/datalad/dataset/comments-fragments.js +1 -1
  34. package/src/scripts/datalad/dataset/dataset-context.js +1 -1
  35. package/src/scripts/datalad/dataset/dataset-query-context.js +1 -1
  36. package/src/scripts/datalad/dataset/dataset-query-fragments.js +1 -1
  37. package/src/scripts/datalad/mutations/cache-clear.jsx +7 -6
  38. package/src/scripts/datalad/mutations/cache-id.js +2 -2
  39. package/src/scripts/datalad/mutations/delete-comment.jsx +13 -11
  40. package/src/scripts/datalad/mutations/delete.jsx +10 -9
  41. package/src/scripts/datalad/mutations/follow.jsx +12 -11
  42. package/src/scripts/datalad/mutations/publish.jsx +13 -12
  43. package/src/scripts/datalad/mutations/remove-permissions.jsx +8 -8
  44. package/src/scripts/datalad/mutations/revalidate.jsx +7 -6
  45. package/src/scripts/datalad/mutations/snapshot.tsx +7 -7
  46. package/src/scripts/datalad/mutations/star.jsx +12 -11
  47. package/src/scripts/datalad/mutations/submit-metadata.jsx +14 -12
  48. package/src/scripts/datalad/mutations/update-permissions.jsx +14 -13
  49. package/src/scripts/datalad/mutations/update-ref.jsx +7 -6
  50. package/src/scripts/datalad/routes/dataset-redirect.tsx +49 -49
  51. package/src/scripts/datalad/subscriptions/__tests__/files-subscription.spec.jsx +32 -32
  52. package/src/scripts/datalad/subscriptions/files-subscription.jsx +16 -16
  53. package/src/scripts/datalad/subscriptions/useDatasetDeletedSubscription.jsx +4 -4
  54. package/src/scripts/datalad/subscriptions/useDraftSubscription.js +4 -4
  55. package/src/scripts/datalad/subscriptions/usePermissionsSubscription.js +4 -4
  56. package/src/scripts/datalad/subscriptions/useSnapshotsUpdatedSubscriptions.js +3 -3
  57. package/src/scripts/dataset/__tests__/__snapshots__/snapshot-container.spec.tsx.snap +2 -2
  58. package/src/scripts/dataset/__tests__/snapshot-container.spec.tsx +12 -12
  59. package/src/scripts/dataset/comments/__tests__/comment.spec.jsx +21 -21
  60. package/src/scripts/dataset/comments/__tests__/comments.spec.jsx +10 -10
  61. package/src/scripts/dataset/comments/block-style-controls.jsx +15 -15
  62. package/src/scripts/dataset/comments/comment-editor.jsx +31 -31
  63. package/src/scripts/dataset/comments/comment.jsx +50 -50
  64. package/src/scripts/dataset/comments/comments.jsx +24 -22
  65. package/src/scripts/dataset/comments/inline-style-controls.jsx +9 -9
  66. package/src/scripts/dataset/comments/style-button.jsx +8 -9
  67. package/src/scripts/dataset/common/follow-toggles.tsx +3 -3
  68. package/src/scripts/dataset/dataset-query-context.js +1 -1
  69. package/src/scripts/dataset/dataset-query.jsx +34 -31
  70. package/src/scripts/dataset/dataset-routes.jsx +5 -5
  71. package/src/scripts/dataset/download/__tests__/download-command-line.spec.jsx +13 -13
  72. package/src/scripts/dataset/download/__tests__/download-link.spec.jsx +10 -10
  73. package/src/scripts/dataset/download/__tests__/download-native.spec.js +7 -7
  74. package/src/scripts/dataset/download/__tests__/shell-example.spec.jsx +5 -5
  75. package/src/scripts/dataset/download/download-command-line.jsx +9 -7
  76. package/src/scripts/dataset/download/download-datalad.jsx +22 -20
  77. package/src/scripts/dataset/download/download-derivative-datalad.tsx +2 -2
  78. package/src/scripts/dataset/download/download-derivative-s3.tsx +2 -2
  79. package/src/scripts/dataset/download/download-link.jsx +6 -6
  80. package/src/scripts/dataset/download/download-native.js +20 -19
  81. package/src/scripts/dataset/download/download-query.js +2 -3
  82. package/src/scripts/dataset/download/download-s3.jsx +8 -8
  83. package/src/scripts/dataset/download/download-script.tsx +23 -20
  84. package/src/scripts/dataset/download/native-file-toast.jsx +13 -11
  85. package/src/scripts/dataset/download/shell-example.jsx +1 -1
  86. package/src/scripts/dataset/download/track-download.js +5 -5
  87. package/src/scripts/dataset/draft-container.tsx +104 -102
  88. package/src/scripts/dataset/draft-snapshot-routes.tsx +3 -3
  89. package/src/scripts/dataset/files/__tests__/file-tree-unloaded-directory.spec.jsx +23 -23
  90. package/src/scripts/dataset/files/__tests__/file-tree.spec.jsx +57 -58
  91. package/src/scripts/dataset/files/__tests__/file-viewer-type.spec.jsx +6 -6
  92. package/src/scripts/dataset/files/__tests__/file.spec.jsx +15 -15
  93. package/src/scripts/dataset/files/file-display.jsx +11 -11
  94. package/src/scripts/dataset/files/file-tree-unloaded-directory.jsx +10 -10
  95. package/src/scripts/dataset/files/file-tree.tsx +27 -27
  96. package/src/scripts/dataset/files/file-view.jsx +4 -4
  97. package/src/scripts/dataset/files/file-viewer-type.jsx +21 -21
  98. package/src/scripts/dataset/files/file.tsx +85 -80
  99. package/src/scripts/dataset/files/files.tsx +41 -40
  100. package/src/scripts/dataset/files/index.tsx +2 -2
  101. package/src/scripts/dataset/files/viewers/__tests__/__snapshots__/file-viewer-json.spec.jsx.snap +0 -24
  102. package/src/scripts/dataset/files/viewers/__tests__/file-viewer-json.spec.jsx +9 -9
  103. package/src/scripts/dataset/files/viewers/__tests__/parse-tabular.spec.js +8 -8
  104. package/src/scripts/dataset/files/viewers/file-viewer-csv.jsx +5 -5
  105. package/src/scripts/dataset/files/viewers/file-viewer-html.jsx +3 -3
  106. package/src/scripts/dataset/files/viewers/file-viewer-json.jsx +4 -4
  107. package/src/scripts/dataset/files/viewers/file-viewer-nifti.tsx +4 -4
  108. package/src/scripts/dataset/files/viewers/file-viewer-table.tsx +3 -3
  109. package/src/scripts/dataset/files/viewers/file-viewer-text.jsx +3 -3
  110. package/src/scripts/dataset/files/viewers/file-viewer-tsv.jsx +5 -5
  111. package/src/scripts/dataset/files/viewers/parse-tabular.js +4 -4
  112. package/src/scripts/dataset/fragments/__tests__/cancel-button.spec.tsx +5 -5
  113. package/src/scripts/dataset/fragments/__tests__/dataset-alert-draft.spec.tsx +9 -9
  114. package/src/scripts/dataset/fragments/__tests__/dataset-citation.spec.jsx +10 -10
  115. package/src/scripts/dataset/fragments/__tests__/doi-link.spec.tsx +29 -29
  116. package/src/scripts/dataset/fragments/__tests__/edit-button.spec.tsx +5 -5
  117. package/src/scripts/dataset/fragments/__tests__/edit-list.spec.jsx +13 -13
  118. package/src/scripts/dataset/fragments/__tests__/save-button.spec.tsx +5 -5
  119. package/src/scripts/dataset/fragments/__tests__/select-input.spec.tsx +26 -26
  120. package/src/scripts/dataset/fragments/cancel-button.tsx +2 -2
  121. package/src/scripts/dataset/fragments/comments-fragments.js +1 -1
  122. package/src/scripts/dataset/fragments/copyable-tooltip.jsx +14 -13
  123. package/src/scripts/dataset/fragments/dataset-alert-draft.tsx +17 -13
  124. package/src/scripts/dataset/fragments/dataset-alert-version.tsx +5 -4
  125. package/src/scripts/dataset/fragments/dataset-citation.jsx +23 -21
  126. package/src/scripts/dataset/fragments/dataset-history.jsx +12 -12
  127. package/src/scripts/dataset/fragments/dataset-reviewers.ts +1 -1
  128. package/src/scripts/dataset/fragments/doi-link.tsx +6 -6
  129. package/src/scripts/dataset/fragments/edit-button.tsx +2 -2
  130. package/src/scripts/dataset/fragments/edit-description-field.jsx +23 -21
  131. package/src/scripts/dataset/fragments/edit-description-list.jsx +8 -8
  132. package/src/scripts/dataset/fragments/edit-list.jsx +8 -8
  133. package/src/scripts/dataset/fragments/number-input.tsx +36 -35
  134. package/src/scripts/dataset/fragments/save-button.tsx +2 -2
  135. package/src/scripts/dataset/fragments/select-input.tsx +87 -86
  136. package/src/scripts/dataset/fragments/text-array-input.tsx +38 -37
  137. package/src/scripts/dataset/fragments/text-input.tsx +79 -78
  138. package/src/scripts/dataset/mutations/__tests__/cache-id.spec.js +5 -5
  139. package/src/scripts/dataset/mutations/__tests__/delete-file.spec.jsx +85 -83
  140. package/src/scripts/dataset/mutations/__tests__/delete.spec.jsx +8 -8
  141. package/src/scripts/dataset/mutations/__tests__/deprecate-snapshot.spec.tsx +17 -17
  142. package/src/scripts/dataset/mutations/__tests__/deprecate-version.spec.tsx +19 -19
  143. package/src/scripts/dataset/mutations/__tests__/description.spec.jsx +51 -51
  144. package/src/scripts/dataset/mutations/__tests__/remove-permissions.spec.tsx +9 -9
  145. package/src/scripts/dataset/mutations/__tests__/update-permissions.spec.jsx +7 -7
  146. package/src/scripts/dataset/mutations/admin-exports.jsx +13 -12
  147. package/src/scripts/dataset/mutations/cache-clear.jsx +6 -6
  148. package/src/scripts/dataset/mutations/cache-id.js +2 -2
  149. package/src/scripts/dataset/mutations/comment.jsx +25 -23
  150. package/src/scripts/dataset/mutations/create-anonymous-reviewer.tsx +36 -30
  151. package/src/scripts/dataset/mutations/dataset-relations.tsx +28 -29
  152. package/src/scripts/dataset/mutations/delete-anonymous-reviewer.tsx +7 -8
  153. package/src/scripts/dataset/mutations/delete-comment.jsx +14 -12
  154. package/src/scripts/dataset/mutations/delete-dataset-form.jsx +20 -22
  155. package/src/scripts/dataset/mutations/delete-file.jsx +8 -8
  156. package/src/scripts/dataset/mutations/delete.jsx +10 -9
  157. package/src/scripts/dataset/mutations/deprecate-version.tsx +5 -6
  158. package/src/scripts/dataset/mutations/description.jsx +21 -20
  159. package/src/scripts/dataset/mutations/flag-annex-object.jsx +10 -9
  160. package/src/scripts/dataset/mutations/follow.tsx +15 -14
  161. package/src/scripts/dataset/mutations/import-dataset.tsx +5 -5
  162. package/src/scripts/dataset/mutations/metadata-form.jsx +94 -97
  163. package/src/scripts/dataset/mutations/publish.jsx +13 -13
  164. package/src/scripts/dataset/mutations/readme.jsx +12 -11
  165. package/src/scripts/dataset/mutations/remove-annex-object.jsx +10 -9
  166. package/src/scripts/dataset/mutations/remove-permissions.tsx +5 -6
  167. package/src/scripts/dataset/mutations/revalidate.jsx +7 -7
  168. package/src/scripts/dataset/mutations/snapshot.tsx +8 -8
  169. package/src/scripts/dataset/mutations/star.tsx +14 -13
  170. package/src/scripts/dataset/mutations/submit-metadata.jsx +12 -11
  171. package/src/scripts/dataset/mutations/undo-deprecate-version.tsx +5 -6
  172. package/src/scripts/dataset/mutations/update-file.jsx +6 -6
  173. package/src/scripts/dataset/mutations/update-permissions.tsx +9 -9
  174. package/src/scripts/dataset/mutations/update-ref.jsx +7 -7
  175. package/src/scripts/dataset/routes/__tests__/deprecate-snapshot-page.spec.tsx +5 -5
  176. package/src/scripts/dataset/routes/add-metadata.jsx +19 -20
  177. package/src/scripts/dataset/routes/admin-datalad.jsx +7 -7
  178. package/src/scripts/dataset/routes/dataset-default.tsx +12 -10
  179. package/src/scripts/dataset/routes/delete-page.tsx +12 -12
  180. package/src/scripts/dataset/routes/deprecate-snapshot-page.tsx +8 -8
  181. package/src/scripts/dataset/routes/derivatives.tsx +10 -10
  182. package/src/scripts/dataset/routes/download-dataset.tsx +20 -20
  183. package/src/scripts/dataset/routes/manage-anonymous-reviewers.tsx +37 -35
  184. package/src/scripts/dataset/routes/manage-permissions.jsx +22 -22
  185. package/src/scripts/dataset/routes/publish.jsx +32 -30
  186. package/src/scripts/dataset/routes/snapshot-default.tsx +7 -7
  187. package/src/scripts/dataset/routes/snapshot.tsx +44 -43
  188. package/src/scripts/dataset/routes/styles/dataset-page-border.tsx +3 -3
  189. package/src/scripts/dataset/routes/styles/dataset-page-tab-container.tsx +3 -3
  190. package/src/scripts/dataset/routes/styles/header-row.tsx +3 -3
  191. package/src/scripts/dataset/routes/tab-routes-draft.tsx +12 -12
  192. package/src/scripts/dataset/routes/tab-routes-snapshot.tsx +8 -8
  193. package/src/scripts/dataset/snapshot-container.tsx +78 -86
  194. package/src/scripts/errors/403page.tsx +11 -11
  195. package/src/scripts/errors/404page.tsx +12 -12
  196. package/src/scripts/errors/errorBoundary.jsx +13 -12
  197. package/src/scripts/errors/errorRoute.jsx +6 -6
  198. package/src/scripts/errors/freshdesk-widget.jsx +17 -20
  199. package/src/scripts/errors/freshdeskInterface.jsx +9 -9
  200. package/src/scripts/errors/orcid/email.jsx +3 -3
  201. package/src/scripts/errors/orcid/family.jsx +4 -4
  202. package/src/scripts/errors/orcid/general.jsx +1 -1
  203. package/src/scripts/errors/orcid/given.jsx +4 -4
  204. package/src/scripts/fixtures/dataset-query.ts +119 -119
  205. package/src/scripts/fixtures/mock-app-wrapper.tsx +4 -4
  206. package/src/scripts/index.tsx +9 -9
  207. package/src/scripts/pages/admin/admin.jsx +5 -5
  208. package/src/scripts/pages/admin/flagged-files.jsx +33 -31
  209. package/src/scripts/pages/admin/user-fragment.ts +1 -1
  210. package/src/scripts/pages/admin/user-tools.tsx +13 -11
  211. package/src/scripts/pages/admin/users.jsx +38 -39
  212. package/src/scripts/pages/api.jsx +20 -19
  213. package/src/scripts/pages/citation-page.tsx +4 -4
  214. package/src/scripts/pages/faq/faq.tsx +2 -2
  215. package/src/scripts/pages/front-page/aggregate-queries/aggregate-counts-container.tsx +6 -5
  216. package/src/scripts/pages/front-page/aggregate-queries/use-participant-count.ts +2 -2
  217. package/src/scripts/pages/front-page/aggregate-queries/use-publicDatasets-count.ts +2 -2
  218. package/src/scripts/pages/front-page/front-page-content.ts +42 -42
  219. package/src/scripts/pages/front-page/front-page.tsx +18 -14
  220. package/src/scripts/pages/front-page-comp.tsx +3 -3
  221. package/src/scripts/pages/import-dataset.tsx +10 -10
  222. package/src/scripts/pages/metadata/dataset-metadata.tsx +15 -14
  223. package/src/scripts/pages/pet-redirect.tsx +2 -2
  224. package/src/scripts/queries/dataset.ts +3 -3
  225. package/src/scripts/resources/__tests__/kibana.spec.js +9 -9
  226. package/src/scripts/resources/kibana.js +3 -3
  227. package/src/scripts/resources/strings.js +2 -2
  228. package/src/scripts/routes.tsx +14 -14
  229. package/src/scripts/search/__helpers__/search-render.tsx +3 -3
  230. package/src/scripts/search/__tests__/search-container.spec.tsx +22 -22
  231. package/src/scripts/search/__tests__/search-params-ctx.spec.tsx +20 -20
  232. package/src/scripts/search/es-query-builders.ts +21 -5
  233. package/src/scripts/search/filters-block-container.tsx +14 -16
  234. package/src/scripts/search/initial-search-params.tsx +45 -45
  235. package/src/scripts/search/inputs/__tests__/sort-by-select.spec.tsx +23 -23
  236. package/src/scripts/search/inputs/admin-allDatasets-toggle.tsx +12 -12
  237. package/src/scripts/search/inputs/age-range-input.tsx +9 -8
  238. package/src/scripts/search/inputs/author-input.tsx +14 -11
  239. package/src/scripts/search/inputs/date-radios.tsx +8 -7
  240. package/src/scripts/search/inputs/diagnosis-select.tsx +6 -6
  241. package/src/scripts/search/inputs/index.ts +33 -33
  242. package/src/scripts/search/inputs/keyword-input.tsx +13 -13
  243. package/src/scripts/search/inputs/modality-select.tsx +33 -30
  244. package/src/scripts/search/inputs/pet/bodyParts_input.tsx +18 -16
  245. package/src/scripts/search/inputs/pet/scannerManufacturersModelNames_input.tsx +18 -16
  246. package/src/scripts/search/inputs/pet/scannerManufacturers_input.tsx +18 -16
  247. package/src/scripts/search/inputs/pet/tracerNames_input.tsx +16 -15
  248. package/src/scripts/search/inputs/pet/tracerRadionuclides_input.tsx +18 -16
  249. package/src/scripts/search/inputs/section-select.tsx +6 -6
  250. package/src/scripts/search/inputs/sex-radios.tsx +6 -6
  251. package/src/scripts/search/inputs/show-datasets-radios.tsx +31 -29
  252. package/src/scripts/search/inputs/sort-by-select.tsx +10 -11
  253. package/src/scripts/search/inputs/species-select.tsx +6 -6
  254. package/src/scripts/search/inputs/study-domain-input.tsx +18 -16
  255. package/src/scripts/search/inputs/subject-count-range-input.tsx +8 -7
  256. package/src/scripts/search/inputs/task-input.tsx +18 -16
  257. package/src/scripts/search/search-container.tsx +83 -85
  258. package/src/scripts/search/search-params-ctx.tsx +40 -38
  259. package/src/scripts/search/search-routes.tsx +4 -4
  260. package/src/scripts/search/use-search-results.tsx +125 -99
  261. package/src/scripts/styles/media.tsx +3 -3
  262. package/src/scripts/styles/support-modal.jsx +2 -2
  263. package/src/scripts/sw.ts +12 -11
  264. package/src/scripts/test-utils.js +4 -4
  265. package/src/scripts/uploader/add-path-to-files.js +7 -7
  266. package/src/scripts/uploader/file-select.tsx +3 -3
  267. package/src/scripts/uploader/file-upload.js +13 -12
  268. package/src/scripts/uploader/input.jsx +8 -7
  269. package/src/scripts/uploader/upload-button.jsx +3 -3
  270. package/src/scripts/uploader/upload-disclaimer-input.tsx +66 -66
  271. package/src/scripts/uploader/upload-disclaimer.jsx +6 -5
  272. package/src/scripts/uploader/upload-file-status.jsx +4 -4
  273. package/src/scripts/uploader/upload-issues.jsx +32 -29
  274. package/src/scripts/uploader/upload-metadata.jsx +18 -17
  275. package/src/scripts/uploader/upload-mutation.js +17 -20
  276. package/src/scripts/uploader/upload-progress-button.jsx +5 -4
  277. package/src/scripts/uploader/upload-progress.jsx +3 -3
  278. package/src/scripts/uploader/upload-rename.jsx +6 -5
  279. package/src/scripts/uploader/upload-resume.jsx +26 -24
  280. package/src/scripts/uploader/upload-select.jsx +10 -9
  281. package/src/scripts/uploader/upload-status.jsx +5 -5
  282. package/src/scripts/uploader/upload-step.jsx +9 -9
  283. package/src/scripts/uploader/uploader-context.js +1 -1
  284. package/src/scripts/uploader/uploader-location.js +1 -1
  285. package/src/scripts/uploader/uploader-modal.jsx +8 -7
  286. package/src/scripts/uploader/uploader-setup-routes.jsx +10 -10
  287. package/src/scripts/uploader/uploader-status-routes.jsx +6 -6
  288. package/src/scripts/uploader/uploader-view.jsx +4 -4
  289. package/src/scripts/uploader/uploader.jsx +50 -48
  290. package/src/scripts/users/username.tsx +3 -3
  291. package/src/scripts/utils/__tests__/csv.spec.ts +16 -16
  292. package/src/scripts/utils/__tests__/date.spec.js +4 -4
  293. package/src/scripts/utils/__tests__/json-ld.spec.js +12 -12
  294. package/src/scripts/utils/__tests__/newid.spec.js +9 -9
  295. package/src/scripts/utils/__tests__/userNotify.spec.js +10 -10
  296. package/src/scripts/utils/analytics.tsx +3 -3
  297. package/src/scripts/utils/cookies.js +1 -1
  298. package/src/scripts/utils/csv.ts +13 -15
  299. package/src/scripts/utils/datalad.js +1 -1
  300. package/src/scripts/utils/dataset-url.js +2 -2
  301. package/src/scripts/utils/date.js +2 -2
  302. package/src/scripts/utils/global-polyfill.ts +2 -2
  303. package/src/scripts/utils/gtag.js +6 -6
  304. package/src/scripts/utils/json-ld.js +13 -13
  305. package/src/scripts/utils/newid.js +1 -1
  306. package/src/scripts/utils/user-login-modal-ctx.tsx +4 -4
  307. package/src/scripts/utils/userNotify.js +2 -2
  308. package/src/scripts/validation/validation-panel.jsx +3 -3
  309. package/src/scripts/validation/validation-results.issues.issue.jsx +9 -9
  310. package/src/scripts/validation/validation-results.issues.jsx +19 -17
  311. package/src/scripts/validation/validation-results.jsx +10 -10
  312. package/src/scripts/validation/validation-status.jsx +19 -17
  313. package/src/scripts/validation/validation.jsx +5 -5
  314. package/src/scripts/workers/schema.ts +2 -2
  315. package/src/scripts/workers/schema.worker.ts +4 -4
  316. package/src/scripts/workers/validate.ts +2 -2
  317. package/src/scripts/workers/validate.worker.ts +7 -5
  318. package/vite.config.js +17 -17
  319. package/src/dist/assets/activity-icon.9ab0c828.png +0 -0
  320. package/src/dist/assets/bids.da8810b3.jpg +0 -0
  321. package/src/dist/assets/brand_mark.28e7645d.png +0 -0
  322. package/src/dist/assets/close-button.21e700a6.png +0 -0
  323. package/src/dist/assets/cube-get.39ed5636.png +0 -0
  324. package/src/dist/assets/cube-share.9b558c29.png +0 -0
  325. package/src/dist/assets/cube-use.ccf2ddc5.png +0 -0
  326. package/src/dist/assets/datalad.a35b15b8.jpg +0 -0
  327. package/src/dist/assets/eeg.1dc1dc54.jpg +0 -0
  328. package/src/dist/assets/email-header.1cb8bf76.png +0 -0
  329. package/src/dist/assets/ieeg.f91deb0a.jpg +0 -0
  330. package/src/dist/assets/index.3db805fb.js +0 -23127
  331. package/src/dist/assets/index.3db805fb.js.map +0 -1
  332. package/src/dist/assets/index.5eb79d2c.css +0 -1
  333. package/src/dist/assets/ljaf.567e9566.png +0 -0
  334. package/src/dist/assets/logo_app.8c986cf9.png +0 -0
  335. package/src/dist/assets/logo_cube.5224b745.png +0 -0
  336. package/src/dist/assets/logo_data.3e1d5743.png +0 -0
  337. package/src/dist/assets/logo_users.a84a265a.png +0 -0
  338. package/src/dist/assets/meg.1e1928f8.jpg +0 -0
  339. package/src/dist/assets/mri.b01e4f42.jpg +0 -0
  340. package/src/dist/assets/nih-bi-logo.80d76e1d.png +0 -0
  341. package/src/dist/assets/nih-stanford.2a7c496e.jpg +0 -0
  342. package/src/dist/assets/nih.78a64d38.png +0 -0
  343. package/src/dist/assets/nimh.0ec775d8.png +0 -0
  344. package/src/dist/assets/nru-logo.f3097dc5.png +0 -0
  345. package/src/dist/assets/nsf.eee1d3f7.png +0 -0
  346. package/src/dist/assets/nsf.f87e96e7.png +0 -0
  347. package/src/dist/assets/on-dark-horz.e1f213d0.svg +0 -1
  348. package/src/dist/assets/on-dark.12f4e2ce.svg +0 -1
  349. package/src/dist/assets/on-light-horz.23ff22c3.svg +0 -1
  350. package/src/dist/assets/on-light.50592f7f.svg +0 -1
  351. package/src/dist/assets/pet-scan.21d98a3d.jpg +0 -0
  352. package/src/dist/assets/revicons.4ca02b8a.ttf +0 -0
  353. package/src/dist/assets/revicons.9e4d4c68.eot +0 -0
  354. package/src/dist/assets/revicons.f7b9c306.woff +0 -0
  355. package/src/dist/assets/sqm-logo.9cd0cca5.png +0 -0
  356. package/src/dist/assets/squishymedia.fa3c5919.png +0 -0
  357. package/src/dist/assets/stanford.5f245936.png +0 -0
  358. package/src/dist/index.html +0 -25
@@ -1,10 +1,10 @@
1
- import React, { useState } from 'react'
2
- import TextInput from '../fragments/text-input'
3
- import SelectInput from '../fragments/select-input'
4
- import { DOILink, DOIPattern } from '../fragments/doi-link'
5
- import { useQuery, useMutation, gql, useApolloClient } from '@apollo/client'
6
- import styled from '@emotion/styled'
7
- import { Button } from '@openneuro/components/button'
1
+ import React, { useState } from "react"
2
+ import TextInput from "../fragments/text-input"
3
+ import SelectInput from "../fragments/select-input"
4
+ import { DOILink, DOIPattern } from "../fragments/doi-link"
5
+ import { gql, useApolloClient, useMutation, useQuery } from "@apollo/client"
6
+ import styled from "@emotion/styled"
7
+ import { Button } from "@openneuro/components/button"
8
8
 
9
9
  const getDatasetRelations = gql`
10
10
  query getDatasetRelations($datasetId: ID!) {
@@ -51,24 +51,24 @@ const deleteDatasetRelation = gql`
51
51
  `
52
52
 
53
53
  const TableContainer = styled.div({
54
- display: 'grid',
55
- gridTemplateColumns: '2fr 3fr 1fr',
54
+ display: "grid",
55
+ gridTemplateColumns: "2fr 3fr 1fr",
56
56
  })
57
57
 
58
58
  const GridItem = styled.div({
59
- padding: '8px',
59
+ padding: "8px",
60
60
  })
61
61
 
62
62
  const InputGroup = styled.div({
63
- paddingBottom: '8px',
63
+ paddingBottom: "8px",
64
64
  })
65
65
 
66
66
  export const DatasetRelations = ({ datasetId, hasEdit }) => {
67
67
  const [newRelation, setNewRelation] = useState({
68
- doi: '',
69
- description: '',
70
- relation: 'sameAs',
71
- kind: 'Dataset',
68
+ doi: "",
69
+ description: "",
70
+ relation: "sameAs",
71
+ kind: "Dataset",
72
72
  })
73
73
  const { data, loading, refetch } = useQuery(getDatasetRelations, {
74
74
  variables: { datasetId },
@@ -81,7 +81,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
81
81
  if (related) {
82
82
  loadedData = (
83
83
  <TableContainer>
84
- {related.map(obj => {
84
+ {related.map((obj) => {
85
85
  return (
86
86
  <React.Fragment key={obj.id}>
87
87
  <GridItem>
@@ -96,7 +96,8 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
96
96
  variables: { datasetId, doi: obj.id },
97
97
  })
98
98
  await refetch()
99
- }}>
99
+ }}
100
+ >
100
101
  Delete
101
102
  </button>
102
103
  </GridItem>
@@ -112,7 +113,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
112
113
  <>
113
114
  <p>
114
115
  Add a related DOI such as other repositories where this dataset can be
115
- found. DOI values should be formatted according to the{' '}
116
+ found. DOI values should be formatted according to the{" "}
116
117
  <a href="https://bids-specification.readthedocs.io/en/stable/02-common-principles.html#uniform-resource-indicator">
117
118
  BIDS recommended URI format
118
119
  </a>
@@ -146,9 +147,9 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
146
147
  setNewRelation({ ...newRelation, relation: value })
147
148
  }}
148
149
  options={[
149
- { value: 'sameAs' },
150
- { value: 'source' },
151
- { value: 'derivative' },
150
+ { value: "sameAs" },
151
+ { value: "source" },
152
+ { value: "derivative" },
152
153
  ]}
153
154
  />
154
155
  <SelectInput
@@ -158,7 +159,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
158
159
  onChange={(name, value) => {
159
160
  setNewRelation({ ...newRelation, kind: value })
160
161
  }}
161
- options={[{ value: 'Dataset' }, { value: 'Article' }]}
162
+ options={[{ value: "Dataset" }, { value: "Article" }]}
162
163
  />
163
164
  </InputGroup>
164
165
  <Button
@@ -167,7 +168,7 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
167
168
  label="Add DOI Relation"
168
169
  size="small"
169
170
  type="submit"
170
- onClick={async e => {
171
+ onClick={async (e) => {
171
172
  e.preventDefault()
172
173
  await createRelation({
173
174
  variables: { datasetId, ...newRelation },
@@ -175,12 +176,10 @@ export const DatasetRelations = ({ datasetId, hasEdit }) => {
175
176
  await refetch()
176
177
  }}
177
178
  // Disable if DOI pattern does not match
178
- disabled={
179
- !(
180
- newRelation.doi.startsWith('doi:') &&
181
- DOIPattern.exec(newRelation.doi.slice(4))
182
- )
183
- }
179
+ disabled={!(
180
+ newRelation.doi.startsWith("doi:") &&
181
+ DOIPattern.exec(newRelation.doi.slice(4))
182
+ )}
184
183
  />
185
184
  </div>
186
185
  )}
@@ -1,7 +1,7 @@
1
- import React, { FC } from 'react'
2
- import { gql, useMutation } from '@apollo/client'
3
- import { WarnButton } from '@openneuro/components/warn-button'
4
- import { DATASET_REVIEWERS } from '../fragments/dataset-reviewers'
1
+ import React, { FC } from "react"
2
+ import { gql, useMutation } from "@apollo/client"
3
+ import { WarnButton } from "@openneuro/components/warn-button"
4
+ import { DATASET_REVIEWERS } from "../fragments/dataset-reviewers"
5
5
 
6
6
  const DELETE_REVIEWER = gql`
7
7
  mutation deleteReviewer($datasetId: ID!, $id: ID!) {
@@ -31,13 +31,13 @@ export const DeleteReviewerLink: FC<DeleteReviewerLinkProps> = ({
31
31
  fragment: DATASET_REVIEWERS,
32
32
  })
33
33
  const updatedReviewers = reviewers.filter(
34
- reviewer => reviewer.id !== deleteReviewer.id,
34
+ (reviewer) => reviewer.id !== deleteReviewer.id,
35
35
  )
36
36
  cache.writeFragment({
37
37
  id: `Dataset:${datasetId}`,
38
38
  fragment: DATASET_REVIEWERS,
39
39
  data: {
40
- __typename: 'Dataset',
40
+ __typename: "Dataset",
41
41
  id: datasetId,
42
42
  reviewers: updatedReviewers,
43
43
  },
@@ -53,8 +53,7 @@ export const DeleteReviewerLink: FC<DeleteReviewerLinkProps> = ({
53
53
  setDisplayOptions={setDisplayOptions}
54
54
  withLabel={true}
55
55
  onConfirmedClick={() =>
56
- DeleteReviewerLink({ variables: { datasetId, id } })
57
- }
56
+ DeleteReviewerLink({ variables: { datasetId, id } })}
58
57
  />
59
58
  )
60
59
  }
@@ -1,10 +1,10 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { gql } from '@apollo/client'
4
- import { Mutation } from '@apollo/client/react/components'
5
- import { DATASET_COMMENTS } from '../fragments/comments-fragments'
6
- import { datasetCacheId } from './cache-id.js'
7
- import { Icon } from '@openneuro/components/icon'
1
+ import React from "react"
2
+ import PropTypes from "prop-types"
3
+ import { gql } from "@apollo/client"
4
+ import { Mutation } from "@apollo/client/react/components"
5
+ import { DATASET_COMMENTS } from "../fragments/comments-fragments"
6
+ import { datasetCacheId } from "./cache-id.js"
7
+ import { Icon } from "@openneuro/components/icon"
8
8
 
9
9
  const deleteComment = gql`
10
10
  mutation deleteComment($commentId: ID!, $deleteChildren: Boolean) {
@@ -22,7 +22,7 @@ const deleteComment = gql`
22
22
  export const deleteCommentsReducer = (comments, { deletedCommentIds }) => {
23
23
  // Must copy with freezeResults enabled
24
24
  const nextCommentsState = [...comments].filter(
25
- c => !deletedCommentIds.includes(c.id),
25
+ (c) => !deletedCommentIds.includes(c.id),
26
26
  )
27
27
  return nextCommentsState
28
28
  }
@@ -44,13 +44,14 @@ const DeleteComment = ({ datasetId, commentId }) => {
44
44
  id: datasetCacheId(datasetId),
45
45
  fragment: DATASET_COMMENTS,
46
46
  data: {
47
- __typename: 'Dataset',
47
+ __typename: "Dataset",
48
48
  id: datasetId,
49
49
  comments: nextCommentsState,
50
50
  },
51
51
  })
52
- }}>
53
- {deleteComment => (
52
+ }}
53
+ >
54
+ {(deleteComment) => (
54
55
  <div className="col col-fixed">
55
56
  <a
56
57
  className="edit"
@@ -61,7 +62,8 @@ const DeleteComment = ({ datasetId, commentId }) => {
61
62
  deleteChildren: true,
62
63
  },
63
64
  })
64
- }}>
65
+ }}
66
+ >
65
67
  <Icon icon="fa fa-trash" label="Delete" />
66
68
  </a>
67
69
  </div>
@@ -1,46 +1,44 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import TextInput from '../fragments/text-input'
4
- import SelectInput from '../fragments/select-input'
5
- import styled from '@emotion/styled'
1
+ import React from "react"
2
+ import PropTypes from "prop-types"
3
+ import TextInput from "../fragments/text-input"
4
+ import SelectInput from "../fragments/select-input"
5
+ import styled from "@emotion/styled"
6
6
 
7
7
  const Form = styled.form({
8
- width: '100%',
9
- maxWidth: '700px',
10
- margin: '10px 0',
8
+ width: "100%",
9
+ maxWidth: "700px",
10
+ margin: "10px 0",
11
11
  })
12
12
 
13
- const fields = hasEdit => {
13
+ const fields = (hasEdit) => {
14
14
  const fields = [
15
15
  {
16
- key: 'reason',
17
- label: 'Reason',
16
+ key: "reason",
17
+ label: "Reason",
18
18
  component: SelectInput,
19
19
  additionalProps: {
20
20
  options: [
21
- { value: 'subject privacy' },
22
- { value: 'duplicate dataset' },
23
- { value: 'abuse of service', admin: true },
21
+ { value: "subject privacy" },
22
+ { value: "duplicate dataset" },
23
+ { value: "abuse of service", admin: true },
24
24
  ],
25
25
  showOptionOther: true,
26
26
  required: false,
27
27
  },
28
28
  },
29
29
  {
30
- key: 'redirect',
31
- label: 'Superseded by (URL)',
30
+ key: "redirect",
31
+ label: "Superseded by (URL)",
32
32
  component: TextInput,
33
33
  additionalProps: {
34
34
  required: false,
35
35
  },
36
36
  },
37
37
  ]
38
- return hasEdit
39
- ? fields
40
- : fields.map(field => {
41
- field.additionalProps.disabled = true
42
- return field
43
- })
38
+ return hasEdit ? fields : fields.map((field) => {
39
+ field.additionalProps.disabled = true
40
+ return field
41
+ })
44
42
  }
45
43
 
46
44
  const DeleteDatasetForm = ({ values, onChange, hasEdit }) => (
@@ -1,7 +1,7 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { gql, useMutation } from '@apollo/client'
4
- import { WarnButton } from '@openneuro/components/warn-button'
1
+ import React from "react"
2
+ import PropTypes from "prop-types"
3
+ import { gql, useMutation } from "@apollo/client"
4
+ import { WarnButton } from "@openneuro/components/warn-button"
5
5
 
6
6
  const DELETE_FILE = gql`
7
7
  mutation deleteFiles($datasetId: ID!, $files: [DeleteFile]) {
@@ -13,7 +13,7 @@ const DELETE_FILE = gql`
13
13
  * Given a file object, path/filename for deletion, and a list of currently loaded files, filter any that will be deleted and orphan directories
14
14
  */
15
15
  export function fileCacheDeleteFilter(file, path, filename, cachedFileObjects) {
16
- const fullPath = [path, filename].filter(Boolean).join(':')
16
+ const fullPath = [path, filename].filter(Boolean).join(":")
17
17
  if (file.filename === fullPath) {
18
18
  return false
19
19
  } else {
@@ -45,7 +45,7 @@ const DeleteFile = ({ datasetId, path, filename }) => {
45
45
  fields: {
46
46
  files(cachedFiles) {
47
47
  // Filter any removed files from the Draft.files cache
48
- const cachedFileObjects = cachedFiles.map(f =>
48
+ const cachedFileObjects = cachedFiles.map((f) =>
49
49
  cache.readFragment({
50
50
  id: cache.identify(f),
51
51
  fragment: gql`
@@ -56,9 +56,9 @@ const DeleteFile = ({ datasetId, path, filename }) => {
56
56
  directory
57
57
  }
58
58
  `,
59
- }),
59
+ })
60
60
  )
61
- const remainingFiles = cachedFiles.filter(f => {
61
+ const remainingFiles = cachedFiles.filter((f) => {
62
62
  // Get the cache key for each file we have loaded
63
63
  const file = cache.readFragment({
64
64
  id: cache.identify(f),
@@ -1,7 +1,7 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { gql } from '@apollo/client'
4
- import { Mutation } from '@apollo/client/react/components'
1
+ import React from "react"
2
+ import PropTypes from "prop-types"
3
+ import { gql } from "@apollo/client"
4
+ import { Mutation } from "@apollo/client/react/components"
5
5
 
6
6
  export const DELETE_DATASET = gql`
7
7
  mutation deleteDataset($id: ID!, $reason: String, $redirect: String) {
@@ -11,18 +11,18 @@ export const DELETE_DATASET = gql`
11
11
 
12
12
  const DeleteDataset = ({ datasetId, metadata }) => {
13
13
  const [warn, setWarn] = React.useState(false)
14
- const handleClick = deleteDataset => () => {
14
+ const handleClick = (deleteDataset) => () => {
15
15
  if (!warn) setWarn(true)
16
16
  else deleteDataset()
17
17
  }
18
18
 
19
19
  return (
20
20
  <Mutation mutation={DELETE_DATASET}>
21
- {deleteDataset => (
21
+ {(deleteDataset) => (
22
22
  <span>
23
23
  <button
24
24
  className="on-button on-button--primary on-button--small"
25
- style={{ backgroundColor: warn ? 'red' : null }}
25
+ style={{ backgroundColor: warn ? "red" : null }}
26
26
  onClick={handleClick(async () => {
27
27
  await deleteDataset({
28
28
  variables: {
@@ -34,9 +34,10 @@ const DeleteDataset = ({ datasetId, metadata }) => {
34
34
  window.location.replace(
35
35
  `${window.location.origin}/dashboard/datasets`,
36
36
  )
37
- })}>
37
+ })}
38
+ >
38
39
  <i className="fa fa-trash" />
39
- {warn ? ' Confirm Delete' : ' Delete Dataset'}
40
+ {warn ? " Confirm Delete" : " Delete Dataset"}
40
41
  </button>
41
42
  </span>
42
43
  )}
@@ -1,7 +1,7 @@
1
- import React, { FC } from 'react'
2
- import { gql, useMutation } from '@apollo/client'
3
- import { Button } from '@openneuro/components/button'
4
- import { useNavigate } from 'react-router-dom'
1
+ import React, { FC } from "react"
2
+ import { gql, useMutation } from "@apollo/client"
3
+ import { Button } from "@openneuro/components/button"
4
+ import { useNavigate } from "react-router-dom"
5
5
 
6
6
  export const DEPRECATE_VERSION = gql`
7
7
  mutation deprecateSnapshot($datasetId: ID!, $tag: String!, $reason: String!) {
@@ -39,8 +39,7 @@ export const DeprecateVersion: FC<DeprecateVersionProps> = ({
39
39
  variables: { datasetId, tag, reason },
40
40
  }).then(() => {
41
41
  navigate(`/datasets/${datasetId}/versions/${tag}`)
42
- })
43
- }
42
+ })}
44
43
  />
45
44
  )
46
45
  }
@@ -1,10 +1,10 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { gql } from '@apollo/client'
4
- import { Mutation } from '@apollo/client/react/components'
5
- import { SaveButton } from '../fragments/save-button'
6
- import { DRAFT_FRAGMENT } from '../../datalad/dataset/dataset-query-fragments'
7
- import { datasetCacheId } from './cache-id.js'
1
+ import React from "react"
2
+ import PropTypes from "prop-types"
3
+ import { gql } from "@apollo/client"
4
+ import { Mutation } from "@apollo/client/react/components"
5
+ import { SaveButton } from "../fragments/save-button"
6
+ import { DRAFT_FRAGMENT } from "../../datalad/dataset/dataset-query-fragments"
7
+ import { datasetCacheId } from "./cache-id.js"
8
8
 
9
9
  export const UPDATE_DESCRIPTION = gql`
10
10
  mutation updateDescription(
@@ -56,7 +56,7 @@ export const mergeFieldValue = (
56
56
  updateDescription,
57
57
  updateDescriptionList,
58
58
  ) => ({
59
- __typename: 'Dataset',
59
+ __typename: "Dataset",
60
60
  id: datasetId,
61
61
  draft: {
62
62
  ...draft,
@@ -95,8 +95,9 @@ const UpdateDescription = ({ datasetId, field, value, done }) => {
95
95
  updateDescriptionList,
96
96
  ),
97
97
  })
98
- }}>
99
- {updateDescription => (
98
+ }}
99
+ >
100
+ {(updateDescription) => (
100
101
  <SaveButton
101
102
  action={async () => {
102
103
  await updateDescription({ variables: { datasetId, field, value } })
@@ -111,16 +112,16 @@ const UpdateDescription = ({ datasetId, field, value, done }) => {
111
112
  UpdateDescription.propTypes = {
112
113
  datasetId: PropTypes.string,
113
114
  field: PropTypes.oneOf([
114
- 'Name',
115
- 'BIDSVersion',
116
- 'License',
117
- 'Authors',
118
- 'Acknowledgements',
119
- 'HowToAcknowledge',
120
- 'Funding',
121
- 'ReferencesAndLinks',
122
- 'DatasetDOI',
123
- 'EthicsApprovals',
115
+ "Name",
116
+ "BIDSVersion",
117
+ "License",
118
+ "Authors",
119
+ "Acknowledgements",
120
+ "HowToAcknowledge",
121
+ "Funding",
122
+ "ReferencesAndLinks",
123
+ "DatasetDOI",
124
+ "EthicsApprovals",
124
125
  ]),
125
126
  value: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
126
127
  done: PropTypes.func,
@@ -1,9 +1,9 @@
1
- import React from 'react'
2
- import PropTypes from 'prop-types'
3
- import { gql } from '@apollo/client'
4
- import { Mutation } from '@apollo/client/react/components'
5
- import { WarnButton } from '@openneuro/components/warn-button'
6
- import { Tooltip } from '@openneuro/components/tooltip'
1
+ import React from "react"
2
+ import PropTypes from "prop-types"
3
+ import { gql } from "@apollo/client"
4
+ import { Mutation } from "@apollo/client/react/components"
5
+ import { WarnButton } from "@openneuro/components/warn-button"
6
+ import { Tooltip } from "@openneuro/components/tooltip"
7
7
 
8
8
  const FLAG_ANNEX_OBJECT = gql`
9
9
  mutation flagAnnexObject(
@@ -23,11 +23,12 @@ const FLAG_ANNEX_OBJECT = gql`
23
23
 
24
24
  const FlagAnnexObject = ({ datasetId, snapshot, filepath, annexKey }) => (
25
25
  <Mutation mutation={FLAG_ANNEX_OBJECT} awaitRefetchQueries={true}>
26
- {flagAnnexObject => (
26
+ {(flagAnnexObject) => (
27
27
  // fa-exclamation-triangle might be better
28
28
  <Tooltip
29
29
  className="flag-annex-object"
30
- tooltip="Flag: use this to alert site admins if this file has been found to contain subject sensitive data.">
30
+ tooltip="Flag: use this to alert site admins if this file has been found to contain subject sensitive data."
31
+ >
31
32
  <WarnButton
32
33
  message=""
33
34
  icon="fa-exclamation-triangle"
@@ -37,7 +38,7 @@ const FlagAnnexObject = ({ datasetId, snapshot, filepath, annexKey }) => (
37
38
  flagAnnexObject({
38
39
  variables: {
39
40
  datasetId,
40
- snapshot: snapshot || 'HEAD',
41
+ snapshot: snapshot || "HEAD",
41
42
  filepath,
42
43
  annexKey,
43
44
  },
@@ -1,9 +1,9 @@
1
- import React, { FC, useContext } from 'react'
2
- import { gql } from '@apollo/client'
3
- import { Mutation } from '@apollo/client/react/components'
4
- import { datasetCacheId } from '../../datalad/mutations/cache-id.js'
5
- import { CountToggle } from '@openneuro/components/count-toggle'
6
- import { UserModalOpenCtx } from '../../utils/user-login-modal-ctx'
1
+ import React, { FC, useContext } from "react"
2
+ import { gql } from "@apollo/client"
3
+ import { Mutation } from "@apollo/client/react/components"
4
+ import { datasetCacheId } from "../../datalad/mutations/cache-id.js"
5
+ import { CountToggle } from "@openneuro/components/count-toggle"
6
+ import { UserModalOpenCtx } from "../../utils/user-login-modal-ctx"
7
7
 
8
8
  const FOLLOW_DATASET = gql`
9
9
  mutation followDataset($datasetId: ID!) {
@@ -45,7 +45,7 @@ export const FollowDataset: FC<FollowDatasetProps> = ({
45
45
  followers,
46
46
  }) => {
47
47
  const { setUserModalOpen } = useContext(UserModalOpenCtx)
48
- const handleToggle = followDataset => () => {
48
+ const handleToggle = (followDataset) => () => {
49
49
  if (!profile) {
50
50
  // if user is not logged in, give them the option to do so
51
51
  // then redirect back to this page
@@ -64,7 +64,7 @@ export const FollowDataset: FC<FollowDatasetProps> = ({
64
64
  id: datasetCacheId(datasetId),
65
65
  fragment: USER_FOLLOWING,
66
66
  data: {
67
- __typename: 'Dataset',
67
+ __typename: "Dataset",
68
68
  id: datasetId,
69
69
  following: following,
70
70
  },
@@ -78,19 +78,20 @@ export const FollowDataset: FC<FollowDatasetProps> = ({
78
78
  id: datasetCacheId(datasetId),
79
79
  fragment: DATASET_FOLLOWERS,
80
80
  data: {
81
- __typename: 'Dataset',
81
+ __typename: "Dataset",
82
82
  id: datasetId,
83
83
  followers: following
84
84
  ? [...followers, newFollower]
85
85
  : followers.filter(
86
- follower => follower.userId !== newFollower.userId,
87
- ),
86
+ (follower) => follower.userId !== newFollower.userId,
87
+ ),
88
88
  },
89
89
  })
90
- }}>
91
- {followDataset => (
90
+ }}
91
+ >
92
+ {(followDataset) => (
92
93
  <CountToggle
93
- label={following ? 'Following' : 'Follow'}
94
+ label={following ? "Following" : "Follow"}
94
95
  icon="fa-star"
95
96
  disabled={!profile}
96
97
  toggleClick={handleToggle(followDataset)}
@@ -1,8 +1,8 @@
1
- import React, { FC, useState } from 'react'
2
- import { gql, useMutation, useApolloClient } from '@apollo/client'
3
- import { Button } from '@openneuro/components/button'
4
- import { createDataset } from '../../uploader/upload-mutation'
5
- import styled from '@emotion/styled'
1
+ import React, { FC, useState } from "react"
2
+ import { gql, useApolloClient, useMutation } from "@apollo/client"
3
+ import { Button } from "@openneuro/components/button"
4
+ import { createDataset } from "../../uploader/upload-mutation"
5
+ import styled from "@emotion/styled"
6
6
 
7
7
  export const IMPORT_DATASET = gql`
8
8
  mutation importRemoteDataset($datasetId: ID!, $url: String!) {