|
4 | 4 | tooltip="Create new page" |
5 | 5 | icon="mdi-note-plus" |
6 | 6 | :disable="page.react.readOnly" |
7 | | - @click="showNewPageDialog()" |
| 7 | + @click="createNewPageQuick()" |
8 | 8 | > |
9 | 9 | <TutorialTooltip |
10 | 10 | v-if=" |
|
214 | 214 | <script setup lang="ts"> |
215 | 215 | import { splitStr } from '@stdlib/misc'; |
216 | 216 | import { useIntervalFn } from '@vueuse/core'; |
| 217 | +import { createPage } from 'src/code/api-interface/pages/create'; |
217 | 218 | import type { PageNote } from 'src/code/pages/page/notes/note'; |
218 | 219 | import type { Page } from 'src/code/pages/page/page'; |
219 | 220 | import TutorialTooltip from 'src/components/TutorialTooltip.vue'; |
220 | 221 | import type { Ref } from 'vue'; |
221 | 222 |
|
222 | | -import NewPageDialog from './NewPageDialog.vue'; |
223 | | -
|
224 | 223 | const page = inject<Ref<Page>>('page')!; |
225 | 224 |
|
226 | 225 | const note = computed(() => page.value.activeElem.react.value as PageNote); |
@@ -279,23 +278,43 @@ function getInitialPageTitle() { |
279 | 278 | return initialPageTitle; |
280 | 279 | } |
281 | 280 |
|
282 | | -function showNewPageDialog() { |
283 | | - $quasar() |
284 | | - .dialog({ |
285 | | - component: NewPageDialog, |
286 | | -
|
287 | | - componentProps: { |
288 | | - initialPageTitle: getInitialPageTitle(), |
289 | | - }, |
290 | | - }) |
291 | | - .onOk((url) => { |
292 | | - changeProp(url, (selectedNote, url) => { |
293 | | - selectedNote.react.collab.link = url; |
294 | | - }); |
295 | | -
|
296 | | - if (internals.pages.react.tutorialStep === 4) { |
297 | | - internals.pages.react.tutorialStep++; |
298 | | - } |
| 281 | +async function createNewPageQuick() { |
| 282 | + const initialPageTitle = getInitialPageTitle(); |
| 283 | +
|
| 284 | + if (initialPageTitle === '') { |
| 285 | + $quasar().notify({ |
| 286 | + html: true, |
| 287 | + message: |
| 288 | + 'Cannot create a page from an empty note.<br/>Please write something in it first.', |
| 289 | + color: 'negative', |
299 | 290 | }); |
| 291 | + return; |
| 292 | + } |
| 293 | +
|
| 294 | + const response = await createPage({ |
| 295 | + parentPageId: page.value.id, |
| 296 | + destGroupId: page.value.react.groupId, |
| 297 | +
|
| 298 | + pageRelativeTitle: initialPageTitle, |
| 299 | + }); |
| 300 | +
|
| 301 | + changeProp(`/pages/${response.pageId}`, (selectedNote, url) => { |
| 302 | + selectedNote.react.collab.link = url; |
| 303 | + }); |
| 304 | +
|
| 305 | + await internals.pages.goToPage(response.pageId, { fromParent: true }); |
| 306 | +
|
| 307 | + $quasar().notify({ |
| 308 | + message: |
| 309 | + 'Page created successfully.' + |
| 310 | + (response.numFreePages != null |
| 311 | + ? ` (${response.numFreePages + 1}/50)` |
| 312 | + : ''), |
| 313 | + type: 'positive', |
| 314 | + }); |
| 315 | +
|
| 316 | + if (internals.pages.react.tutorialStep === 4) { |
| 317 | + internals.pages.react.tutorialStep++; |
| 318 | + } |
300 | 319 | } |
301 | 320 | </script> |
0 commit comments