Improve iPhone lens compatibility

This commit is contained in:
Sam Becker 2025-03-17 08:37:57 -05:00
parent cbb663193c
commit 7e207ed95b
5 changed files with 18 additions and 15 deletions

View File

@ -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,

View File

@ -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:

View File

@ -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,

View File

@ -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' };

View File

@ -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);
}
}