mirror of
https://github.com/ente-io/ente.git
synced 2025-07-25 11:05:15 +00:00
Show from both places
This commit is contained in:
parent
62436db1c3
commit
74e50a8e37
@ -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}
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user