|
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