diff options
author | Marcel Klehr <mklehr@gmx.net> | 2022-11-04 21:07:00 +0300 |
---|---|---|
committer | Marcel Klehr <mklehr@gmx.net> | 2022-11-04 21:07:00 +0300 |
commit | 1325fa9a89c81ea7ace111081cdaa3a524bdf6a4 (patch) | |
tree | ba884f347fd698203f36a4262a6105f438accc60 | |
parent | 3bfccfdc614f886c4dfa38cf0f477b13a2e999d6 (diff) |
Fix face detection title being wrong in vuex after moving files to new face
Signed-off-by: Marcel Klehr <mklehr@gmx.net>
-rw-r--r-- | src/mixins/FaceCoverMixin.js | 2 | ||||
-rw-r--r-- | src/mixins/FetchFacesMixin.js | 2 | ||||
-rw-r--r-- | src/store/faces.js | 10 |
3 files changed, 8 insertions, 6 deletions
diff --git a/src/mixins/FaceCoverMixin.js b/src/mixins/FaceCoverMixin.js index e66e4496..503667a8 100644 --- a/src/mixins/FaceCoverMixin.js +++ b/src/mixins/FaceCoverMixin.js @@ -21,7 +21,6 @@ */ import { mapGetters } from 'vuex' -import he from 'he' export default { name: 'FaceCoverMixin', @@ -47,7 +46,6 @@ export default { return (this.facesFiles[faceName] || []) .slice(0, 25) .map(fileId => this.files[fileId]) - .map(file => ({ ...file, faceDetections: JSON.parse(he.decode(file.faceDetections)) })) // sort larges face first .sort((a, b) => b.faceDetections.find(d => d.title === faceName).width diff --git a/src/mixins/FetchFacesMixin.js b/src/mixins/FetchFacesMixin.js index 10c2bc56..cb1adbd9 100644 --- a/src/mixins/FetchFacesMixin.js +++ b/src/mixins/FetchFacesMixin.js @@ -30,6 +30,7 @@ import logger from '../services/logger.js' import DavRequest from '../services/DavRequest' import { genFileInfo } from '../utils/fileUtils' import AbortControllerMixin from './AbortControllerMixin' +import he from 'he' export default { name: 'FetchFacesMixin', @@ -122,6 +123,7 @@ export default { fetchedFiles = fetchedFiles .map(file => genFileInfo(file)) .map(file => ({ ...file, filename: file.realpath.replace(`/${getCurrentUser().uid}/files`, '') })) + .map(file => ({ ...file, faceDetections: JSON.parse(he.decode(file.faceDetections)) })) const fileIds = fetchedFiles.map(file => '' + file.fileid) diff --git a/src/store/faces.js b/src/store/faces.js index c49f1a18..f69aef8c 100644 --- a/src/store/faces.js +++ b/src/store/faces.js @@ -62,8 +62,8 @@ const mutations = { * @param {Array} data.faceNames list of faces ids */ removeFaces(state, { faceNames }) { - faceNames.forEach(faceName => delete state.faces[faceName]) - faceNames.forEach(faceName => delete state.facesFiles[faceName]) + faceNames.forEach(faceName => Vue.delete(state.faces, faceName)) + faceNames.forEach(faceName => Vue.delete(state.facesFiles, faceName)) }, /** @@ -79,7 +79,7 @@ const mutations = { Vue.set(state.facesFiles, faceName, []) } const faceFiles = state.facesFiles[faceName] - state.facesFiles[faceName].push(...fileIdsToAdd.filter(fileId => !faceFiles.includes(fileId))) // Filter to prevent duplicate fileId. + faceFiles.push(...fileIdsToAdd.filter(fileId => !faceFiles.includes(fileId))) // Filter to prevent duplicate fileId. }, /** @@ -126,7 +126,8 @@ const actions = { const promises = fileIdsToMove .map(async (fileId) => { - const fileBaseName = context.getters.files[fileId].basename + const file = context.getters.files[fileId] + const fileBaseName = file.basename const symbol = await semaphore.acquire() try { @@ -134,6 +135,7 @@ const actions = { `/recognize/${getCurrentUser()?.uid}/faces/${oldFace}/${fileBaseName}`, `/recognize/${getCurrentUser()?.uid}/faces/${faceName}/${fileBaseName}` ) + file.faceDetections.find(detection => detection.title === oldFace).title = faceName await context.commit('addFilesToFace', { faceName, fileIdsToAdd: [fileId] }) await context.commit('removeFilesFromFace', { faceName: oldFace, fileIdsToRemove: [fileId] }) semaphore.release(symbol) |