diff --git a/resources/js/components/forms/album/AlbumCreateDialog.vue b/resources/js/components/forms/album/AlbumCreateDialog.vue index b27c5f40509..e742b1cba3d 100644 --- a/resources/js/components/forms/album/AlbumCreateDialog.vue +++ b/resources/js/components/forms/album/AlbumCreateDialog.vue @@ -31,7 +31,7 @@ import AlbumService from "@/services/album-service"; import Dialog from "primevue/dialog"; import InputText from "@/components/forms/basic/InputText.vue"; -import { computed, ref, watch } from "vue"; +import { computed, ref } from "vue"; import { useRouter } from "vue-router"; import FloatLabel from "primevue/floatlabel"; import Button from "primevue/button"; @@ -39,18 +39,14 @@ import { useToast } from "primevue/usetoast"; import { useTogglablesStateStore } from "@/stores/ModalsState"; import { storeToRefs } from "pinia"; import { onKeyPressed } from "@vueuse/core"; - -const props = defineProps<{ - parentId: string | null; -}>(); +import { usePhotoRoute } from "@/composables/photo/photoRoute"; const togglableStore = useTogglablesStateStore(); const { is_create_album_visible } = storeToRefs(togglableStore); - -const parentId = ref(props.parentId); +const router = useRouter(); +const { getParentId } = usePhotoRoute(router); const toast = useToast(); -const router = useRouter(); const title = ref(undefined); @@ -63,12 +59,12 @@ function create() { AlbumService.createAlbum({ title: title.value as string, - parent_id: parentId.value, + parent_id: getParentId() ?? null, }) .then((response) => { title.value = undefined; is_create_album_visible.value = false; - AlbumService.clearCache(parentId.value); + AlbumService.clearCache(getParentId()); router.push(`/gallery/${response.data}`); }) .catch((error) => { @@ -77,12 +73,4 @@ function create() { } onKeyPressed("Enter", () => is_create_album_visible.value && isValid.value && create()); - -watch( - () => props.parentId, - (newAlbumID, _oldAlbumID) => { - title.value = undefined; - parentId.value = newAlbumID as string | null; - }, -); diff --git a/resources/js/components/forms/gallery-dialogs/AlbumMergeDialog.vue b/resources/js/components/forms/gallery-dialogs/AlbumMergeDialog.vue index 0a5597622e3..3bbf48463c4 100644 --- a/resources/js/components/forms/gallery-dialogs/AlbumMergeDialog.vue +++ b/resources/js/components/forms/gallery-dialogs/AlbumMergeDialog.vue @@ -41,13 +41,16 @@ import SearchTargetAlbum from "@/components/forms/album/SearchTargetAlbum.vue"; import AlbumService from "@/services/album-service"; import { useToast } from "primevue/usetoast"; import Dialog from "primevue/dialog"; +import { useRouter } from "vue-router"; +import { usePhotoRoute } from "@/composables/photo/photoRoute"; const props = defineProps<{ - parentId: string | undefined; album?: App.Http.Resources.Models.ThumbAlbumResource; albumIds: string[]; }>(); +const router = useRouter(); +const { getParentId } = usePhotoRoute(router); const visible = defineModel("visible", { default: false }); const emits = defineEmits<{ @@ -100,10 +103,10 @@ function execute() { for (const id in albumMergedIds) { AlbumService.clearCache(id); } - if (props.parentId === undefined) { + if (getParentId() === undefined) { AlbumService.clearAlbums(); } else { - AlbumService.clearCache(props.parentId); + AlbumService.clearCache(getParentId()); } // RESET ! diff --git a/resources/js/components/forms/gallery-dialogs/DeleteDialog.vue b/resources/js/components/forms/gallery-dialogs/DeleteDialog.vue index 137ab48f0ee..02d68206fe5 100644 --- a/resources/js/components/forms/gallery-dialogs/DeleteDialog.vue +++ b/resources/js/components/forms/gallery-dialogs/DeleteDialog.vue @@ -27,16 +27,20 @@ import { sprintf } from "sprintf-js"; import Dialog from "primevue/dialog"; import Button from "primevue/button"; import { useToast } from "primevue/usetoast"; -const toast = useToast(); +import { useRouter } from "vue-router"; +import { usePhotoRoute } from "@/composables/photo/photoRoute"; +const toast = useToast(); const props = defineProps<{ - parentId: string | undefined; photo?: App.Http.Resources.Models.PhotoResource; photoIds?: string[]; album?: App.Http.Resources.Models.ThumbAlbumResource; albumIds?: string[]; }>(); +const router = useRouter(); +const { getParentId } = usePhotoRoute(router); + const visible = defineModel("visible", { default: false }); const emits = defineEmits<{ deleted: []; @@ -83,10 +87,10 @@ function executeDeleteAlbum() { } AlbumService.delete(albumDeletedIds).then(() => { - if (props.parentId === undefined) { + if (getParentId() === undefined) { AlbumService.clearAlbums(); } else { - AlbumService.clearCache(props.parentId); + AlbumService.clearCache(getParentId()); } emits("deleted"); }); @@ -105,7 +109,7 @@ function executeDeletePhoto() { summary: trans("dialogs.photo_delete.deleted"), life: 3000, }); - AlbumService.clearCache(props.parentId); + AlbumService.clearCache(getParentId()); emits("deleted"); }); } diff --git a/resources/js/components/forms/gallery-dialogs/MoveDialog.vue b/resources/js/components/forms/gallery-dialogs/MoveDialog.vue index a5eb88164dd..43a983f151a 100644 --- a/resources/js/components/forms/gallery-dialogs/MoveDialog.vue +++ b/resources/js/components/forms/gallery-dialogs/MoveDialog.vue @@ -39,15 +39,18 @@ import SearchTargetAlbum from "@/components/forms/album/SearchTargetAlbum.vue"; import { useToast } from "primevue/usetoast"; import Button from "primevue/button"; import Dialog from "primevue/dialog"; +import { useRouter } from "vue-router"; +import { usePhotoRoute } from "@/composables/photo/photoRoute"; const props = defineProps<{ - parentId: string | undefined; album?: App.Http.Resources.Models.ThumbAlbumResource; albumIds?: string[]; photo?: App.Http.Resources.Models.PhotoResource; photoIds?: string[]; }>(); +const router = useRouter(); +const { getParentId } = usePhotoRoute(router); const visible = defineModel("visible", { default: false }); const emits = defineEmits<{ @@ -142,11 +145,12 @@ function executeMoveAlbum() { for (const id in albumMovedIds) { AlbumService.clearCache(id); } - if (props.parentId === undefined) { + if (getParentId() === undefined) { AlbumService.clearAlbums(); } else { - AlbumService.clearCache(props.parentId); + AlbumService.clearCache(getParentId()); } + close(); emits("moved"); }); } @@ -161,19 +165,18 @@ function executeMovePhoto() { } else { photoMovedIds = props.photoIds as string[]; } - PhotoService.move(destination_id.value, photoMovedIds).then(() => { + PhotoService.move({ album_id: destination_id.value, photo_ids: photoMovedIds }).then(() => { toast.add({ severity: "success", summary: sprintf(trans("dialogs.move_photo.moved"), titleMovedTo.value), life: 3000, }); // Clear the cache for the current album and the destination album - AlbumService.clearCache(props.parentId); + AlbumService.clearCache(getParentId()); AlbumService.clearCache(destination_id.value); // RESET ! - destination_id.value = undefined; - + close(); emits("moved"); }); } diff --git a/resources/js/components/forms/photo/PhotoCopyDialog.vue b/resources/js/components/forms/photo/PhotoCopyDialog.vue index 688d0408950..d7fbf25666f 100644 --- a/resources/js/components/forms/photo/PhotoCopyDialog.vue +++ b/resources/js/components/forms/photo/PhotoCopyDialog.vue @@ -41,7 +41,6 @@ import Dialog from "primevue/dialog"; import { trans } from "laravel-vue-i18n"; const props = defineProps<{ - parentId: string | undefined; photo?: App.Http.Resources.Models.PhotoResource; photoIds?: string[]; }>(); diff --git a/resources/js/components/headers/AlbumHeader.vue b/resources/js/components/headers/AlbumHeader.vue index 37cf89dee16..933d3b6f42e 100644 --- a/resources/js/components/headers/AlbumHeader.vue +++ b/resources/js/components/headers/AlbumHeader.vue @@ -1,5 +1,5 @@