Skip to content

Commit f6c5f7e

Browse files
committed
feat(pages): make mini page creation quick
1 parent adf6e4b commit f6c5f7e

File tree

1 file changed

+39
-20
lines changed

1 file changed

+39
-20
lines changed

apps/client/src/layouts/PagesLayout/RightSidebar/NoteProperties/NoteMiniProperties.vue

+39-20
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
tooltip="Create new page"
55
icon="mdi-note-plus"
66
:disable="page.react.readOnly"
7-
@click="showNewPageDialog()"
7+
@click="createNewPageQuick()"
88
>
99
<TutorialTooltip
1010
v-if="
@@ -214,13 +214,12 @@
214214
<script setup lang="ts">
215215
import { splitStr } from '@stdlib/misc';
216216
import { useIntervalFn } from '@vueuse/core';
217+
import { createPage } from 'src/code/api-interface/pages/create';
217218
import type { PageNote } from 'src/code/pages/page/notes/note';
218219
import type { Page } from 'src/code/pages/page/page';
219220
import TutorialTooltip from 'src/components/TutorialTooltip.vue';
220221
import type { Ref } from 'vue';
221222
222-
import NewPageDialog from './NewPageDialog.vue';
223-
224223
const page = inject<Ref<Page>>('page')!;
225224
226225
const note = computed(() => page.value.activeElem.react.value as PageNote);
@@ -279,23 +278,43 @@ function getInitialPageTitle() {
279278
return initialPageTitle;
280279
}
281280
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',
299290
});
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+
}
300319
}
301320
</script>

0 commit comments

Comments
 (0)