Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/photos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Klehr <mklehr@gmx.net>2022-11-04 21:07:00 +0300
committerMarcel Klehr <mklehr@gmx.net>2022-11-04 21:07:00 +0300
commit1325fa9a89c81ea7ace111081cdaa3a524bdf6a4 (patch)
treeba884f347fd698203f36a4262a6105f438accc60
parent3bfccfdc614f886c4dfa38cf0f477b13a2e999d6 (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.js2
-rw-r--r--src/mixins/FetchFacesMixin.js2
-rw-r--r--src/store/faces.js10
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)