diff --git a/src/camera/PhotoCamera.tsx b/src/camera/PhotoCamera.tsx index 13a63a9f..7b3c60b9 100644 --- a/src/camera/PhotoCamera.tsx +++ b/src/camera/PhotoCamera.tsx @@ -1,10 +1,11 @@ import { AiFillApple } from 'react-icons/ai'; import { pathForCamera } from '@/app/paths'; -import { Camera, formatCameraText, isCameraApple } from '.'; +import { Camera, formatCameraText } from '.'; import EntityLink, { EntityLinkExternalProps, } from '@/components/primitives/EntityLink'; import IconCamera from '@/components/icons/IconCamera'; +import { isCameraApple } from '@/platforms/apple'; export default function PhotoCamera({ camera, diff --git a/src/camera/index.ts b/src/camera/index.ts index 4377ae33..23c7474a 100644 --- a/src/camera/index.ts +++ b/src/camera/index.ts @@ -1,10 +1,9 @@ import type { Photo } from '@/photo'; +import { isCameraMakeApple } from '@/platforms/apple'; import { parameterize } from '@/utility/string'; const CAMERA_PLACEHOLDER: Camera = { make: 'Camera', model: 'Model' }; -const CAMERA_MAKE_APPLE = 'apple'; - export type Camera = { make: string model: string @@ -58,12 +57,6 @@ export const cameraFromPhoto = ( ? { make: photo.make, model: photo.model } : fallback ?? CAMERA_PLACEHOLDER; -const isCameraMakeApple = (make?: string) => - make?.toLocaleLowerCase() === CAMERA_MAKE_APPLE; - -export const isCameraApple = ({ make }: Camera) => - isCameraMakeApple(make); - export const formatCameraText = ( { make, model: modelRaw }: Camera, length: diff --git a/src/image-response/CameraImageResponse.tsx b/src/image-response/CameraImageResponse.tsx index cb7a5308..6be2440b 100644 --- a/src/image-response/CameraImageResponse.tsx +++ b/src/image-response/CameraImageResponse.tsx @@ -6,11 +6,11 @@ import { Camera, cameraFromPhoto, formatCameraText, - isCameraApple, } from '@/camera'; import { NextImageSize } from '@/platforms/next-image'; import { AiFillApple } from 'react-icons/ai'; import IconCamera from '@/components/icons/IconCamera'; +import { isCameraApple } from '@/platforms/apple'; export default function CameraImageResponse({ camera: cameraProp, diff --git a/src/lens/index.ts b/src/lens/index.ts index 9e36c191..caf0b27e 100644 --- a/src/lens/index.ts +++ b/src/lens/index.ts @@ -1,6 +1,6 @@ import { Photo } from '@/photo'; import { parameterize } from '@/utility/string'; -import { formatAppleLensText, isLensMakeApple } from './apple'; +import { formatAppleLensText, isLensMakeApple } from '../platforms/apple'; const LENS_PLACEHOLDER: Lens = { make: 'Lens', model: 'Model' }; diff --git a/src/lens/apple.ts b/src/platforms/apple.ts similarity index 76% rename from src/lens/apple.ts rename to src/platforms/apple.ts index 444468d2..c5a59a1a 100644 --- a/src/lens/apple.ts +++ b/src/platforms/apple.ts @@ -1,10 +1,17 @@ /* eslint-disable max-len */ -import { Lens } from '.'; +import { Camera } from '@/camera'; +import { Lens } from '../lens'; -const LENS_MAKE_APPLE = 'apple'; +const MAKE_APPLE = 'apple'; + +export const isCameraMakeApple = (make?: string) => + make?.toLocaleLowerCase() === MAKE_APPLE; + +export const isCameraApple = ({ make }: Camera) => + isCameraMakeApple(make); export const isLensMakeApple = (make?: string) => - make?.toLocaleLowerCase() === LENS_MAKE_APPLE; + make?.toLocaleLowerCase() === MAKE_APPLE; export const isLensApple = ({ make }: Lens) => isLensMakeApple(make); @@ -19,7 +26,7 @@ export const formatAppleLensText = ( side, focalLength, aperture, - ] = (/iPhone ([0-9a-z]{1,3}(?: (?:Pro|Max))*).*?(back|front).*?([0-9\.]+)mm.*?f\/([0-9\.]+)/gi.exec(model) ?? []); + ] = (/iPhone ([0-9a-z]{1,3}(?: (?:Pro|Max|Plus))*).*?(back|front).*?([0-9\.]+)mm.*?f\/([0-9\.]+)/gi.exec(model) ?? []); const format = (lensName: string, includeFocalLength = true) => { let result = ''; @@ -64,6 +71,8 @@ export const formatAppleLensText = ( case '1.78': return format('Main'); case '2.8': return format('Telephoto'); } + default: + return format('Back', true); } }