diff --git a/app/src/main/graphql/Configuration.graphql b/app/src/main/graphql/Configuration.graphql index 4fca37ba3..e15d40426 100644 --- a/app/src/main/graphql/Configuration.graphql +++ b/app/src/main/graphql/Configuration.graphql @@ -1,83 +1,83 @@ query Configuration { - configuration { - defaults{ - scan{ - scanGenerateClipPreviews - scanGenerateCovers - scanGenerateImagePreviews - scanGeneratePhashes - scanGeneratePreviews - scanGenerateSprites - scanGenerateThumbnails - } - generate{ - clipPreviews - covers - imagePreviews - interactiveHeatmapsSpeeds - markerImagePreviews - markers - markerScreenshots - phashes - previews - sprites - transcodes - imageThumbnails - } + configuration { + defaults{ + scan{ + scanGenerateClipPreviews + scanGenerateCovers + scanGenerateImagePreviews + scanGeneratePhashes + scanGeneratePreviews + scanGenerateSprites + scanGenerateThumbnails + } + generate{ + clipPreviews + covers + imagePreviews + interactiveHeatmapsSpeeds + markerImagePreviews + markers + markerScreenshots + phashes + previews + sprites + transcodes + imageThumbnails + } + } + interface { + menuItems + showStudioAsText + customLocalesEnabled + customLocales + sfwContentMode + } + ui } - interface { - menuItems - showStudioAsText - customLocalesEnabled - customLocales - sfwContentMode + version { + version + hash + build_time + } + plugins { + id + name + version } - ui - } - version { - version - hash - build_time - } - plugins { - id - name - version - } } query ConfigurationUI { - configuration { - ui - } + configuration { + ui + } } query Credentials { - configuration { - general { - apiKey + configuration { + general { + apiKey + } } - } } mutation GenerateApiKey{ - generateAPIKey(input: {clear: false}) + generateAPIKey(input: {clear: false}) } mutation MetadataScan($input: ScanMetadataInput!){ - metadataScan(input: $input) + metadataScan(input: $input) } mutation MetadataGenerate($input: GenerateMetadataInput!){ - metadataGenerate(input: $input) + metadataGenerate(input: $input) } mutation InstallPackages($type: PackageType!, $packages: [PackageSpecInput!]!) { - installPackages(type: $type, packages: $packages) + installPackages(type: $type, packages: $packages) } query FindJob($input: FindJobInput!) { - findJob(input: $input) { - ...StashJob - } + findJob(input: $input) { + ...StashJob + } } diff --git a/app/src/main/graphql/FindGalleries.graphql b/app/src/main/graphql/FindGalleries.graphql index 010f96a47..49f7ddba8 100644 --- a/app/src/main/graphql/FindGalleries.graphql +++ b/app/src/main/graphql/FindGalleries.graphql @@ -1,80 +1,80 @@ query FindGalleries($filter: FindFilterType, $gallery_filter: GalleryFilterType, $ids: [ID!]) { - findGalleries(filter: $filter, gallery_filter: $gallery_filter, ids: $ids) { - galleries { - ...GalleryData + findGalleries(filter: $filter, gallery_filter: $gallery_filter, ids: $ids) { + galleries { + ...GalleryData + } } - } } query GetGallery($id: ID!) { - findGallery(id: $id) { - ...GalleryData - } + findGallery(id: $id) { + ...GalleryData + } } query CountGalleries($filter: FindFilterType, $gallery_filter: GalleryFilterType) { - findGalleries(filter: $filter, gallery_filter: $gallery_filter) { - count - } + findGalleries(filter: $filter, gallery_filter: $gallery_filter) { + count + } } query FindGalleryPerformers($id: ID!) { - findGallery(id: $id) { - id - performers { - ...PerformerData + findGallery(id: $id) { + id + performers { + ...PerformerData + } } - } } query FindGalleryTags($id: ID!) { - findGallery(id: $id) { - id - tags { - ...TagData + findGallery(id: $id) { + id + tags { + ...TagData + } } - } } fragment GalleryData on Gallery { - id - title - image_count - date - details - rating100 - code - photographer - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - files { - path - } - folder { - path - } - performers { - ...SlimPerformerData - } - tags { - ...SlimTagData - } - studio { - id - name - image_path - } - scenes { id - } - paths { - cover - preview - } + title + image_count + date + details + rating100 + code + photographer + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + files { + path + } + folder { + path + } + performers { + ...SlimPerformerData + } + tags { + ...SlimTagData + } + studio { + id + name + image_path + } + scenes { + id + } + paths { + cover + preview + } } mutation UpdateGallery($input: GalleryUpdateInput!) { - galleryUpdate(input: $input) { - ...GalleryData - } + galleryUpdate(input: $input) { + ...GalleryData + } } diff --git a/app/src/main/graphql/FindGroups.graphql b/app/src/main/graphql/FindGroups.graphql index 601a65907..df4e0e6f6 100644 --- a/app/src/main/graphql/FindGroups.graphql +++ b/app/src/main/graphql/FindGroups.graphql @@ -1,105 +1,106 @@ query FindGroups($filter: FindFilterType, $group_filter: GroupFilterType, $ids: [ID!]) { - findGroups(filter: $filter, group_filter: $group_filter, ids: $ids){ - groups { - ...GroupData + findGroups(filter: $filter, group_filter: $group_filter, ids: $ids){ + groups { + ...GroupData + } } - } } query CountGroups($filter: FindFilterType, $group_filter: GroupFilterType, $ids: [ID!]) { - findGroups(filter: $filter, group_filter: $group_filter, ids: $ids) { - count - } + findGroups(filter: $filter, group_filter: $group_filter, ids: $ids) { + count + } } query FindGroup($id: ID!) { - findGroup(id: $id) { - ...GroupData - } + findGroup(id: $id) { + ...GroupData + } } query FindGroupTags($id: ID!) { findGroup(id: $id) { - id - tags { - ...TagData + id + tags { + ...TagData + } } - } } query CountGroupRelationships($filter: FindFilterType, $group_filter: GroupFilterType, $ids: [ID!]) { - findGroups(filter: $filter, group_filter: $group_filter, ids: $ids) { - groups { - id - sub_group_count - containing_groups { - group { - id + findGroups(filter: $filter, group_filter: $group_filter, ids: $ids) { + groups { + id + sub_group_count + containing_groups { + group { + id + } + } } - } } - } } query FindGroupRelationships($filter: FindFilterType, $group_filter: GroupFilterType, $ids: [ID!]) { - findGroups(filter: $filter, group_filter: $group_filter, ids: $ids) { - groups { - ...GroupData - sub_groups { - ...GroupDescriptionData - } - containing_groups { - ...GroupDescriptionData - } + findGroups(filter: $filter, group_filter: $group_filter, ids: $ids) { + groups { + ...GroupData + sub_groups { + ...GroupDescriptionData + } + containing_groups { + ...GroupDescriptionData + } + } } - } } + fragment GroupDescriptionData on GroupDescription { - description - group { - ...GroupData - } + description + group { + ...GroupData + } } fragment GroupData on Group { - id - name - aliases - date - duration - rating100 - synopsis - director - studio { id name - } - tags { - ...SlimTagData - __typename - } - sub_group_count - containing_groups { - description - } - scene_count - performer_count - o_counter - front_image_path - back_image_path - created_at @catch(to: NULL) - updated_at @catch(to: NULL) + aliases + date + duration + rating100 + synopsis + director + studio { + id + name + } + tags { + ...SlimTagData + __typename + } + sub_group_count + containing_groups { + description + } + scene_count + performer_count + o_counter + front_image_path + back_image_path + created_at @catch(to: NULL) + updated_at @catch(to: NULL) } mutation CreateGroup($input: GroupCreateInput!) { - groupCreate(input: $input) { - ...GroupData - } + groupCreate(input: $input) { + ...GroupData + } } mutation UpdateGroup($input: GroupUpdateInput!) { - groupUpdate(input: $input) { - ...GroupData - } + groupUpdate(input: $input) { + ...GroupData + } } diff --git a/app/src/main/graphql/FindImages.graphql b/app/src/main/graphql/FindImages.graphql index d1a58cb81..1ba9e3311 100644 --- a/app/src/main/graphql/FindImages.graphql +++ b/app/src/main/graphql/FindImages.graphql @@ -1,112 +1,112 @@ query FindImages($filter: FindFilterType, $image_filter: ImageFilterType, $ids: [ID!]) { - findImages(filter: $filter, image_filter: $image_filter, ids: $ids) { - images { - ...ImageData + findImages(filter: $filter, image_filter: $image_filter, ids: $ids) { + images { + ...ImageData + } } - } } query FindSlimImages($filter: FindFilterType, $image_filter: ImageFilterType, $ids: [ID!]) { - findImages(filter: $filter, image_filter: $image_filter, ids: $ids) { - images { - ...SlimImageData + findImages(filter: $filter, image_filter: $image_filter, ids: $ids) { + images { + ...SlimImageData + } } - } } query CountImages($filter: FindFilterType, $image_filter: ImageFilterType) { - findImages(filter: $filter, image_filter: $image_filter) { - count - } + findImages(filter: $filter, image_filter: $image_filter) { + count + } } query FindImage($id: ID) { - findImage(id: $id) { - ...ImageData - } + findImage(id: $id) { + ...ImageData + } } query GetExtraImage($id: ID) { - findImage(id: $id) { - ...ExtraImageData - } + findImage(id: $id) { + ...ExtraImageData + } } fragment ImageData on Image { - id - title - code - rating100 - date - details - photographer - o_counter - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - paths { - thumbnail - preview - image - } - performers{ - id - name - } - studio { - id - name - } - tags { id - name - } - galleries { - id - } - visual_files { - ... on BaseFile{ - id - path - size - __typename - } - ... on ImageFile { - width - height - + title + code + rating100 + date + details + photographer + o_counter + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + paths { + thumbnail + preview + image + } + performers{ + id + name + } + studio { + id + name + } + tags { + id + name } - ... on VideoFile{ - width - height - format - video_codec - audio_codec - duration + galleries { + id + } + visual_files { + ... on BaseFile{ + id + path + size + __typename + } + ... on ImageFile { + width + height + + } + ... on VideoFile{ + width + height + format + video_codec + audio_codec + duration + } } - } } fragment ExtraImageData on Image { - id - performers{ - ...PerformerData - } - tags { - ...TagData - } - galleries { - ...GalleryData - } - studio { - ...StudioData - } + id + performers{ + ...PerformerData + } + tags { + ...TagData + } + galleries { + ...GalleryData + } + studio { + ...StudioData + } } fragment SlimImageData on Image { - id - paths { - thumbnail - preview - image - } + id + paths { + thumbnail + preview + image + } } diff --git a/app/src/main/graphql/FindPerformers.graphql b/app/src/main/graphql/FindPerformers.graphql index 1c1ef6fec..e3e8868c0 100644 --- a/app/src/main/graphql/FindPerformers.graphql +++ b/app/src/main/graphql/FindPerformers.graphql @@ -1,104 +1,105 @@ query FindPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType, $ids: [ID!]) { - findPerformers( - filter: $filter - performer_filter: $performer_filter - ids: $ids - ) { - performers { - ...PerformerData + findPerformers( + filter: $filter + performer_filter: $performer_filter + ids: $ids + ) { + performers { + ...PerformerData + } } - } } query GetPerformer($id: ID!) { - findPerformer(id: $id) { - ...PerformerData - } + findPerformer(id: $id) { + ...PerformerData + } } query CountPerformers($filter: FindFilterType, $performer_filter: PerformerFilterType, $ids: [ID!]) { - findPerformers( - filter: $filter - performer_filter: $performer_filter - ids: $ids - ) { - count - } + findPerformers( + filter: $filter + performer_filter: $performer_filter + ids: $ids + ) { + count + } } query FindPerformerTags($filter: FindFilterType, $performer_filter: PerformerFilterType, $ids: [ID!]) { - findPerformers( - filter: $filter - performer_filter: $performer_filter - ids: $ids - ) { - performers { - id - tags { - ...TagData - } + findPerformers( + filter: $filter + performer_filter: $performer_filter + ids: $ids + ) { + performers { + id + tags { + ...TagData + } + } } - } } mutation UpdatePerformer($input: PerformerUpdateInput!) { - performerUpdate(input: $input) { - ...PerformerData - } + performerUpdate(input: $input) { + ...PerformerData + } } mutation CreatePerformer($input: PerformerCreateInput!){ - performerCreate(input: $input){ - ...PerformerData - } + performerCreate(input: $input){ + ...PerformerData + } } fragment PerformerData on Performer { - id - name - disambiguation - gender - birthdate - ethnicity - country - eye_color - height_cm - measurements - fake_tits - penis_length - circumcised - career_length - tattoos - piercings - alias_list - favorite - image_path - scene_count - image_count - gallery_count - group_count - o_counter - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - tags { - ...SlimTagData + id + name + disambiguation + gender + birthdate + ethnicity + country + eye_color + height_cm + measurements + fake_tits + penis_length + circumcised + career_start + career_end + tattoos + piercings + alias_list + favorite + image_path + scene_count + image_count + gallery_count + group_count + o_counter + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + tags { + ...SlimTagData + __typename + } + rating100 + details + death_date + hair_color + weight + custom_fields __typename - } - rating100 - details - death_date - hair_color - weight - custom_fields - __typename } fragment SlimPerformerData on Performer { - id - name - disambiguation - gender - birthdate - death_date - __typename + id + name + disambiguation + gender + birthdate + death_date + __typename } diff --git a/app/src/main/graphql/FindSavedFilter.graphql b/app/src/main/graphql/FindSavedFilter.graphql index 3aa1177e2..d15e73c5c 100644 --- a/app/src/main/graphql/FindSavedFilter.graphql +++ b/app/src/main/graphql/FindSavedFilter.graphql @@ -1,36 +1,36 @@ query FindSavedFilter($id: ID!) { - findSavedFilter(id: $id) { - ...SavedFilter - __typename - } + findSavedFilter(id: $id) { + ...SavedFilter + __typename + } } query FindSavedFilters($mode: FilterMode!) { - findSavedFilters(mode: $mode) { - ...SavedFilter - __typename - } + findSavedFilters(mode: $mode) { + ...SavedFilter + __typename + } } fragment SavedFilter on SavedFilter { - id - mode - name - find_filter { - q - page - per_page - sort - direction + id + mode + name + find_filter { + q + page + per_page + sort + direction + __typename + } + object_filter + ui_options __typename - } - object_filter - ui_options - __typename } mutation SaveFilter($input: SaveFilterInput!) { - saveFilter(input: $input) { - ...SavedFilter - } + saveFilter(input: $input) { + ...SavedFilter + } } diff --git a/app/src/main/graphql/FindSceneMarkers.graphql b/app/src/main/graphql/FindSceneMarkers.graphql index ca1c2b833..fa3043903 100644 --- a/app/src/main/graphql/FindSceneMarkers.graphql +++ b/app/src/main/graphql/FindSceneMarkers.graphql @@ -1,123 +1,123 @@ query FindMarkers($filter: FindFilterType, $scene_marker_filter: SceneMarkerFilterType, $ids: [ID!]) { - findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter, ids: $ids) { - scene_markers { - ...MarkerData + findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter, ids: $ids) { + scene_markers { + ...MarkerData + } + __typename } - __typename - } } query CountMarkers($filter: FindFilterType, $scene_marker_filter: SceneMarkerFilterType) { - findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter) { - count - } + findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter) { + count + } } query GetMarker($ids: [ID!]) { - findSceneMarkers(ids: $ids) { - scene_markers { - ...FullMarkerData + findSceneMarkers(ids: $ids) { + scene_markers { + ...FullMarkerData + } + __typename } - __typename - } } query FindFullMarkers($filter: FindFilterType, $scene_marker_filter: SceneMarkerFilterType, $ids: [ID!]) { - findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter, ids: $ids) { - scene_markers { - ...FullMarkerData + findSceneMarkers(filter: $filter, scene_marker_filter: $scene_marker_filter, ids: $ids) { + scene_markers { + ...FullMarkerData + } + __typename } - __typename - } } mutation UpdateMarker($input: SceneMarkerUpdateInput!){ - sceneMarkerUpdate(input: $input){ - ...FullMarkerData - } + sceneMarkerUpdate(input: $input){ + ...FullMarkerData + } } fragment MinimalSceneData on Scene { - id - title - urls - date - rating100 - o_counter - files { - ...VideoFile - } + id + title + urls + date + rating100 + o_counter + files { + ...VideoFile + } } fragment VideoSceneData on Scene { - id - title - urls - date - resume_time - rating100 - o_counter - files { - ...VideoFile - } - paths { - caption - screenshot - preview - stream - sprite - vtt - } - sceneStreams { - url - mime_type - label - } - captions { - ...Caption - } + id + title + urls + date + resume_time + rating100 + o_counter + files { + ...VideoFile + } + paths { + caption + screenshot + preview + stream + sprite + vtt + } + sceneStreams { + url + mime_type + label + } + captions { + ...Caption + } } fragment MarkerData on SceneMarker { - id - title - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - stream - screenshot - seconds - end_seconds - preview - primary_tag { - ...SlimTagData + id + title + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + stream + screenshot + seconds + end_seconds + preview + primary_tag { + ...SlimTagData + __typename + } + tags { + ...SlimTagData + } + scene { + ...MinimalSceneData + } __typename - } - tags { - ...SlimTagData - } - scene { - ...MinimalSceneData - } - __typename } fragment FullMarkerData on SceneMarker { - id - title - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - stream - screenshot - seconds - end_seconds - preview - primary_tag { - ...TagData - } - tags { - ...TagData - } - scene { - ...VideoSceneData - } + id + title + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + stream + screenshot + seconds + end_seconds + preview + primary_tag { + ...TagData + } + tags { + ...TagData + } + scene { + ...VideoSceneData + } } diff --git a/app/src/main/graphql/FindScenes.graphql b/app/src/main/graphql/FindScenes.graphql index 1748c4e93..4d3e86b71 100644 --- a/app/src/main/graphql/FindScenes.graphql +++ b/app/src/main/graphql/FindScenes.graphql @@ -1,214 +1,214 @@ query FindScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $ids: [ID!]) { - findScenes(filter: $filter, scene_filter: $scene_filter, ids: $ids) { - scenes { - ...SlimSceneData + findScenes(filter: $filter, scene_filter: $scene_filter, ids: $ids) { + scenes { + ...SlimSceneData + } } - } } query GetScene($id: ID!) { - findScene(id: $id) { - ...FullSceneData - } + findScene(id: $id) { + ...FullSceneData + } } query FindVideoScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $ids: [ID!]) { - findScenes(filter: $filter, scene_filter: $scene_filter, ids: $ids) { - scenes { - ...VideoSceneData + findScenes(filter: $filter, scene_filter: $scene_filter, ids: $ids) { + scenes { + ...VideoSceneData + } } - } } query GetVideoScene($id: ID!) { - findScene(id: $id) { - ...VideoSceneData - } + findScene(id: $id) { + ...VideoSceneData + } } query CountScenes($filter: FindFilterType, $scene_filter: SceneFilterType, $ids: [ID!]) { - findScenes(filter: $filter, scene_filter: $scene_filter, ids: $ids) { - count - } + findScenes(filter: $filter, scene_filter: $scene_filter, ids: $ids) { + count + } } fragment SlimSceneData on Scene { - id - title - code - details - director - urls - date - rating100 - play_count - play_duration - o_counter - organized - resume_time - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - files { - ...VideoFile - } - paths { - screenshot - preview - stream - sprite - caption - } - scene_markers { id title - } - galleries { - id - title - } - studio { - id - name - image_path - } - groups { - scene_index - group { - id - name - } - } - tags { - ...SlimTagData - } - performers { - id - name - } - scene_markers { - id - title - } + code + details + director + urls + date + rating100 + play_count + play_duration + o_counter + organized + resume_time + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + files { + ...VideoFile + } + paths { + screenshot + preview + stream + sprite + caption + } + scene_markers { + id + title + } + galleries { + id + title + } + studio { + id + name + image_path + } + groups { + scene_index + group { + id + name + } + } + tags { + ...SlimTagData + } + performers { + id + name + } + scene_markers { + id + title + } } fragment FullSceneData on Scene { - id - title - code - details - director - urls - date - rating100 - o_counter - organized - resume_time - play_duration - play_count - created_at @catch(to: NULL) - updated_at @catch(to: NULL) - files { - ...VideoFile - __typename - } - paths { - screenshot - preview - stream - webp - vtt - sprite - funscript - interactive_heatmap - caption - __typename - } - sceneStreams { - url - mime_type - label - } - captions { - ...Caption - } - scene_markers { id title - seconds - end_seconds + code + details + director + urls + date + rating100 + o_counter + organized + resume_time + play_duration + play_count created_at @catch(to: NULL) updated_at @catch(to: NULL) - stream - preview - primary_tag { - ...TagData + files { + ...VideoFile + __typename } - tags { - ...TagData + paths { + screenshot + preview + stream + webp + vtt + sprite + funscript + interactive_heatmap + caption + __typename } - __typename - } - galleries { - id - title - } - studio { - ...StudioData - __typename - } - groups { - group { - ...GroupData - __typename + sceneStreams { + url + mime_type + label } - scene_index - __typename - } - tags { - ...TagData - __typename - } - performers { - id - name - gender - favorite - image_path - __typename - } - scene_markers { - id - title - primary_tag { - ...TagData + captions { + ...Caption + } + scene_markers { + id + title + seconds + end_seconds + created_at @catch(to: NULL) + updated_at @catch(to: NULL) + stream + preview + primary_tag { + ...TagData + } + tags { + ...TagData + } + __typename + } + galleries { + id + title + } + studio { + ...StudioData + __typename + } + groups { + group { + ...GroupData + __typename + } + scene_index + __typename } tags { - ...TagData + ...TagData + __typename + } + performers { + id + name + gender + favorite + image_path + __typename + } + scene_markers { + id + title + primary_tag { + ...TagData + } + tags { + ...TagData + } + screenshot + seconds + __typename } - screenshot - seconds __typename - } - __typename } fragment VideoFile on VideoFile { - id - path - size - mod_time - duration - video_codec - audio_codec - format - width - height - frame_rate - bit_rate - __typename + id + path + size + mod_time + duration + video_codec + audio_codec + format + width + height + frame_rate + bit_rate + __typename } fragment Caption on VideoCaption { - caption_type - language_code + caption_type + language_code } diff --git a/app/src/main/graphql/FindStudios.graphql b/app/src/main/graphql/FindStudios.graphql index c73db2b6e..549f2d6e2 100644 --- a/app/src/main/graphql/FindStudios.graphql +++ b/app/src/main/graphql/FindStudios.graphql @@ -1,85 +1,85 @@ query FindStudios($filter: FindFilterType, $studio_filter: StudioFilterType, $ids: [ID!]) { - findStudios(filter: $filter, studio_filter: $studio_filter, ids: $ids) { - studios { - ...StudioData - __typename + findStudios(filter: $filter, studio_filter: $studio_filter, ids: $ids) { + studios { + ...StudioData + __typename + } + __typename } - __typename - } } query GetStudio($id: ID!) { - findStudio(id: $id) { - ...StudioData - } + findStudio(id: $id) { + ...StudioData + } } query CountStudios($filter: FindFilterType, $studio_filter: StudioFilterType) { - findStudios(filter: $filter, studio_filter: $studio_filter) { - count - } + findStudios(filter: $filter, studio_filter: $studio_filter) { + count + } } query FindStudioTags($id: ID!) { - findStudio(id: $id) { - id - tags { - ...TagData + findStudio(id: $id) { + id + tags { + ...TagData + } } - } } fragment StudioData on Studio { - id - name - url - parent_studio { id name url + parent_studio { + id + name + url + image_path + __typename + } + child_studios { + id + name + image_path + __typename + } + tags { + ...SlimTagData + __typename + } + ignore_auto_tag image_path + scene_count + # scene_count_all: scene_count(depth: -1) + image_count + # image_count_all: image_count(depth: -1) + gallery_count + # gallery_count_all: gallery_count(depth: -1) + performer_count + # performer_count_all: performer_count(depth: -1) + group_count + # group_count_all: group_count(depth: -1) + o_counter + details + rating100 + aliases + favorite __typename - } - child_studios { - id - name - image_path - __typename - } - tags { - ...SlimTagData - __typename - } - ignore_auto_tag - image_path - scene_count - # scene_count_all: scene_count(depth: -1) - image_count - # image_count_all: image_count(depth: -1) - gallery_count - # gallery_count_all: gallery_count(depth: -1) - performer_count - # performer_count_all: performer_count(depth: -1) - group_count - # group_count_all: group_count(depth: -1) - o_counter - details - rating100 - aliases - favorite - __typename - created_at @catch(to: NULL) - updated_at @catch(to: NULL) + created_at @catch(to: NULL) + updated_at @catch(to: NULL) } mutation UpdateStudio($input: StudioUpdateInput!){ - studioUpdate(input: $input){ - ...StudioData - } + studioUpdate(input: $input){ + ...StudioData + } } mutation CreateStudio($input: StudioCreateInput!){ - studioCreate(input: $input){ - ...StudioData - } + studioCreate(input: $input){ + ...StudioData + } } diff --git a/app/src/main/graphql/FindTags.graphql b/app/src/main/graphql/FindTags.graphql index a9812d1e9..95b532431 100644 --- a/app/src/main/graphql/FindTags.graphql +++ b/app/src/main/graphql/FindTags.graphql @@ -1,32 +1,32 @@ query FindTags($filter: FindFilterType, $tag_filter: TagFilterType, $ids: [ID!]) { - findTags(filter: $filter, tag_filter: $tag_filter, ids: $ids){ - tags { - ...TagData - __typename + findTags(filter: $filter, tag_filter: $tag_filter, ids: $ids){ + tags { + ...TagData + __typename + } } - } } query GetTag($id: ID!) { - findTag(id: $id) { - ...TagData - } + findTag(id: $id) { + ...TagData + } } query CountTags($filter: FindFilterType, $tag_filter: TagFilterType) { - findTags(filter: $filter, tag_filter: $tag_filter){ - count - } + findTags(filter: $filter, tag_filter: $tag_filter){ + count + } } mutation CreateTag($input: TagCreateInput!) { - tagCreate(input: $input) { - ...TagData - } + tagCreate(input: $input) { + ...TagData + } } mutation UpdateTag($input: TagUpdateInput!){ - tagUpdate(input: $input){ - ...TagData - } + tagUpdate(input: $input){ + ...TagData + } } diff --git a/app/src/main/graphql/Fragments.graphql b/app/src/main/graphql/Fragments.graphql index a4fd60dd2..79ee32633 100644 --- a/app/src/main/graphql/Fragments.graphql +++ b/app/src/main/graphql/Fragments.graphql @@ -1,34 +1,34 @@ fragment SlimTagData on Tag { - id - name + id + name } fragment TagData on Tag { - id - name - description - sort_name - favorite - aliases - scene_count - performer_count - scene_marker_count - image_path - image_count - gallery_count - parent_count - child_count - created_at @catch(to: NULL) - updated_at @catch(to: NULL) + id + name + description + sort_name + favorite + aliases + scene_count + performer_count + scene_marker_count + image_path + image_count + gallery_count + parent_count + child_count + created_at @catch(to: NULL) + updated_at @catch(to: NULL) } fragment StashJob on Job { - id - status - progress - description - subTasks - addTime - endTime - error + id + status + progress + description + subTasks + addTime + endTime + error } diff --git a/app/src/main/graphql/ImageUpdate.graphql b/app/src/main/graphql/ImageUpdate.graphql index dad07fcd7..317e48ca7 100644 --- a/app/src/main/graphql/ImageUpdate.graphql +++ b/app/src/main/graphql/ImageUpdate.graphql @@ -1,30 +1,30 @@ mutation UpdateImage($input: ImageUpdateInput!) { - imageUpdate(input: $input) { - id - studio { - ...StudioData + imageUpdate(input: $input) { + id + studio { + ...StudioData + } + tags { + ...TagData + } + performers { + ...PerformerData + } + galleries { + ...GalleryData + } + rating100 } - tags { - ...TagData - } - performers { - ...PerformerData - } - galleries { - ...GalleryData - } - rating100 - } } mutation ImageIncrementO($id: ID!) { - imageIncrementO(id: $id) + imageIncrementO(id: $id) } mutation ImageDecrementO($id: ID!) { - imageDecrementO(id: $id) + imageDecrementO(id: $id) } mutation ImageResetO($id: ID!) { - imageResetO(id: $id) + imageResetO(id: $id) } diff --git a/app/src/main/graphql/RunPluginTask.graphql b/app/src/main/graphql/RunPluginTask.graphql index eea3cb89c..a5a93978c 100644 --- a/app/src/main/graphql/RunPluginTask.graphql +++ b/app/src/main/graphql/RunPluginTask.graphql @@ -1,3 +1,3 @@ mutation RunPluginTask($plugin_id: ID!, $task_name: String!, $args_map: Map) { - runPluginTask(plugin_id: $plugin_id, task_name: $task_name, args_map: $args_map) + runPluginTask(plugin_id: $plugin_id, task_name: $task_name, args_map: $args_map) } diff --git a/app/src/main/graphql/SaveSceneActivity.graphql b/app/src/main/graphql/SaveSceneActivity.graphql index aba399db9..cfbf5933f 100644 --- a/app/src/main/graphql/SaveSceneActivity.graphql +++ b/app/src/main/graphql/SaveSceneActivity.graphql @@ -1,28 +1,28 @@ mutation SceneSaveActivity($scene_id: ID!, $resume_time: Float!, $play_duration: Float) { - sceneSaveActivity(id: $scene_id, resume_time: $resume_time, playDuration: $play_duration) + sceneSaveActivity(id: $scene_id, resume_time: $resume_time, playDuration: $play_duration) } mutation SceneResetO($scene_id: ID!) { - sceneResetO(id: $scene_id) + sceneResetO(id: $scene_id) } mutation SceneAddO($scene_id: ID!, $times: [Timestamp!]) { - sceneAddO(id: $scene_id, times: $times) { - count - history - } + sceneAddO(id: $scene_id, times: $times) { + count + history + } } mutation SceneDeleteO($scene_id: ID!, $times: [Timestamp!]) { - sceneDeleteO(id: $scene_id, times: $times) { - count - history - } + sceneDeleteO(id: $scene_id, times: $times) { + count + history + } } mutation SceneAddPlayCount($scene_id: ID!, $times: [Timestamp!]) { - sceneAddPlay(id: $scene_id, times: $times) { - count - history - } + sceneAddPlay(id: $scene_id, times: $times) { + count + history + } } diff --git a/app/src/main/graphql/SceneUpdate.graphql b/app/src/main/graphql/SceneUpdate.graphql index 88a651c64..08853c489 100644 --- a/app/src/main/graphql/SceneUpdate.graphql +++ b/app/src/main/graphql/SceneUpdate.graphql @@ -1,38 +1,38 @@ mutation SceneUpdate($input: SceneUpdateInput!) { - sceneUpdate(input: $input) { - id - tags { - ...TagData + sceneUpdate(input: $input) { + id + tags { + ...TagData + } + performers { + ...PerformerData + } + studio { + ...StudioData + } + groups { + scene_index + group{ + ...GroupData + } + } + galleries { + ...GalleryData + } + rating100 } - performers { - ...PerformerData - } - studio { - ...StudioData - } - groups { - scene_index - group{ - ...GroupData - } - } - galleries { - ...GalleryData - } - rating100 - } } mutation CreateMarker($input: SceneMarkerCreateInput!) { - sceneMarkerCreate(input: $input) { - ...FullMarkerData - } + sceneMarkerCreate(input: $input) { + ...FullMarkerData + } } mutation DeleteMarker($id: ID!) { - sceneMarkerDestroy(id: $id) + sceneMarkerDestroy(id: $id) } mutation DeleteScene($input: SceneDestroyInput!) { - sceneDestroy(input: $input) + sceneDestroy(input: $input) } diff --git a/app/src/main/graphql/ServerInfo.graphql b/app/src/main/graphql/ServerInfo.graphql index 7acfa4fed..c1c0b6779 100644 --- a/app/src/main/graphql/ServerInfo.graphql +++ b/app/src/main/graphql/ServerInfo.graphql @@ -1,20 +1,20 @@ query ServerInfo { - version { - version - } - findScenes { - count - } + version { + version + } + findScenes { + count + } } query Statistics { - stats { - total_o_count - total_play_duration - total_play_count - scene_count - scenes_size - image_count - images_size - } + stats { + total_o_count + total_play_duration + total_play_count + scene_count + scenes_size + image_count + images_size + } } diff --git a/app/src/main/graphql/SystemStatus.graphql b/app/src/main/graphql/SystemStatus.graphql index 8af21b976..db7514abf 100644 --- a/app/src/main/graphql/SystemStatus.graphql +++ b/app/src/main/graphql/SystemStatus.graphql @@ -1,11 +1,11 @@ query SystemStatus { - systemStatus { - status - } + systemStatus { + status + } } query JobQueue { - jobQueue { - ...StashJob - } + jobQueue { + ...StashJob + } } diff --git a/app/src/main/graphql/client_schema.graphqls b/app/src/main/graphql/client_schema.graphqls index 8b1fdfde1..f0df2311e 100644 --- a/app/src/main/graphql/client_schema.graphqls +++ b/app/src/main/graphql/client_schema.graphqls @@ -1,6 +1,6 @@ extend schema @link( - url: "https://specs.apollo.dev/nullability/v0.4", - import: ["@semanticNonNull", "@semanticNonNullField", "@catch", "CatchTo", "@catchByDefault"] + url: "https://specs.apollo.dev/nullability/v0.4", + import: ["@semanticNonNull", "@semanticNonNullField", "@catch", "CatchTo", "@catchByDefault"] ) extend schema @catchByDefault(to: NULL) diff --git a/app/src/main/java/com/github/damontecres/stashapp/PerformerDetailsFragment.kt b/app/src/main/java/com/github/damontecres/stashapp/PerformerDetailsFragment.kt index 58fa9f9c6..977d152b1 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/PerformerDetailsFragment.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/PerformerDetailsFragment.kt @@ -8,7 +8,7 @@ import androidx.fragment.app.viewModels import androidx.lifecycle.lifecycleScope import androidx.preference.PreferenceManager import com.github.damontecres.stashapp.api.fragment.PerformerData -import com.github.damontecres.stashapp.api.type.CircumisedEnum +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.presenters.StashPresenter import com.github.damontecres.stashapp.util.StashCoroutineExceptionHandler import com.github.damontecres.stashapp.util.StashGlide @@ -111,15 +111,18 @@ class PerformerDetailsFragment : DetailsFragment() { } val circString = when (perf.circumcised) { - CircumisedEnum.CUT -> getString(R.string.stashapp_circumcised_types_CUT) - CircumisedEnum.UNCUT -> getString(R.string.stashapp_circumcised_types_UNCUT) - CircumisedEnum.UNKNOWN__, null -> null + CircumcisedEnum.CUT -> getString(R.string.stashapp_circumcised_types_CUT) + CircumcisedEnum.UNCUT -> getString(R.string.stashapp_circumcised_types_UNCUT) + CircumcisedEnum.UNKNOWN__, null -> null } addRow(R.string.stashapp_circumcised, circString) addRow(R.string.stashapp_tattoos, perf.tattoos) addRow(R.string.stashapp_piercings, perf.piercings) - addRow(R.string.stashapp_career_length, perf.career_length) + addRow( + R.string.stashapp_career_length, + listOf(perf.career_start, perf.career_end).joinToString(" - "), + ) addRow(R.string.stashapp_created_at, parseTimeToString(perf.created_at)) addRow(R.string.stashapp_updated_at, parseTimeToString(perf.updated_at)) diff --git a/app/src/main/java/com/github/damontecres/stashapp/filter/DescriptionExtractors.kt b/app/src/main/java/com/github/damontecres/stashapp/filter/DescriptionExtractors.kt index b80d91395..a2b9c4cc8 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/filter/DescriptionExtractors.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/filter/DescriptionExtractors.kt @@ -14,10 +14,11 @@ import com.github.damontecres.stashapp.api.fragment.SlimSceneData import com.github.damontecres.stashapp.api.fragment.StashData import com.github.damontecres.stashapp.api.fragment.StudioData import com.github.damontecres.stashapp.api.fragment.TagData +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput -import com.github.damontecres.stashapp.api.type.CircumisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.DateCriterionInput +import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput import com.github.damontecres.stashapp.api.type.FloatCriterionInput import com.github.damontecres.stashapp.api.type.GenderCriterionInput import com.github.damontecres.stashapp.api.type.GenderEnum @@ -26,7 +27,6 @@ import com.github.damontecres.stashapp.api.type.IntCriterionInput import com.github.damontecres.stashapp.api.type.MultiCriterionInput import com.github.damontecres.stashapp.api.type.OrientationCriterionInput import com.github.damontecres.stashapp.api.type.OrientationEnum -import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionEnum @@ -368,7 +368,8 @@ fun filterSummary(f: PhashDistanceCriterionInput): String { } } -fun filterSummary(f: PHashDuplicationCriterionInput): String { +fun filterSummary(f: DuplicationCriterionInput): String { + // TODO update to new fields val duplicated = f.duplicated.getOrNull() val distance = f.distance.getOrNull() return if (distance != null) { @@ -429,9 +430,9 @@ fun filterSummary(f: CircumcisionCriterionInput): String { val strings = f.value.getOrNull().orEmpty().map { when (it) { - CircumisedEnum.CUT -> context.getString(R.string.stashapp_circumcised_types_CUT) - CircumisedEnum.UNCUT -> context.getString(R.string.stashapp_circumcised_types_UNCUT) - CircumisedEnum.UNKNOWN__ -> "Unknown" + CircumcisedEnum.CUT -> context.getString(R.string.stashapp_circumcised_types_CUT) + CircumcisedEnum.UNCUT -> context.getString(R.string.stashapp_circumcised_types_UNCUT) + CircumcisedEnum.UNKNOWN__ -> "Unknown" } } return when (f.modifier) { @@ -553,7 +554,7 @@ fun filterSummary( filterSummary(value) } - is PHashDuplicationCriterionInput -> { + is DuplicationCriterionInput -> { filterSummary(value) } diff --git a/app/src/main/java/com/github/damontecres/stashapp/filter/FilterOption.kt b/app/src/main/java/com/github/damontecres/stashapp/filter/FilterOption.kt index df6fd7fe2..0f26fba4b 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/filter/FilterOption.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/filter/FilterOption.kt @@ -347,6 +347,24 @@ private val PerformerFilterOptions = { filter, value -> filter.copy(birthdate = value) }, TwoValueCriterionModifiers, ), + FilterOption( + "career_start", + R.string.stashapp_career_start, + null, + DateCriterionInput::class, + { filter -> filter.career_start }, + { filter, value -> filter.copy(career_start = value) }, + TwoValueCriterionModifiers, + ), + FilterOption( + "career_end", + R.string.stashapp_career_end, + null, + DateCriterionInput::class, + { filter -> filter.career_end }, + { filter, value -> filter.copy(career_end = value) }, + TwoValueCriterionModifiers, + ), FilterOption( "country", R.string.stashapp_country, @@ -1253,6 +1271,15 @@ private val GroupFilterOptions = { filter, value -> filter.copy(rating100 = value) }, TwoValueCriterionModifiers, ), + FilterOption( + "scene_count", + R.string.stashapp_scene_count, + null, + IntCriterionInput::class, + { it.scene_count }, + { filter, value -> filter.copy(scene_count = value) }, + TwoValueCriterionModifiers, + ), FilterOption( "studios", R.string.stashapp_studios, diff --git a/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterOutputs.kt b/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterOutputs.kt index 802ace0dd..1a264116b 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterOutputs.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterOutputs.kt @@ -1,10 +1,11 @@ package com.github.damontecres.stashapp.filter.output +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput -import com.github.damontecres.stashapp.api.type.CircumisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.CustomFieldCriterionInput import com.github.damontecres.stashapp.api.type.DateCriterionInput +import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput import com.github.damontecres.stashapp.api.type.FloatCriterionInput import com.github.damontecres.stashapp.api.type.GenderCriterionInput import com.github.damontecres.stashapp.api.type.GenderEnum @@ -13,11 +14,11 @@ import com.github.damontecres.stashapp.api.type.IntCriterionInput import com.github.damontecres.stashapp.api.type.MultiCriterionInput import com.github.damontecres.stashapp.api.type.OrientationCriterionInput import com.github.damontecres.stashapp.api.type.OrientationEnum -import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionEnum import com.github.damontecres.stashapp.api.type.StashIDCriterionInput +import com.github.damontecres.stashapp.api.type.StashIDsCriterionInput import com.github.damontecres.stashapp.api.type.StringCriterionInput import com.github.damontecres.stashapp.api.type.TimestampCriterionInput @@ -143,7 +144,7 @@ fun PhashDistanceCriterionInput.toMap(): Map = ) } -fun PHashDuplicationCriterionInput.toMap(): Map = +fun DuplicationCriterionInput.toMap(): Map = buildMap { put("modifier", CriterionModifier.EQUALS.rawValue) if (duplicated.getOrNull() == false) { @@ -151,6 +152,11 @@ fun PHashDuplicationCriterionInput.toMap(): Map = } else { put("value", true) } + distance.getOrNull()?.let { put("distance", it) } + phash.getOrNull()?.let { put("phash", it) } + stash_id.getOrNull()?.let { put("stash_id", it) } + title.getOrNull()?.let { put("title", it) } + url.getOrNull()?.let { put("url", it) } } fun ResolutionCriterionInput.toMap(): Map = @@ -206,6 +212,18 @@ fun StashIDCriterionInput.toMap(): Map = ) } +fun StashIDsCriterionInput.toMap(): Map = + buildMap { + put("modifier", modifier.rawValue) + put( + "value", + buildMap { + put("stashIDs", stash_ids.getOrNull() ?: "") + put("endpoint", endpoint.getOrNull() ?: "") + }, + ) + } + fun TimestampCriterionInput.toMap(): Map = buildMap { put("modifier", modifier.rawValue) @@ -261,9 +279,9 @@ fun CircumcisionCriterionInput.toMap(): Map = .getOrNull() ?.map { when (it) { - CircumisedEnum.CUT -> "Cut" - CircumisedEnum.UNCUT -> "Uncut" - CircumisedEnum.UNKNOWN__ -> "Unknown" + CircumcisedEnum.CUT -> "Cut" + CircumcisedEnum.UNCUT -> "Uncut" + CircumcisedEnum.UNKNOWN__ -> "Unknown" } }.orEmpty() put("value", values) diff --git a/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterWriter.kt b/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterWriter.kt index 176e7318f..ff0a71c24 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterWriter.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/filter/output/FilterWriter.kt @@ -5,17 +5,18 @@ import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.CustomFieldCriterionInput import com.github.damontecres.stashapp.api.type.DateCriterionInput +import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput import com.github.damontecres.stashapp.api.type.FloatCriterionInput import com.github.damontecres.stashapp.api.type.GenderCriterionInput import com.github.damontecres.stashapp.api.type.HierarchicalMultiCriterionInput import com.github.damontecres.stashapp.api.type.IntCriterionInput import com.github.damontecres.stashapp.api.type.MultiCriterionInput import com.github.damontecres.stashapp.api.type.OrientationCriterionInput -import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput import com.github.damontecres.stashapp.api.type.StashDataFilter import com.github.damontecres.stashapp.api.type.StashIDCriterionInput +import com.github.damontecres.stashapp.api.type.StashIDsCriterionInput import com.github.damontecres.stashapp.api.type.StringCriterionInput import com.github.damontecres.stashapp.api.type.TimestampCriterionInput import com.github.damontecres.stashapp.data.DataType @@ -60,7 +61,7 @@ class FilterWriter( o.toMap() } - is PHashDuplicationCriterionInput -> { + is DuplicationCriterionInput -> { o.toMap() } @@ -76,6 +77,10 @@ class FilterWriter( o.toMap() } + is StashIDsCriterionInput -> { + o.toMap() + } + is TimestampCriterionInput -> { o.toMap() } diff --git a/app/src/main/java/com/github/damontecres/stashapp/filter/picker/CircumcisionPickerFragment.kt b/app/src/main/java/com/github/damontecres/stashapp/filter/picker/CircumcisionPickerFragment.kt index b63417578..61a8fd479 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/filter/picker/CircumcisionPickerFragment.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/filter/picker/CircumcisionPickerFragment.kt @@ -6,8 +6,8 @@ import androidx.leanback.widget.GuidanceStylist import androidx.leanback.widget.GuidedAction import com.apollographql.apollo.api.Optional import com.github.damontecres.stashapp.R +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput -import com.github.damontecres.stashapp.api.type.CircumisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.StashDataFilter import com.github.damontecres.stashapp.filter.CreateFilterGuidedStepFragment @@ -56,14 +56,14 @@ class CircumcisionPickerFragment( .build(), ) - CircumisedEnum.entries + CircumcisedEnum.entries .mapIndexedNotNull { index, circ -> - if (circ != CircumisedEnum.UNKNOWN__) { + if (circ != CircumcisedEnum.UNKNOWN__) { val name = when (circ) { - CircumisedEnum.CUT -> getString(R.string.stashapp_circumcised_types_CUT) - CircumisedEnum.UNCUT -> getString(R.string.stashapp_circumcised_types_UNCUT) - CircumisedEnum.UNKNOWN__ -> "Unknown" + CircumcisedEnum.CUT -> getString(R.string.stashapp_circumcised_types_CUT) + CircumcisedEnum.UNCUT -> getString(R.string.stashapp_circumcised_types_UNCUT) + CircumcisedEnum.UNKNOWN__ -> "Unknown" } val action = GuidedAction @@ -111,10 +111,10 @@ class CircumcisionPickerFragment( } } - private fun getValues(): List? = + private fun getValues(): List? = actions .filter { it.id >= CIRC_OFFSET && it.isChecked } - .map { CircumisedEnum.entries[(it.id - CIRC_OFFSET).toInt()] } + .map { CircumcisedEnum.entries[(it.id - CIRC_OFFSET).toInt()] } .ifEmpty { null } private fun setFinish() { diff --git a/app/src/main/java/com/github/damontecres/stashapp/ui/PreviewUtils.kt b/app/src/main/java/com/github/damontecres/stashapp/ui/PreviewUtils.kt index dfaa80ee9..b1e996690 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/ui/PreviewUtils.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/ui/PreviewUtils.kt @@ -43,7 +43,8 @@ val performerPreview = fake_tits = null, penis_length = null, circumcised = null, - career_length = "2001-2007", + career_start = "2001", + career_end = "2007", tattoos = null, piercings = null, alias_list = listOf("Alias1", "Alias2"), diff --git a/app/src/main/java/com/github/damontecres/stashapp/ui/components/filter/CreateObjectFilter.kt b/app/src/main/java/com/github/damontecres/stashapp/ui/components/filter/CreateObjectFilter.kt index 1d42da246..fd48ba48a 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/ui/components/filter/CreateObjectFilter.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/ui/components/filter/CreateObjectFilter.kt @@ -21,8 +21,8 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.tv.material3.Icon import com.apollographql.apollo.api.Optional import com.github.damontecres.stashapp.R +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput -import com.github.damontecres.stashapp.api.type.CircumisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.DateCriterionInput import com.github.damontecres.stashapp.api.type.FloatCriterionInput @@ -478,8 +478,8 @@ fun ObjectFilterPicker( SelectFromListAction( filterName = context.getString(filterOption.nameStringId), options = - CircumisedEnum.entries - .filter { it != CircumisedEnum.UNKNOWN__ } + CircumcisedEnum.entries + .filter { it != CircumcisedEnum.UNKNOWN__ } .map { context.getString(circNameId(it)) }, currentOptions = (input.value.getOrNull() ?: listOf()).map { @@ -488,7 +488,7 @@ fun ObjectFilterPicker( multiSelect = true, onSubmit = { value = - input.copy(value = Optional.present(it.map { CircumisedEnum.entries[it] })) + input.copy(value = Optional.present(it.map { CircumcisedEnum.entries[it] })) }, ), ) diff --git a/app/src/main/java/com/github/damontecres/stashapp/ui/components/main/MainPagePerformerDetails.kt b/app/src/main/java/com/github/damontecres/stashapp/ui/components/main/MainPagePerformerDetails.kt index 4faa9da5f..93aeb5fdd 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/ui/components/main/MainPagePerformerDetails.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/ui/components/main/MainPagePerformerDetails.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.widthIn import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.alpha @@ -180,10 +181,15 @@ fun MainPagePerformerDetails( modifier = Modifier.widthIn(max = 64.dp), ) } - if (perf.career_length.isNotNullOrBlank()) { + if (perf.career_start.isNotNullOrBlank()) { TitleValueText( stringResource(R.string.stashapp_career_length), - perf.career_length, + remember(perf) { + listOf( + perf.career_start, + perf.career_end, + ).joinToString(" - ") + }, ) } if (perf.penis_length != null) { diff --git a/app/src/main/java/com/github/damontecres/stashapp/ui/pages/PerformerPage.kt b/app/src/main/java/com/github/damontecres/stashapp/ui/pages/PerformerPage.kt index 9b6afc74c..26962aeee 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/ui/pages/PerformerPage.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/ui/pages/PerformerPage.kt @@ -45,7 +45,7 @@ import com.github.damontecres.stashapp.StashApplication import com.github.damontecres.stashapp.api.fragment.PerformerData import com.github.damontecres.stashapp.api.fragment.StudioData import com.github.damontecres.stashapp.api.fragment.TagData -import com.github.damontecres.stashapp.api.type.CircumisedEnum +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.GalleryFilterType import com.github.damontecres.stashapp.api.type.GroupFilterType @@ -628,16 +628,22 @@ fun PerformerDetails( } val circString = when (perf.circumcised) { - CircumisedEnum.CUT -> context.getString(R.string.stashapp_circumcised_types_CUT) - CircumisedEnum.UNCUT -> context.getString(R.string.stashapp_circumcised_types_UNCUT) - CircumisedEnum.UNKNOWN__, null -> null + CircumcisedEnum.CUT -> context.getString(R.string.stashapp_circumcised_types_CUT) + CircumcisedEnum.UNCUT -> context.getString(R.string.stashapp_circumcised_types_UNCUT) + CircumcisedEnum.UNKNOWN__, null -> null } add(TableRow.from(context, R.string.stashapp_circumcised, circString)) add(TableRow.from(context, R.string.stashapp_tattoos, perf.tattoos)) add(TableRow.from(context, R.string.stashapp_piercings, perf.piercings)) } - add(TableRow.from(context, R.string.stashapp_career_length, perf.career_length)) + add( + TableRow.from( + context, + R.string.stashapp_career_length, + listOf(perf.career_start, perf.career_end).joinToString(" - "), + ), + ) }.filterNotNull() } ItemDetails( diff --git a/app/src/main/java/com/github/damontecres/stashapp/util/FilterParser.kt b/app/src/main/java/com/github/damontecres/stashapp/util/FilterParser.kt index 0904e6940..73cc8e119 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/util/FilterParser.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/util/FilterParser.kt @@ -1,11 +1,13 @@ package com.github.damontecres.stashapp.util import com.apollographql.apollo.api.Optional +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CircumcisionCriterionInput -import com.github.damontecres.stashapp.api.type.CircumisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.api.type.CustomFieldCriterionInput import com.github.damontecres.stashapp.api.type.DateCriterionInput +import com.github.damontecres.stashapp.api.type.DuplicationCriterionInput +import com.github.damontecres.stashapp.api.type.FileDuplicationCriterionInput import com.github.damontecres.stashapp.api.type.FloatCriterionInput import com.github.damontecres.stashapp.api.type.GenderCriterionInput import com.github.damontecres.stashapp.api.type.GenderEnum @@ -14,13 +16,13 @@ import com.github.damontecres.stashapp.api.type.IntCriterionInput import com.github.damontecres.stashapp.api.type.MultiCriterionInput import com.github.damontecres.stashapp.api.type.OrientationCriterionInput import com.github.damontecres.stashapp.api.type.OrientationEnum -import com.github.damontecres.stashapp.api.type.PHashDuplicationCriterionInput import com.github.damontecres.stashapp.api.type.PhashDistanceCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionCriterionInput import com.github.damontecres.stashapp.api.type.ResolutionEnum import com.github.damontecres.stashapp.api.type.SortDirectionEnum import com.github.damontecres.stashapp.api.type.StashDataFilter import com.github.damontecres.stashapp.api.type.StashIDCriterionInput +import com.github.damontecres.stashapp.api.type.StashIDsCriterionInput import com.github.damontecres.stashapp.api.type.StringCriterionInput import com.github.damontecres.stashapp.api.type.TimestampCriterionInput import com.github.damontecres.stashapp.data.DataType @@ -173,7 +175,7 @@ class FilterParser( value = Optional.presentIfNotNull( valueList - ?.map { CircumisedEnum.valueOf(it.uppercase()) } + ?.map { CircumcisedEnum.valueOf(it.uppercase()) } ?.toList(), ), modifier = CriterionModifier.valueOf(it["modifier"]!! as String), @@ -233,6 +235,18 @@ class FilterParser( null } + fun convertStashIDsCriterionInput(it: Map?): StashIDsCriterionInput? = + if (it != null) { + val values = it["value"] as Map? + StashIDsCriterionInput( + endpoint = Optional.presentIfNotNull(values?.get("endpoint")?.toString()), + stash_ids = Optional.presentIfNotNull(values?.get("stashIDs") as? List), + modifier = CriterionModifier.valueOf(it["modifier"]!! as String), + ) + } else { + null + } + fun convertPhashDistanceCriterionInput(it: Map?): PhashDistanceCriterionInput? = if (it != null) { val values = it["value"] as Map? @@ -245,11 +259,28 @@ class FilterParser( null } - fun convertPHashDuplicationCriterionInput(it: Map?): PHashDuplicationCriterionInput? = + fun convertDuplicationCriterionInput(it: Map?): DuplicationCriterionInput? = + if (it != null) { + // TODO test + DuplicationCriterionInput( + duplicated = Optional.presentIfNotNull(it["value"]?.toString()?.toBoolean()), + distance = Optional.presentIfNotNull(it["distance"]?.toString()?.toInt()), + phash = Optional.presentIfNotNull(it["phash"]?.toString()?.toBoolean()), + url = Optional.presentIfNotNull(it["url"]?.toString()?.toBoolean()), + stash_id = Optional.presentIfNotNull(it["stash_id"]?.toString()?.toBoolean()), + title = Optional.presentIfNotNull(it["title"]?.toString()?.toBoolean()), + ) + } else { + null + } + + fun convertFileDuplicationCriterionInput(it: Map?): FileDuplicationCriterionInput? = if (it != null) { - PHashDuplicationCriterionInput( + // TODO test + FileDuplicationCriterionInput( duplicated = Optional.presentIfNotNull(it["value"]?.toString()?.toBoolean()), distance = Optional.presentIfNotNull(it["distance"]?.toString()?.toInt()), + phash = Optional.presentIfNotNull(it["phash"]?.toString()?.toBoolean()), ) } else { null diff --git a/app/src/main/java/com/github/damontecres/stashapp/util/FilterParserExtensions.kt b/app/src/main/java/com/github/damontecres/stashapp/util/FilterParserExtensions.kt index 1be26b838..efc6bbc5a 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/util/FilterParserExtensions.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/util/FilterParserExtensions.kt @@ -39,6 +39,8 @@ fun FilterParser.convertPerformerFilterType(f: Any?): PerformerFilterType? = penis_length = Optional.presentIfNotNull(convertFloatCriterionInput(filter["penis_length"])), circumcised = Optional.presentIfNotNull(convertCircumcisionCriterionInput(filter["circumcised"])), career_length = Optional.presentIfNotNull(convertStringCriterionInput(filter["career_length"])), + career_start = Optional.presentIfNotNull(convertDateCriterionInput(filter["career_start"])), + career_end = Optional.presentIfNotNull(convertDateCriterionInput(filter["career_end"])), tattoos = Optional.presentIfNotNull(convertStringCriterionInput(filter["tattoos"])), piercings = Optional.presentIfNotNull(convertStringCriterionInput(filter["piercings"])), aliases = Optional.presentIfNotNull(convertStringCriterionInput(filter["aliases"])), @@ -47,11 +49,13 @@ fun FilterParser.convertPerformerFilterType(f: Any?): PerformerFilterType? = tags = Optional.presentIfNotNull(convertHierarchicalMultiCriterionInput(filter["tags"])), tag_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["tag_count"])), scene_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["scene_count"])), + marker_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["marker_count"])), image_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["image_count"])), gallery_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["gallery_count"])), play_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["play_count"])), o_counter = Optional.presentIfNotNull(convertIntCriterionInput(filter["o_counter"])), stash_id_endpoint = Optional.presentIfNotNull(convertStashIDCriterionInput(filter["stash_id_endpoint"])), + stash_ids_endpoint = Optional.presentIfNotNull(convertStashIDsCriterionInput(filter["stash_ids_endpoint"])), rating100 = Optional.presentIfNotNull(convertIntCriterionInput(filter["rating100"])), url = Optional.presentIfNotNull(convertStringCriterionInput(filter["url"])), hair_color = Optional.presentIfNotNull(convertStringCriterionInput(filter["hair_color"])), @@ -67,6 +71,7 @@ fun FilterParser.convertPerformerFilterType(f: Any?): PerformerFilterType? = images_filter = Optional.presentIfNotNull(convertImageFilterType(filter["images_filter"])), galleries_filter = Optional.presentIfNotNull(convertGalleryFilterType(filter["galleries_filter"])), tags_filter = Optional.presentIfNotNull(convertTagFilterType(filter["tags_filter"])), + markers_filter = Optional.presentIfNotNull(convertSceneMarkerFilterType(filter["markers_filter"])), created_at = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["created_at"])), updated_at = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["updated_at"])), custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), @@ -98,7 +103,7 @@ fun FilterParser.convertSceneFilterType(f: Any?): SceneFilterType? = rating100 = Optional.presentIfNotNull(convertIntCriterionInput(filter["rating100"])), organized = Optional.presentIfNotNull(convertBoolean(filter["organized"])), o_counter = Optional.presentIfNotNull(convertIntCriterionInput(filter["o_counter"])), - duplicated = Optional.presentIfNotNull(convertPHashDuplicationCriterionInput(filter["duplicated"])), + duplicated = Optional.presentIfNotNull(convertDuplicationCriterionInput(filter["duplicated"])), resolution = Optional.presentIfNotNull(convertResolutionCriterionInput(filter["resolution"])), orientation = Optional.presentIfNotNull(convertOrientationCriterionInput(filter["orientation"])), framerate = Optional.presentIfNotNull(convertIntCriterionInput(filter["framerate"])), @@ -120,6 +125,8 @@ fun FilterParser.convertSceneFilterType(f: Any?): SceneFilterType? = performers = Optional.presentIfNotNull(convertMultiCriterionInput(filter["performers"])), performer_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["performer_count"])), stash_id_endpoint = Optional.presentIfNotNull(convertStashIDCriterionInput(filter["stash_id_endpoint"])), + stash_ids_endpoint = Optional.presentIfNotNull(convertStashIDsCriterionInput(filter["stash_ids_endpoint"])), + stash_id_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["stash_id_count"])), url = Optional.presentIfNotNull(convertStringCriterionInput(filter["url"])), interactive = Optional.presentIfNotNull(convertBoolean(filter["interactive"])), interactive_speed = Optional.presentIfNotNull(convertIntCriterionInput(filter["interactive_speed"])), @@ -139,6 +146,7 @@ fun FilterParser.convertSceneFilterType(f: Any?): SceneFilterType? = groups_filter = Optional.presentIfNotNull(convertGroupFilterType(filter["groups_filter"])), markers_filter = Optional.presentIfNotNull(convertSceneMarkerFilterType(filter["markers_filter"])), files_filter = Optional.presentIfNotNull(convertFileFilterType(filter["files_filter"])), + custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), ) } else { null @@ -157,6 +165,7 @@ fun FilterParser.convertStudioFilterType(f: Any?): StudioFilterType? = details = Optional.presentIfNotNull(convertStringCriterionInput(filter["details"])), parents = Optional.presentIfNotNull(convertMultiCriterionInput(filter["parents"])), stash_id_endpoint = Optional.presentIfNotNull(convertStashIDCriterionInput(filter["stash_id_endpoint"])), + stash_ids_endpoint = Optional.presentIfNotNull(convertStashIDsCriterionInput(filter["stash_ids_endpoint"])), tags = Optional.presentIfNotNull(convertHierarchicalMultiCriterionInput(filter["tags"])), is_missing = Optional.presentIfNotNull(convertString(filter["is_missing"])), rating100 = Optional.presentIfNotNull(convertIntCriterionInput(filter["rating100"])), @@ -164,16 +173,20 @@ fun FilterParser.convertStudioFilterType(f: Any?): StudioFilterType? = scene_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["scene_count"])), image_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["image_count"])), gallery_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["gallery_count"])), + group_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["group_count"])), tag_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["tag_count"])), url = Optional.presentIfNotNull(convertStringCriterionInput(filter["url"])), aliases = Optional.presentIfNotNull(convertStringCriterionInput(filter["aliases"])), child_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["child_count"])), ignore_auto_tag = Optional.presentIfNotNull(convertBoolean(filter["ignore_auto_tag"])), + organized = Optional.presentIfNotNull(convertBoolean(filter["organized"])), scenes_filter = Optional.presentIfNotNull(convertSceneFilterType(filter["scenes_filter"])), images_filter = Optional.presentIfNotNull(convertImageFilterType(filter["images_filter"])), galleries_filter = Optional.presentIfNotNull(convertGalleryFilterType(filter["galleries_filter"])), + groups_filter = Optional.presentIfNotNull(convertGroupFilterType(filter["groups_filter"])), created_at = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["created_at"])), updated_at = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["updated_at"])), + custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), ) } else { null @@ -208,11 +221,17 @@ fun FilterParser.convertTagFilterType(f: Any?): TagFilterType? = child_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["child_count"])), ignore_auto_tag = Optional.presentIfNotNull(convertBoolean(filter["ignore_auto_tag"])), stash_id_endpoint = Optional.presentIfNotNull(convertStashIDCriterionInput(filter["stash_id_endpoint"])), + stash_ids_endpoint = Optional.presentIfNotNull(convertStashIDsCriterionInput(filter["stash_ids_endpoint"])), scenes_filter = Optional.presentIfNotNull(convertSceneFilterType(filter["scenes_filter"])), images_filter = Optional.presentIfNotNull(convertImageFilterType(filter["images_filter"])), galleries_filter = Optional.presentIfNotNull(convertGalleryFilterType(filter["galleries_filter"])), + groups_filter = Optional.presentIfNotNull(convertGroupFilterType(filter["groups_filter"])), + performers_filter = Optional.presentIfNotNull(convertPerformerFilterType(filter["performers_filter"])), + studios_filter = Optional.presentIfNotNull(convertStudioFilterType(filter["studios_filter"])), + markers_filter = Optional.presentIfNotNull(convertSceneMarkerFilterType(filter["markers_filter"])), created_at = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["created_at"])), updated_at = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["updated_at"])), + custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), ) } else { null @@ -246,8 +265,10 @@ fun FilterParser.convertGroupFilterType(f: Any?): GroupFilterType? = sub_groups = Optional.presentIfNotNull(convertHierarchicalMultiCriterionInput(filter["sub_groups"])), containing_group_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["containing_group_count"])), sub_group_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["sub_group_count"])), + scene_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["scene_count"])), scenes_filter = Optional.presentIfNotNull(convertSceneFilterType(filter["scenes_filter"])), studios_filter = Optional.presentIfNotNull(convertStudioFilterType(filter["studios_filter"])), + custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), ) } else { null @@ -288,6 +309,7 @@ fun FilterParser.convertImageFilterType(f: Any?): ImageFilterType? = details = Optional.presentIfNotNull(convertStringCriterionInput(filter["details"])), id = Optional.presentIfNotNull(convertIntCriterionInput(filter["id"])), checksum = Optional.presentIfNotNull(convertStringCriterionInput(filter["checksum"])), + phash_distance = Optional.presentIfNotNull(convertPhashDistanceCriterionInput(filter["phash_distance"])), path = Optional.presentIfNotNull(convertStringCriterionInput(filter["path"])), file_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["file_count"])), rating100 = Optional.presentIfNotNull(convertIntCriterionInput(filter["rating100"])), @@ -316,6 +338,7 @@ fun FilterParser.convertImageFilterType(f: Any?): ImageFilterType? = studios_filter = Optional.presentIfNotNull(convertStudioFilterType(filter["studios_filter"])), tags_filter = Optional.presentIfNotNull(convertTagFilterType(filter["tags_filter"])), files_filter = Optional.presentIfNotNull(convertFileFilterType(filter["files_filter"])), + custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), ) } else { null @@ -365,6 +388,8 @@ fun FilterParser.convertGalleryFilterType(f: Any?): GalleryFilterType? = tags_filter = Optional.presentIfNotNull(convertTagFilterType(filter["tags_filter"])), files_filter = Optional.presentIfNotNull(convertFileFilterType(filter["files_filter"])), folders_filter = Optional.presentIfNotNull(convertFolderFilterType(filter["folders_filter"])), + parent_folder = Optional.presentIfNotNull(convertHierarchicalMultiCriterionInput(filter["parent_folder"])), + custom_fields = Optional.presentIfNotNull(convertCustomFieldCriterionInput(filter["custom_fields"] as List<*>?)), ) } else { null @@ -415,7 +440,7 @@ fun FilterParser.convertFileFilterType(f: Any?): FileFilterType? = parent_folder = Optional.presentIfNotNull(convertHierarchicalMultiCriterionInput(filter["parent_folder"])), zip_file = Optional.presentIfNotNull(convertMultiCriterionInput(filter["zip_file"])), mod_time = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["mod_time"])), - duplicated = Optional.presentIfNotNull(convertPHashDuplicationCriterionInput(filter["duplicated"])), + duplicated = Optional.presentIfNotNull(convertFileDuplicationCriterionInput(filter["duplicated"])), video_file_filter = Optional.presentIfNotNull(convertVideoFileFilterInput(filter["video_file_filter"])), image_file_filter = Optional.presentIfNotNull(convertImageFileFilterInput(filter["image_file_filter"])), scene_count = Optional.presentIfNotNull(convertIntCriterionInput(filter["scene_count"])), @@ -441,6 +466,7 @@ fun FilterParser.convertFolderFilterType(f: Any?): FolderFilterType? = OR = Optional.presentIfNotNull(convertFolderFilterType(filter["OR"])), NOT = Optional.presentIfNotNull(convertFolderFilterType(filter["NOT"])), path = Optional.presentIfNotNull(convertStringCriterionInput(filter["path"])), + basename = Optional.presentIfNotNull(convertStringCriterionInput(filter["basename"])), parent_folder = Optional.presentIfNotNull(convertHierarchicalMultiCriterionInput(filter["parent_folder"])), zip_file = Optional.presentIfNotNull(convertMultiCriterionInput(filter["zip_file"])), mod_time = Optional.presentIfNotNull(convertTimestampCriterionInput(filter["mod_time"])), diff --git a/app/src/main/java/com/github/damontecres/stashapp/views/Formatting.kt b/app/src/main/java/com/github/damontecres/stashapp/views/Formatting.kt index 45ac0db53..e52fa2483 100644 --- a/app/src/main/java/com/github/damontecres/stashapp/views/Formatting.kt +++ b/app/src/main/java/com/github/damontecres/stashapp/views/Formatting.kt @@ -6,7 +6,7 @@ import com.github.damontecres.stashapp.R import com.github.damontecres.stashapp.StashApplication import com.github.damontecres.stashapp.api.fragment.FullMarkerData import com.github.damontecres.stashapp.api.fragment.MarkerData -import com.github.damontecres.stashapp.api.type.CircumisedEnum +import com.github.damontecres.stashapp.api.type.CircumcisedEnum import com.github.damontecres.stashapp.api.type.CriterionModifier import com.github.damontecres.stashapp.util.StashServer import java.time.LocalDate @@ -176,11 +176,11 @@ fun formatNumber( .format(number) } -fun circNameId(circ: CircumisedEnum): Int = +fun circNameId(circ: CircumcisedEnum): Int = when (circ) { - CircumisedEnum.CUT -> R.string.stashapp_circumcised_types_CUT - CircumisedEnum.UNCUT -> R.string.stashapp_circumcised_types_UNCUT - CircumisedEnum.UNKNOWN__ -> R.string.stashapp_display_mode_unknown + CircumcisedEnum.CUT -> R.string.stashapp_circumcised_types_CUT + CircumcisedEnum.UNCUT -> R.string.stashapp_circumcised_types_UNCUT + CircumcisedEnum.UNKNOWN__ -> R.string.stashapp_display_mode_unknown } val FullMarkerData.formatSeconds: String diff --git a/stash-server b/stash-server index b23b0267a..2da807431 160000 --- a/stash-server +++ b/stash-server @@ -1 +1 @@ -Subproject commit b23b0267adc668bb22390ccc5772e75946aed492 +Subproject commit 2da8074316f4f362eeb95bd7d33053e843a117e7