41 lines
1.3 KiB
JavaScript
41 lines
1.3 KiB
JavaScript
import {ref} from "vue";
|
|
import {usePhotosStore} from "stores/Photo";
|
|
import {fetchFlight} from "src/composables/objects/flight";
|
|
import {usePointsOfInterestStore} from "stores/PointsOfInterest";
|
|
|
|
export const openBatchEdit = ref(false);
|
|
export const editBatchPhotos = ref([]);
|
|
export const openBatchPhotoForm = (photos) => {
|
|
openBatchEdit.value = true;
|
|
editBatchPhotos.value = photos;
|
|
}
|
|
|
|
export const handleBatchPhotoEdit = async (flightId, data) => {
|
|
const photoIds = data.photoIds;
|
|
delete data.photoIds;
|
|
delete data.id;
|
|
|
|
if (data.pointOfInterest && !data.pointOfInterest.id) {
|
|
const poiData = {
|
|
...data.pointOfInterest,
|
|
isPublic: false,
|
|
description: "",
|
|
}
|
|
await usePointsOfInterestStore().create(poiData).then(poi => data.pointOfInterest = {id: poi.id, name: poi.name});
|
|
}
|
|
|
|
const promises = [];
|
|
for (const id of photoIds) {
|
|
const updateData = {};
|
|
if (data.name !== '') updateData.name = data.name;
|
|
if (data.description !== '') updateData.description = data.description;
|
|
if (data.pointOfInterest) updateData.pointOfInterest = data.pointOfInterest;
|
|
|
|
if (Object.keys(updateData).length === 0) continue;
|
|
|
|
promises.push(usePhotosStore().update(id, updateData));
|
|
}
|
|
|
|
Promise.all(promises).finally(() => fetchFlight(flightId))
|
|
}
|