Hide faces from frontend if disabled

This commit is contained in:
viktorstrate
2021-08-31 12:05:46 +02:00
parent 9bcfdbb2cd
commit 521b121613
9 changed files with 49 additions and 41 deletions

View File

@@ -8,6 +8,7 @@ import (
api "github.com/photoview/photoview/api/graphql"
"github.com/photoview/photoview/api/graphql/auth"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/face_detection"
"github.com/pkg/errors"
"gorm.io/gorm/clause"
)
@@ -228,6 +229,10 @@ func (r *mutationResolver) FavoriteMedia(ctx context.Context, mediaID int, favor
}
func (r *mediaResolver) Faces(ctx context.Context, media *models.Media) ([]*models.ImageFace, error) {
if face_detection.GlobalFaceDetector == nil {
return []*models.ImageFace{}, nil
}
if media.Faces != nil {
return media.Faces, nil
}

View File

@@ -1,10 +1,7 @@
package resolvers
import (
"context"
api "github.com/photoview/photoview/api/graphql"
"github.com/photoview/photoview/api/graphql/models"
"gorm.io/gorm"
)
@@ -35,7 +32,3 @@ type queryResolver struct{ *Resolver }
type subscriptionResolver struct {
Resolver *Resolver
}
func (r *queryResolver) SiteInfo(ctx context.Context) (*models.SiteInfo, error) {
return models.GetSiteInfo(r.Database)
}

View File

@@ -8,6 +8,10 @@ import (
"github.com/photoview/photoview/api/scanner/face_detection"
)
func (r *queryResolver) SiteInfo(ctx context.Context) (*models.SiteInfo, error) {
return models.GetSiteInfo(r.Database)
}
type SiteInfoResolver struct {
*Resolver
}

View File

@@ -68,7 +68,7 @@ type Query {
"Get media owned by the logged in user, returned in GeoJson format"
myMediaGeoJson: Any! @isAuthorized
"Get the mapbox api token, returns null if mapbox is not enabled"
mapboxToken: String
mapboxToken: String @isAuthorized
shareToken(credentials: ShareTokenCredentials!): ShareToken!
shareTokenValidatePassword(credentials: ShareTokenCredentials!): Boolean!

View File

@@ -22,8 +22,8 @@ type FaceDetector struct {
var GlobalFaceDetector *FaceDetector = nil
func InitializeFaceDetector(db *gorm.DB) error {
if utils.EnvDisableRawProcessing.GetBool() {
log.Printf("Face detection disabled (%s=1)\n", utils.EnvDisableRawProcessing.GetName())
if utils.EnvDisableFaceRecognition.GetBool() {
log.Printf("Face detection disabled (%s=1)\n", utils.EnvDisableFaceRecognition.GetName())
return nil
}

View File

@@ -3,6 +3,7 @@ import { NavLink } from 'react-router-dom'
import { useQuery, gql } from '@apollo/client'
import { authToken } from '../../helpers/authentication'
import { useTranslation } from 'react-i18next'
import { mapboxEnabledQuery } from '../../__generated__/mapboxEnabledQuery'
export const MAPBOX_QUERY = gql`
query mapboxEnabledQuery {
@@ -10,6 +11,14 @@ export const MAPBOX_QUERY = gql`
}
`
export const FACE_DETECTION_ENABLED_QUERY = gql`
query faceDetectionEnabled {
siteInfo {
faceDetectionEnabled
}
}
`
type MenuButtonProps = {
to: string
exact: boolean
@@ -56,9 +65,16 @@ const MenuSeparator = () => (
export const MainMenu = () => {
const { t } = useTranslation()
const mapboxQuery = authToken() ? useQuery(MAPBOX_QUERY) : null
const mapboxQuery = authToken()
? useQuery<mapboxEnabledQuery>(MAPBOX_QUERY)
: null
const faceDetectionEnabledQuery = authToken()
? useQuery(FACE_DETECTION_ENABLED_QUERY)
: null
const mapboxEnabled = !!mapboxQuery?.data?.mapboxToken
const faceDetectionEnabled =
!!faceDetectionEnabledQuery?.data?.siteInfo?.faceDetectionEnabled
return (
<div className="fixed w-full bottom-0 lg:bottom-auto lg:top-[84px] z-30 bg-white shadow-separator lg:shadow-none lg:w-[240px] lg:ml-8 lg:mr-5 flex-shrink-0">
@@ -104,6 +120,7 @@ export const MainMenu = () => {
}
/>
) : null}
{faceDetectionEnabled ? (
<MenuButton
to="/people"
exact
@@ -117,6 +134,7 @@ export const MainMenu = () => {
</svg>
}
/>
) : null}
<MenuSeparator />
<MenuButton
to="/settings"

View File

@@ -330,18 +330,6 @@ const flashLookup = (t: TranslationFn): { [key: number]: string } => {
}
}
// From https://exiftool.org/TagNames/EXIF.html
// const orientation = {
// 1: 'Horizontal (normal)',
// 2: 'Mirror horizontal',
// 3: 'Rotate 180',
// 4: 'Mirror vertical',
// 5: 'Mirror horizontal and rotate 270 CW',
// 6: 'Rotate 90 CW',
// 7: 'Mirror horizontal and rotate 90 CW',
// 8: 'Rotate 270 CW',
// }
type SidebarContentProps = {
media: MediaSidebarMedia
hidePreview?: boolean

View File

@@ -107,7 +107,7 @@
}
},
"photos_page": {
"title": "Billeder"
"title": "Tidslinje"
},
"places_page": {
"title": "Kort"
@@ -285,13 +285,13 @@
"sidemenu": {
"albums": "Albums",
"people": "Personer",
"photos": "Billeder",
"photos": "Tidslinje",
"places": "Kort",
"settings": "Indstillinger"
},
"title": {
"loading_album": "Loader album",
"login": "Logind",
"login": "Log ind",
"people": "Personer",
"settings": "Indstillinger"
}

View File

@@ -107,7 +107,7 @@
}
},
"photos_page": {
"title": "Photos"
"title": "Timeline"
},
"places_page": {
"title": "Places"
@@ -285,7 +285,7 @@
"sidemenu": {
"albums": "Albums",
"people": "People",
"photos": "Photos",
"photos": "Timeline",
"places": "Places",
"settings": "Settings"
},