Skip to content

Commit

Permalink
Fix face detection title being wrong in vuex after moving files to ne…
Browse files Browse the repository at this point in the history
…w face

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
  • Loading branch information
marcelklehr committed Nov 4, 2022
1 parent 3bfccfd commit 1325fa9
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
2 changes: 0 additions & 2 deletions src/mixins/FaceCoverMixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
*/

import { mapGetters } from 'vuex'
import he from 'he'

export default {
name: 'FaceCoverMixin',
Expand All @@ -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
Expand Down
2 changes: 2 additions & 0 deletions src/mixins/FetchFacesMixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down Expand Up @@ -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)

Expand Down
10 changes: 6 additions & 4 deletions src/store/faces.js
Original file line number Diff line number Diff line change
Expand Up @@ -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))
},

/**
Expand All @@ -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.
},

/**
Expand Down Expand Up @@ -126,14 +126,16 @@ 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 {
await client.moveFile(
`/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)
Expand Down

0 comments on commit 1325fa9

Please sign in to comment.