diff --git a/ui/src/Pages/PeoplePage/FaceCircleImage.test.tsx b/ui/src/Pages/PeoplePage/FaceCircleImage.test.tsx
index ef9ced1e..d82ffc17 100644
--- a/ui/src/Pages/PeoplePage/FaceCircleImage.test.tsx
+++ b/ui/src/Pages/PeoplePage/FaceCircleImage.test.tsx
@@ -14,6 +14,7 @@ test('face circle image', () => {
media: {
id: '1',
__typename: 'Media',
+ title: 'my_image.jpg',
thumbnail: {
__typename: 'MediaURL',
url: 'http://localhost:4001/photo/thumbnail_my_image_jpg_p9x8dLWr.jpg',
diff --git a/ui/src/Pages/PeoplePage/FaceCircleImage.tsx b/ui/src/Pages/PeoplePage/FaceCircleImage.tsx
index d61d0575..8fc4b774 100644
--- a/ui/src/Pages/PeoplePage/FaceCircleImage.tsx
+++ b/ui/src/Pages/PeoplePage/FaceCircleImage.tsx
@@ -1,7 +1,10 @@
import React from 'react'
import styled from 'styled-components'
import { ProtectedImage } from '../../components/photoGallery/ProtectedMedia'
-import { myFaces_myFaceGroups_imageFaces } from './__generated__/myFaces'
+import {
+ myFaces_myFaceGroups_imageFaces_media,
+ myFaces_myFaceGroups_imageFaces_rectangle,
+} from './__generated__/myFaces'
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const FaceImage = styled(({ origin, selectable, scale, ...rest }) => (
@@ -64,8 +67,15 @@ const CircleImageWrapper = styled.div<{ size: string }>`
overflow: hidden;
`
+type FaceCircleImageFace = {
+ __typename: 'ImageFace'
+ id: string
+ rectangle: myFaces_myFaceGroups_imageFaces_rectangle
+ media: myFaces_myFaceGroups_imageFaces_media
+}
+
type FaceCircleImageProps = {
- imageFace: myFaces_myFaceGroups_imageFaces
+ imageFace: FaceCircleImageFace
selectable: boolean
size?: string
}
diff --git a/ui/src/Pages/PeoplePage/PeoplePage.test.tsx b/ui/src/Pages/PeoplePage/PeoplePage.test.tsx
index 0df364ef..9cbb819a 100644
--- a/ui/src/Pages/PeoplePage/PeoplePage.test.tsx
+++ b/ui/src/Pages/PeoplePage/PeoplePage.test.tsx
@@ -52,9 +52,10 @@ describe('PeoplePage component', () => {
media: {
__typename: 'Media',
id: '63',
+ title: 'image.jpg',
thumbnail: {
__typename: 'MediaURL',
- url: 'http://localhost:4001/photo/thumbnail_L%C3%B8berute_jpg_p9x8dLWr.jpg',
+ url: 'http://localhost:4001/photo/thumbnail_image_jpg_p9x8dLWr.jpg',
width: 1024,
height: 641,
},
@@ -129,6 +130,7 @@ describe('FaceDetails component', () => {
},
media: {
id: '63',
+ title: 'image.jpg',
thumbnail: {
url: 'http://localhost:4001/photo/thumbnail_image_jpg_p9x8dLWr.jpg',
width: 1024,
diff --git a/ui/src/Pages/PeoplePage/PeoplePage.tsx b/ui/src/Pages/PeoplePage/PeoplePage.tsx
index 2aaf0fbd..0698b651 100644
--- a/ui/src/Pages/PeoplePage/PeoplePage.tsx
+++ b/ui/src/Pages/PeoplePage/PeoplePage.tsx
@@ -36,6 +36,7 @@ export const MY_FACES_QUERY = gql`
}
media {
id
+ title
thumbnail {
url
width
diff --git a/ui/src/Pages/PeoplePage/SingleFaceGroup/FaceGroupTitle.js b/ui/src/Pages/PeoplePage/SingleFaceGroup/FaceGroupTitle.tsx
similarity index 83%
rename from ui/src/Pages/PeoplePage/SingleFaceGroup/FaceGroupTitle.js
rename to ui/src/Pages/PeoplePage/SingleFaceGroup/FaceGroupTitle.tsx
index ec30be59..69795787 100644
--- a/ui/src/Pages/PeoplePage/SingleFaceGroup/FaceGroupTitle.js
+++ b/ui/src/Pages/PeoplePage/SingleFaceGroup/FaceGroupTitle.tsx
@@ -1,18 +1,23 @@
import { useMutation } from '@apollo/client'
-import PropTypes from 'prop-types'
import React, { useState, useEffect, createRef } from 'react'
import { Dropdown, Input } from 'semantic-ui-react'
import styled from 'styled-components'
+import { isNil } from '../../../helpers/utils'
import { SET_GROUP_LABEL_MUTATION } from '../PeoplePage'
+import {
+ setGroupLabel,
+ setGroupLabelVariables,
+} from '../__generated__/setGroupLabel'
import DetachImageFacesModal from './DetachImageFacesModal'
import MergeFaceGroupsModal from './MergeFaceGroupsModal'
import MoveImageFacesModal from './MoveImageFacesModal'
+import { singleFaceGroup_faceGroup } from './__generated__/singleFaceGroup'
const TitleWrapper = styled.div`
min-height: 3.5em;
`
-const TitleLabel = styled.h1`
+const TitleLabel = styled.h1<{ labeled: boolean }>`
display: inline-block;
color: ${({ labeled }) => (labeled ? 'black' : '#888')};
margin-right: 12px;
@@ -28,22 +33,22 @@ const TitleDropdown = styled(Dropdown)`
}
`
-const FaceGroupTitle = ({ faceGroup }) => {
+type FaceGroupTitleProps = {
+ faceGroup?: singleFaceGroup_faceGroup
+}
+
+const FaceGroupTitle = ({ faceGroup }: FaceGroupTitleProps) => {
const [editLabel, setEditLabel] = useState(false)
const [inputValue, setInputValue] = useState(faceGroup?.label ?? '')
- const inputRef = createRef()
+ const inputRef = createRef()
const [mergeModalOpen, setMergeModalOpen] = useState(false)
const [moveModalOpen, setMoveModalOpen] = useState(false)
const [detachModalOpen, setDetachModalOpen] = useState(false)
- const [setGroupLabel, { loading: setLabelLoading }] = useMutation(
- SET_GROUP_LABEL_MUTATION,
- {
- variables: {
- groupID: faceGroup?.id,
- },
- }
- )
+ const [setGroupLabel, { loading: setLabelLoading }] = useMutation<
+ setGroupLabel,
+ setGroupLabelVariables
+ >(SET_GROUP_LABEL_MUTATION)
const resetLabel = () => {
setInputValue(faceGroup?.label ?? '')
@@ -62,7 +67,9 @@ const FaceGroupTitle = ({ faceGroup }) => {
}
}, [setLabelLoading])
- const onKeyUp = e => {
+ const onKeyUp = (e: KeyboardEvent & React.ChangeEvent) => {
+ if (isNil(faceGroup)) throw new Error('Expected faceGroup to be defined')
+
if (e.key == 'Escape') {
resetLabel()
return
@@ -71,6 +78,7 @@ const FaceGroupTitle = ({ faceGroup }) => {
if (e.key == 'Enter') {
setGroupLabel({
variables: {
+ groupID: faceGroup.id,
label: e.target.value == '' ? null : e.target.value,
},
})
@@ -157,8 +165,4 @@ const FaceGroupTitle = ({ faceGroup }) => {
)
}
-FaceGroupTitle.propTypes = {
- faceGroup: PropTypes.object,
-}
-
export default FaceGroupTitle
diff --git a/ui/src/Pages/PeoplePage/SingleFaceGroup/MoveImageFacesModal.js b/ui/src/Pages/PeoplePage/SingleFaceGroup/MoveImageFacesModal.tsx
similarity index 70%
rename from ui/src/Pages/PeoplePage/SingleFaceGroup/MoveImageFacesModal.js
rename to ui/src/Pages/PeoplePage/SingleFaceGroup/MoveImageFacesModal.tsx
index 049745fd..226245df 100644
--- a/ui/src/Pages/PeoplePage/SingleFaceGroup/MoveImageFacesModal.js
+++ b/ui/src/Pages/PeoplePage/SingleFaceGroup/MoveImageFacesModal.tsx
@@ -1,11 +1,25 @@
import { gql, useLazyQuery, useMutation } from '@apollo/client'
-import PropTypes from 'prop-types'
import React, { useEffect, useState } from 'react'
import { useHistory } from 'react-router-dom'
import { Button, Modal } from 'semantic-ui-react'
import SelectFaceGroupTable from './SelectFaceGroupTable'
import SelectImageFacesTable from './SelectImageFacesTable'
import { MY_FACES_QUERY } from '../PeoplePage'
+import {
+ singleFaceGroup_faceGroup,
+ singleFaceGroup_faceGroup_imageFaces,
+} from './__generated__/singleFaceGroup'
+import {
+ myFaces,
+ myFacesVariables,
+ myFaces_myFaceGroups,
+ myFaces_myFaceGroups_imageFaces,
+} from '../__generated__/myFaces'
+import { isNil } from '../../../helpers/utils'
+import {
+ moveImageFaces,
+ moveImageFacesVariables,
+} from './__generated__/moveImageFaces'
const MOVE_IMAGE_FACES_MUTATION = gql`
mutation moveImageFaces($faceIDs: [ID!]!, $destFaceGroupID: ID!) {
@@ -21,14 +35,29 @@ const MOVE_IMAGE_FACES_MUTATION = gql`
}
`
-const MoveImageFacesModal = ({ open, setOpen, faceGroup }) => {
- const [selectedImageFaces, setSelectedImageFaces] = useState([])
- const [selectedFaceGroup, setSelectedFaceGroup] = useState(null)
- const [imagesSelected, setImagesSelected] = useState(false)
- let history = useHistory()
+type MoveImageFacesModalProps = {
+ open: boolean
+ setOpen: React.Dispatch>
+ faceGroup?: singleFaceGroup_faceGroup
+}
- const [moveImageFacesMutation] = useMutation(MOVE_IMAGE_FACES_MUTATION, {
- variables: {},
+const MoveImageFacesModal = ({
+ open,
+ setOpen,
+ faceGroup,
+}: MoveImageFacesModalProps) => {
+ const [selectedImageFaces, setSelectedImageFaces] = useState<
+ (singleFaceGroup_faceGroup_imageFaces | myFaces_myFaceGroups_imageFaces)[]
+ >([])
+ const [selectedFaceGroup, setSelectedFaceGroup] =
+ useState(null)
+ const [imagesSelected, setImagesSelected] = useState(false)
+ const history = useHistory()
+
+ const [moveImageFacesMutation] = useMutation<
+ moveImageFaces,
+ moveImageFacesVariables
+ >(MOVE_IMAGE_FACES_MUTATION, {
refetchQueries: [
{
query: MY_FACES_QUERY,
@@ -36,9 +65,8 @@ const MoveImageFacesModal = ({ open, setOpen, faceGroup }) => {
],
})
- const [loadFaceGroups, { data: faceGroupsData }] = useLazyQuery(
- MY_FACES_QUERY
- )
+ const [loadFaceGroups, { data: faceGroupsData }] =
+ useLazyQuery(MY_FACES_QUERY)
useEffect(() => {
if (imagesSelected) {
@@ -59,6 +87,10 @@ const MoveImageFacesModal = ({ open, setOpen, faceGroup }) => {
const moveImageFaces = () => {
const faceIDs = selectedImageFaces.map(face => face.id)
+ if (isNil(selectedFaceGroup)) {
+ throw new Error('Expected selectedFaceGroup not to be null')
+ }
+
moveImageFacesMutation({
variables: {
faceIDs,
@@ -83,9 +115,9 @@ const MoveImageFacesModal = ({ open, setOpen, faceGroup }) => {
/>
)
} else {
- if (faceGroupsData) {
+ if (faceGroupsData && faceGroup) {
const filteredFaceGroups = faceGroupsData.myFaceGroups.filter(
- x => x != faceGroup
+ x => x.id != faceGroup.id
)
table = (
{
)
}
-MoveImageFacesModal.propTypes = {
- open: PropTypes.bool.isRequired,
- setOpen: PropTypes.func.isRequired,
- faceGroup: PropTypes.object,
-}
-
export default MoveImageFacesModal
diff --git a/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectFaceGroupTable.js b/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectFaceGroupTable.tsx
similarity index 68%
rename from ui/src/Pages/PeoplePage/SingleFaceGroup/SelectFaceGroupTable.js
rename to ui/src/Pages/PeoplePage/SingleFaceGroup/SelectFaceGroupTable.tsx
index 13e869d0..7dd411ba 100644
--- a/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectFaceGroupTable.js
+++ b/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectFaceGroupTable.tsx
@@ -1,10 +1,11 @@
-import PropTypes from 'prop-types'
import React, { useState, useEffect } from 'react'
import { Input, Pagination, Table } from 'semantic-ui-react'
import styled from 'styled-components'
import FaceCircleImage from '../FaceCircleImage'
+import { myFaces_myFaceGroups } from '../__generated__/myFaces'
+import { singleFaceGroup_faceGroup } from './__generated__/singleFaceGroup'
-const FaceCircleWrapper = styled.div`
+const FaceCircleWrapper = styled.div<{ $selected: boolean }>`
display: inline-block;
border-radius: 50%;
border: 2px solid
@@ -16,17 +17,31 @@ const FlexCell = styled(Table.Cell)`
align-items: center;
`
-export const RowLabel = styled.span`
+export const RowLabel = styled.span<{ $selected: boolean }>`
${({ $selected }) => $selected && `font-weight: bold;`}
margin-left: 12px;
`
-const FaceGroupRow = ({ faceGroup, faceSelected, setFaceSelected }) => {
+type FaceGroupRowProps = {
+ faceGroup: myFaces_myFaceGroups
+ faceSelected: boolean
+ setFaceSelected(): void
+}
+
+const FaceGroupRow = ({
+ faceGroup,
+ faceSelected,
+ setFaceSelected,
+}: FaceGroupRowProps) => {
return (
-
+
{faceGroup.label}
@@ -34,10 +49,15 @@ const FaceGroupRow = ({ faceGroup, faceSelected, setFaceSelected }) => {
)
}
-FaceGroupRow.propTypes = {
- faceGroup: PropTypes.object.isRequired,
- faceSelected: PropTypes.bool.isRequired,
- setFaceSelected: PropTypes.func.isRequired,
+type SelectFaceGroupTableProps = {
+ faceGroups: myFaces_myFaceGroups[]
+ selectedFaceGroup: singleFaceGroup_faceGroup | myFaces_myFaceGroups | null
+ setSelectedFaceGroup: React.Dispatch<
+ React.SetStateAction<
+ singleFaceGroup_faceGroup | myFaces_myFaceGroups | null
+ >
+ >
+ title: string
}
const SelectFaceGroupTable = ({
@@ -45,7 +65,7 @@ const SelectFaceGroupTable = ({
selectedFaceGroup,
setSelectedFaceGroup,
title,
-}) => {
+}: SelectFaceGroupTableProps) => {
const PAGE_SIZE = 6
const [page, setPage] = useState(0)
@@ -65,7 +85,7 @@ const SelectFaceGroupTable = ({
setSelectedFaceGroup(face)}
/>
))
@@ -105,7 +125,11 @@ const SelectFaceGroupTable = ({
activePage={page + 1}
totalPages={Math.ceil(rows.length / PAGE_SIZE)}
onPageChange={(_, { activePage }) => {
- setPage(Math.ceil(activePage) - 1)
+ if (activePage) {
+ setPage(Math.ceil(activePage as number) - 1)
+ } else {
+ setPage(0)
+ }
}}
/>
@@ -115,11 +139,4 @@ const SelectFaceGroupTable = ({
)
}
-SelectFaceGroupTable.propTypes = {
- faceGroups: PropTypes.array,
- selectedFaceGroup: PropTypes.object,
- setSelectedFaceGroup: PropTypes.func.isRequired,
- title: PropTypes.string,
-}
-
export default SelectFaceGroupTable
diff --git a/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectImageFacesTable.js b/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectImageFacesTable.tsx
similarity index 72%
rename from ui/src/Pages/PeoplePage/SingleFaceGroup/SelectImageFacesTable.js
rename to ui/src/Pages/PeoplePage/SingleFaceGroup/SelectImageFacesTable.tsx
index 4f476302..ea618be7 100644
--- a/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectImageFacesTable.js
+++ b/ui/src/Pages/PeoplePage/SingleFaceGroup/SelectImageFacesTable.tsx
@@ -1,16 +1,29 @@
-import PropTypes from 'prop-types'
import React, { useEffect, useState } from 'react'
import { Checkbox, Input, Pagination, Table } from 'semantic-ui-react'
import styled from 'styled-components'
import { ProtectedImage } from '../../../components/photoGallery/ProtectedMedia'
+import { myFaces_myFaceGroups_imageFaces } from '../__generated__/myFaces'
import { RowLabel } from './SelectFaceGroupTable'
+import { singleFaceGroup_faceGroup_imageFaces } from './__generated__/singleFaceGroup'
const SelectImagePreview = styled(ProtectedImage)`
max-width: 120px;
max-height: 80px;
`
-const ImageFaceRow = ({ imageFace, faceSelected, setFaceSelected }) => {
+type ImageFaceRowProps = {
+ imageFace:
+ | myFaces_myFaceGroups_imageFaces
+ | singleFaceGroup_faceGroup_imageFaces
+ faceSelected: boolean
+ setFaceSelected(): void
+}
+
+const ImageFaceRow = ({
+ imageFace,
+ faceSelected,
+ setFaceSelected,
+}: ImageFaceRowProps) => {
return (
@@ -18,7 +31,7 @@ const ImageFaceRow = ({ imageFace, faceSelected, setFaceSelected }) => {
@@ -31,10 +44,21 @@ const ImageFaceRow = ({ imageFace, faceSelected, setFaceSelected }) => {
)
}
-ImageFaceRow.propTypes = {
- imageFace: PropTypes.object.isRequired,
- faceSelected: PropTypes.bool.isRequired,
- setFaceSelected: PropTypes.func.isRequired,
+type SelectImageFacesTable = {
+ imageFaces: (
+ | myFaces_myFaceGroups_imageFaces
+ | singleFaceGroup_faceGroup_imageFaces
+ )[]
+ selectedImageFaces: (
+ | myFaces_myFaceGroups_imageFaces
+ | singleFaceGroup_faceGroup_imageFaces
+ )[]
+ setSelectedImageFaces: React.Dispatch<
+ React.SetStateAction<
+ (myFaces_myFaceGroups_imageFaces | singleFaceGroup_faceGroup_imageFaces)[]
+ >
+ >
+ title: string
}
const SelectImageFacesTable = ({
@@ -42,7 +66,7 @@ const SelectImageFacesTable = ({
selectedImageFaces,
setSelectedImageFaces,
title,
-}) => {
+}: SelectImageFacesTable) => {
const PAGE_SIZE = 6
const [page, setPage] = useState(0)
@@ -110,7 +134,11 @@ const SelectImageFacesTable = ({
activePage={page + 1}
totalPages={Math.ceil(rows.length / PAGE_SIZE)}
onPageChange={(_, { activePage }) => {
- setPage(Math.ceil(activePage) - 1)
+ if (activePage) {
+ setPage(Math.ceil(activePage as number) - 1)
+ } else {
+ setPage(0)
+ }
}}
/>
@@ -120,11 +148,4 @@ const SelectImageFacesTable = ({
)
}
-SelectImageFacesTable.propTypes = {
- imageFaces: PropTypes.array,
- selectedImageFaces: PropTypes.array,
- setSelectedImageFaces: PropTypes.func.isRequired,
- title: PropTypes.string,
-}
-
export default SelectImageFacesTable
diff --git a/ui/src/Pages/PeoplePage/__generated__/myFaces.ts b/ui/src/Pages/PeoplePage/__generated__/myFaces.ts
index b56b4ac7..b947e437 100644
--- a/ui/src/Pages/PeoplePage/__generated__/myFaces.ts
+++ b/ui/src/Pages/PeoplePage/__generated__/myFaces.ts
@@ -34,6 +34,7 @@ export interface myFaces_myFaceGroups_imageFaces_media_thumbnail {
export interface myFaces_myFaceGroups_imageFaces_media {
__typename: 'Media'
id: string
+ title: string
/**
* URL to display the media in a smaller resolution
*/
diff --git a/ui/src/Pages/SharePage/__generated__/shareAlbumQuery.ts b/ui/src/Pages/SharePage/__generated__/shareAlbumQuery.ts
index 31c6b5ef..c3186684 100644
--- a/ui/src/Pages/SharePage/__generated__/shareAlbumQuery.ts
+++ b/ui/src/Pages/SharePage/__generated__/shareAlbumQuery.ts
@@ -3,178 +3,181 @@
// @generated
// This file was automatically generated and should not be edited.
-import { MediaType } from "./../../../../__generated__/globalTypes";
+import {
+ OrderDirection,
+ MediaType,
+} from './../../../../__generated__/globalTypes'
// ====================================================
// GraphQL query operation: shareAlbumQuery
// ====================================================
export interface shareAlbumQuery_album_subAlbums_thumbnail_thumbnail {
- __typename: "MediaURL";
+ __typename: 'MediaURL'
/**
* URL for previewing the image
*/
- url: string;
+ url: string
}
export interface shareAlbumQuery_album_subAlbums_thumbnail {
- __typename: "Media";
+ __typename: 'Media'
/**
* URL to display the media in a smaller resolution
*/
- thumbnail: shareAlbumQuery_album_subAlbums_thumbnail_thumbnail | null;
+ thumbnail: shareAlbumQuery_album_subAlbums_thumbnail_thumbnail | null
}
export interface shareAlbumQuery_album_subAlbums {
- __typename: "Album";
- id: string;
- title: string;
+ __typename: 'Album'
+ id: string
+ title: string
/**
* An image in this album used for previewing this album
*/
- thumbnail: shareAlbumQuery_album_subAlbums_thumbnail | null;
+ thumbnail: shareAlbumQuery_album_subAlbums_thumbnail | null
}
export interface shareAlbumQuery_album_media_thumbnail {
- __typename: "MediaURL";
+ __typename: 'MediaURL'
/**
* URL for previewing the image
*/
- url: string;
+ url: string
/**
* Width of the image in pixels
*/
- width: number;
+ width: number
/**
* Height of the image in pixels
*/
- height: number;
+ height: number
}
export interface shareAlbumQuery_album_media_downloads_mediaUrl {
- __typename: "MediaURL";
+ __typename: 'MediaURL'
/**
* URL for previewing the image
*/
- url: string;
+ url: string
/**
* Width of the image in pixels
*/
- width: number;
+ width: number
/**
* Height of the image in pixels
*/
- height: number;
+ height: number
/**
* The file size of the resource in bytes
*/
- fileSize: number;
+ fileSize: number
}
export interface shareAlbumQuery_album_media_downloads {
- __typename: "MediaDownload";
- title: string;
- mediaUrl: shareAlbumQuery_album_media_downloads_mediaUrl;
+ __typename: 'MediaDownload'
+ title: string
+ mediaUrl: shareAlbumQuery_album_media_downloads_mediaUrl
}
export interface shareAlbumQuery_album_media_highRes {
- __typename: "MediaURL";
+ __typename: 'MediaURL'
/**
* URL for previewing the image
*/
- url: string;
+ url: string
/**
* Width of the image in pixels
*/
- width: number;
+ width: number
/**
* Height of the image in pixels
*/
- height: number;
+ height: number
}
export interface shareAlbumQuery_album_media_videoWeb {
- __typename: "MediaURL";
+ __typename: 'MediaURL'
/**
* URL for previewing the image
*/
- url: string;
+ url: string
}
export interface shareAlbumQuery_album_media_exif {
- __typename: "MediaEXIF";
+ __typename: 'MediaEXIF'
/**
* The model name of the camera
*/
- camera: string | null;
+ camera: string | null
/**
* The maker of the camera
*/
- maker: string | null;
+ maker: string | null
/**
* The name of the lens
*/
- lens: string | null;
- dateShot: any | null;
+ lens: string | null
+ dateShot: any | null
/**
* The exposure time of the image
*/
- exposure: number | null;
+ exposure: number | null
/**
* The aperature stops of the image
*/
- aperture: number | null;
+ aperture: number | null
/**
* The ISO setting of the image
*/
- iso: number | null;
+ iso: number | null
/**
* The focal length of the lens, when the image was taken
*/
- focalLength: number | null;
+ focalLength: number | null
/**
* A formatted description of the flash settings, when the image was taken
*/
- flash: number | null;
+ flash: number | null
/**
* An index describing the mode for adjusting the exposure of the image
*/
- exposureProgram: number | null;
+ exposureProgram: number | null
}
export interface shareAlbumQuery_album_media {
- __typename: "Media";
- id: string;
- title: string;
- type: MediaType;
+ __typename: 'Media'
+ id: string
+ title: string
+ type: MediaType
/**
* URL to display the media in a smaller resolution
*/
- thumbnail: shareAlbumQuery_album_media_thumbnail | null;
- downloads: shareAlbumQuery_album_media_downloads[];
+ thumbnail: shareAlbumQuery_album_media_thumbnail | null
+ downloads: shareAlbumQuery_album_media_downloads[]
/**
* URL to display the photo in full resolution, will be null for videos
*/
- highRes: shareAlbumQuery_album_media_highRes | null;
+ highRes: shareAlbumQuery_album_media_highRes | null
/**
* URL to get the video in a web format that can be played in the browser, will be null for photos
*/
- videoWeb: shareAlbumQuery_album_media_videoWeb | null;
- exif: shareAlbumQuery_album_media_exif | null;
+ videoWeb: shareAlbumQuery_album_media_videoWeb | null
+ exif: shareAlbumQuery_album_media_exif | null
}
export interface shareAlbumQuery_album {
- __typename: "Album";
- id: string;
- title: string;
+ __typename: 'Album'
+ id: string
+ title: string
/**
* The albums contained in this album
*/
- subAlbums: shareAlbumQuery_album_subAlbums[];
+ subAlbums: shareAlbumQuery_album_subAlbums[]
/**
* The media inside this album
*/
- media: shareAlbumQuery_album_media[];
+ media: shareAlbumQuery_album_media[]
}
export interface shareAlbumQuery {
@@ -182,13 +185,15 @@ export interface shareAlbumQuery {
* Get album by id, user must own the album or be admin
* If valid tokenCredentials are provided, the album may be retrived without further authentication
*/
- album: shareAlbumQuery_album;
+ album: shareAlbumQuery_album
}
export interface shareAlbumQueryVariables {
- id: string;
- token: string;
- password?: string | null;
- limit?: number | null;
- offset?: number | null;
+ id: string
+ token: string
+ password?: string | null
+ mediaOrderBy?: string | null
+ mediaOrderDirection?: OrderDirection | null
+ limit?: number | null
+ offset?: number | null
}