Show from both places

This commit is contained in:
Manav Rathi 2024-08-07 11:01:06 +05:30
parent 62436db1c3
commit 74e50a8e37
No known key found for this signature in database
2 changed files with 17 additions and 13 deletions

View File

@ -4,6 +4,7 @@ import { nameAndExtension } from "@/base/file";
import log from "@/base/log"; import log from "@/base/log";
import type { ParsedMetadata } from "@/media/file-metadata"; import type { ParsedMetadata } from "@/media/file-metadata";
import { import {
getUICreationDate,
updateRemotePublicMagicMetadata, updateRemotePublicMagicMetadata,
type ParsedMetadataDate, type ParsedMetadataDate,
} from "@/media/file-metadata"; } from "@/media/file-metadata";
@ -19,6 +20,7 @@ import CopyButton from "@ente/shared/components/CodeBlock/CopyButton";
import { FlexWrapper } from "@ente/shared/components/Container"; import { FlexWrapper } from "@ente/shared/components/Container";
import EnteSpinner from "@ente/shared/components/EnteSpinner"; import EnteSpinner from "@ente/shared/components/EnteSpinner";
import ComlinkCryptoWorker from "@ente/shared/crypto"; import ComlinkCryptoWorker from "@ente/shared/crypto";
import { getPublicMagicMetadataMTSync } from "@ente/shared/file-metadata";
import { formatDate, formatTime } from "@ente/shared/time/format"; import { formatDate, formatTime } from "@ente/shared/time/format";
import BackupOutlined from "@mui/icons-material/BackupOutlined"; import BackupOutlined from "@mui/icons-material/BackupOutlined";
import CalendarTodayIcon from "@mui/icons-material/CalendarToday"; import CalendarTodayIcon from "@mui/icons-material/CalendarToday";
@ -148,7 +150,7 @@ export const FileInfo: React.FC<FileInfoProps> = ({
/> />
<CreationTime <CreationTime
{...{ file, shouldDisableEdits, scheduleUpdate }} {...{ enteFile: file, shouldDisableEdits, scheduleUpdate }}
/> />
<RenderFileName <RenderFileName
@ -355,27 +357,29 @@ const FileInfoSidebar = styled((props: DialogProps) => (
}); });
interface CreationTimeProps { interface CreationTimeProps {
file: EnteFile; enteFile: EnteFile;
shouldDisableEdits: boolean; shouldDisableEdits: boolean;
scheduleUpdate: () => void; scheduleUpdate: () => void;
} }
export const CreationTime: React.FC<CreationTimeProps> = ({ export const CreationTime: React.FC<CreationTimeProps> = ({
file, enteFile,
shouldDisableEdits, shouldDisableEdits,
scheduleUpdate, scheduleUpdate,
}) => { }) => {
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const originalCreationTime = new Date(file?.metadata.creationTime / 1000);
const [isInEditMode, setIsInEditMode] = useState(false); const [isInEditMode, setIsInEditMode] = useState(false);
const openEditMode = () => setIsInEditMode(true); const openEditMode = () => setIsInEditMode(true);
const closeEditMode = () => setIsInEditMode(false); const closeEditMode = () => setIsInEditMode(false);
const publicMagicMetadata = getPublicMagicMetadataMTSync(enteFile);
const originalDate = getUICreationDate(enteFile, publicMagicMetadata);
const saveEdits = async (pickedTime: ParsedMetadataDate) => { const saveEdits = async (pickedTime: ParsedMetadataDate) => {
try { try {
setLoading(true); setLoading(true);
if (isInEditMode && file) { if (isInEditMode && enteFile) {
// Use the updated date time (both in its canonical dateTime // Use the updated date time (both in its canonical dateTime
// form, and also as the legacy timestamp). But don't use the // form, and also as the legacy timestamp). But don't use the
// offset. The offset here will be the offset of the computer // offset. The offset here will be the offset of the computer
@ -385,7 +389,7 @@ export const CreationTime: React.FC<CreationTimeProps> = ({
// to edit the associated offset, but right now it is not even // to edit the associated offset, but right now it is not even
// surfaced, so don't also potentially overwrite it. // surfaced, so don't also potentially overwrite it.
const { dateTime, timestamp } = pickedTime; const { dateTime, timestamp } = pickedTime;
if (timestamp == file?.metadata.creationTime) { if (timestamp == originalDate.getTime()) {
// Same as before. // Same as before.
closeEditMode(); closeEditMode();
return; return;
@ -393,7 +397,7 @@ export const CreationTime: React.FC<CreationTimeProps> = ({
const cryptoWorker = await ComlinkCryptoWorker.getInstance(); const cryptoWorker = await ComlinkCryptoWorker.getInstance();
await updateRemotePublicMagicMetadata( await updateRemotePublicMagicMetadata(
file, enteFile,
{ dateTime, editedTime: timestamp }, { dateTime, editedTime: timestamp },
cryptoWorker.encryptMetadata, cryptoWorker.encryptMetadata,
cryptoWorker.decryptMetadata, cryptoWorker.decryptMetadata,
@ -414,15 +418,15 @@ export const CreationTime: React.FC<CreationTimeProps> = ({
<FlexWrapper> <FlexWrapper>
<InfoItem <InfoItem
icon={<CalendarTodayIcon />} icon={<CalendarTodayIcon />}
title={formatDate(originalCreationTime)} title={formatDate(originalDate)}
caption={formatTime(originalCreationTime)} caption={formatTime(originalDate)}
openEditor={openEditMode} openEditor={openEditMode}
loading={loading} loading={loading}
hideEditOption={shouldDisableEdits || isInEditMode} hideEditOption={shouldDisableEdits || isInEditMode}
/> />
{isInEditMode && ( {isInEditMode && (
<PhotoDateTimePicker <PhotoDateTimePicker
initialValue={originalCreationTime} initialValue={originalDate}
disabled={loading} disabled={loading}
onAccept={saveEdits} onAccept={saveEdits}
onClose={closeEditMode} onClose={closeEditMode}

View File

@ -1,12 +1,12 @@
import { decryptMetadata } from "@/base/crypto/ente";
import { isDevBuild } from "@/base/env";
import { import {
decryptPublicMagicMetadata, decryptPublicMagicMetadata,
type PublicMagicMetadata, type PublicMagicMetadata,
} from "@/media/file-metadata"; } from "@/media/file-metadata";
import { EnteFile } from "@/new/photos/types/file"; import { EnteFile } from "@/new/photos/types/file";
import { fileLogID } from "@/new/photos/utils/file";
import ComlinkCryptoWorker from "@ente/shared/crypto"; import ComlinkCryptoWorker from "@ente/shared/crypto";
import { decryptMetadata } from "packages/base/crypto/ente";
import { isDevBuild } from "packages/base/env";
import { fileLogID } from "packages/new/photos/utils/file";
/** /**
* On-demand decrypt the public magic metadata for an {@link EnteFile} for code * On-demand decrypt the public magic metadata for an {@link EnteFile} for code