More manual tweaks

This commit is contained in:
Manav Rathi 2024-04-09 11:33:44 +05:30
parent 1dc8f4617e
commit 0d0e20f7c4
No known key found for this signature in database
19 changed files with 134 additions and 183 deletions

View file

@ -35,10 +35,7 @@ export const getAuthCodes = async (): Promise<Code[]> => {
);
return Code.fromRawData(entity.id, decryptedCode);
} catch (e) {
logError(
Error("failed to parse code"),
"codeId = " + entity.id,
);
log.error(`failed to parse codeId = ${entity.id}`);
return null;
}
}),

View file

@ -340,9 +340,9 @@ const PhotoFrame = ({
}
} catch (e) {
if (e.message !== CustomError.URL_ALREADY_SET) {
logError(
e,
log.error(
"updating photoswipe after msrc url update failed",
e,
);
}
// ignore
@ -392,9 +392,9 @@ const PhotoFrame = ({
}
} catch (e) {
if (e.message !== CustomError.URL_ALREADY_SET) {
logError(
e,
log.error(
"updating photoswipe after for live photo imgSrc update failed",
e,
);
}
}
@ -426,9 +426,9 @@ const PhotoFrame = ({
}
} catch (e) {
if (e.message !== CustomError.URL_ALREADY_SET) {
logError(
e,
log.error(
"updating photoswipe for live photo complete update failed",
e,
);
}
}
@ -444,9 +444,9 @@ const PhotoFrame = ({
}
} catch (e) {
if (e.message !== CustomError.URL_ALREADY_SET) {
logError(
e,
log.error(
"updating photoswipe after src url update failed",
e,
);
}
}
@ -467,15 +467,11 @@ const PhotoFrame = ({
item.metadata.fileType !== FILE_TYPE.VIDEO &&
item.metadata.fileType !== FILE_TYPE.LIVE_PHOTO
) {
logError(
new Error(),
"getConvertedVideo called for non video file",
);
log.error("getConvertedVideo called for non video file");
return;
}
if (item.conversionFailed) {
logError(
new Error(),
log.error(
"getConvertedVideo called for file that conversion failed",
);
return;
@ -519,9 +515,9 @@ const PhotoFrame = ({
}
} catch (e) {
if (e.message !== CustomError.URL_ALREADY_SET) {
logError(
e,
log.error(
"updating photoswipe after src url update failed",
e,
);
}
throw e;

View file

@ -612,9 +612,10 @@ function PhotoViewer(props: Iprops) {
} catch (e) {
setExif({ key: file.src, value: null });
const fileExtension = getFileExtension(file.metadata.title);
logError(e, "checkExifAvailable failed", {
extension: fileExtension,
});
log.error(
`checkExifAvailable failed for extension ${fileExtension}`,
e,
);
}
};

View file

@ -544,9 +544,9 @@ export default function Uploader(props: Props) {
watchFolderService.resumePausedSync();
}
}
} catch (err) {
logError(err, "failed to upload files");
showUserFacingError(err.message);
} catch (e) {
log.error("failed to upload files", e);
showUserFacingError(e.message);
closeUploadProgress();
} finally {
postUploadAction();
@ -565,9 +565,9 @@ export default function Uploader(props: Props) {
filesWithCollections.collections,
uploaderName,
);
} catch (err) {
logError(err, "retry failed files failed");
showUserFacingError(err.message);
} catch (e) {
log.error("retry failed files failed", e);
showUserFacingError(e.message);
closeUploadProgress();
} finally {
postUploadAction();

View file

@ -24,7 +24,6 @@ import EnteSpinner from "@ente/shared/components/EnteSpinner";
import { MessageContainer } from "@ente/shared/components/MessageContainer";
import AppNavbar from "@ente/shared/components/Navbar/app";
import { PHOTOS_PAGES as PAGES } from "@ente/shared/constants/pages";
import { CustomError } from "@ente/shared/error";
import { Events, eventBus } from "@ente/shared/events";
import { useLocalState } from "@ente/shared/hooks/useLocalState";
import { addLogLine } from "@ente/shared/logging";
@ -268,9 +267,7 @@ export default function App({ Component, pageProps }: AppProps) {
const redirectAction = redirectMap.get(redirect);
window.location.href = await redirectAction();
} else {
logError(CustomError.BAD_REQUEST, "invalid redirection", {
redirect,
});
log.error(`invalid redirection ${redirect}`);
}
};

View file

@ -871,7 +871,7 @@ export default function Gallery() {
clearSelection();
await syncWithRemote(false, true);
} catch (e) {
logError(e, "collection ops failed", { ops });
log.error(`collection ops (${ops}) failed`, e);
setDialogMessage({
title: t("ERROR"),
@ -916,7 +916,7 @@ export default function Gallery() {
clearSelection();
await syncWithRemote(false, true);
} catch (e) {
logError(e, "file ops failed", { ops });
log.error(`file ops (${ops}) failed`, e);
setDialogMessage({
title: t("ERROR"),
@ -935,7 +935,7 @@ export default function Gallery() {
const collection = await createAlbum(collectionName);
await collectionOpsHelper(ops)(collection);
} catch (e) {
logError(e, "create and collection ops failed", { ops });
log.error(`create and collection ops (${ops}) failed`, e);
setDialogMessage({
title: t("ERROR"),

View file

@ -147,9 +147,9 @@ class billingService {
const { subscription } = response.data;
setData(LS_KEYS.SUBSCRIPTION, subscription);
return subscription;
} catch (err) {
logError(err, "Error while verifying subscription");
throw err;
} catch (e) {
log.error("Error while verifying subscription", e);
throw e;
}
}

View file

@ -224,9 +224,9 @@ class ClipServiceImpl {
);
} catch (e) {
if (e?.message !== CustomError.REQUEST_CANCELLED) {
logError(
e,
log.error(
"failed to extract clip embedding for file",
e,
);
}
if (

View file

@ -198,9 +198,10 @@ const getCollections = async (
try {
return await getCollectionWithSecrets(collection, key);
} catch (e) {
logError(e, `decryption failed for collection`, {
collectionID: collection.id,
});
log.error(
`decryption failed for collection with ID ${collection.id}`,
e,
);
return collection;
}
},
@ -1436,7 +1437,7 @@ export const constructUserIDToEmailMap = (
});
return userIDToEmailMap;
} catch (e) {
logError("Error Mapping UserId to email:", e);
log.error("Error Mapping UserId to email:", e);
return new Map<number, string>();
}
};

View file

@ -338,15 +338,9 @@ class DownloadManagerImpl {
return generateStreamFromArrayBuffer(decrypted);
} catch (e) {
if (e.message === CustomError.PROCESSING_FAILED) {
logError(e, "Failed to process file", {
fileID: file.id,
fromMobile:
!!file.metadata.localID ||
!!file.metadata.deviceFolder ||
!!file.metadata.version,
});
addLogLine(
`Failed to process file with fileID:${file.id}, localID: ${file.metadata.localID}, version: ${file.metadata.version}, deviceFolder:${file.metadata.deviceFolder} with error: ${e.message}`,
log.error(
`Failed to process file with fileID:${file.id}, localID: ${file.metadata.localID}, version: ${file.metadata.version}, deviceFolder:${file.metadata.deviceFolder}`,
e,
);
}
throw e;
@ -430,22 +424,9 @@ class DownloadManagerImpl {
e.message ===
CustomError.PROCESSING_FAILED
) {
logError(
log.error(
`Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder}`,
e,
"Failed to process file",
{
fileID: file.id,
fromMobile:
!!file.metadata
.localID ||
!!file.metadata
.deviceFolder ||
!!file.metadata
.version,
},
);
addLogLine(
`Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder} with error: ${e.message}`,
);
}
throw e;
@ -471,22 +452,9 @@ class DownloadManagerImpl {
e.message ===
CustomError.PROCESSING_FAILED
) {
logError(
log.error(
`Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder}`,
e,
"Failed to process file",
{
fileID: file.id,
fromMobile:
!!file.metadata
.localID ||
!!file.metadata
.deviceFolder ||
!!file.metadata
.version,
},
);
addLogLine(
`Failed to process file ${file.id} from localID: ${file.metadata.localID} version: ${file.metadata.version} deviceFolder:${file.metadata.deviceFolder} with error: ${e.message}`,
);
}
throw e;

View file

@ -1,7 +1,6 @@
import log from "@/next/log";
import ComlinkCryptoWorker from "@ente/shared/crypto";
import { CustomError } from "@ente/shared/error";
import { addLogLine } from "@ente/shared/logging";
import HTTPService from "@ente/shared/network/HTTPService";
import { getEndpoint } from "@ente/shared/network/api";
import localForage from "@ente/shared/storage/localForage";
@ -68,10 +67,10 @@ export const syncEmbeddings = async (models: Model[] = [Model.ONNX_CLIP]) => {
fileIdToKeyMap.set(file.id, file.key);
});
await cleanupDeletedEmbeddings(allLocalFiles, allEmbeddings);
addLogLine(`Syncing embeddings localCount: ${allEmbeddings.length}`);
log.info(`Syncing embeddings localCount: ${allEmbeddings.length}`);
for (const model of models) {
let modelLastSinceTime = await getModelEmbeddingSyncTime(model);
addLogLine(
log.info(
`Syncing ${model} model's embeddings sinceTime: ${modelLastSinceTime}`,
);
let response: GetEmbeddingDiffResponse;
@ -107,18 +106,13 @@ export const syncEmbeddings = async (models: Model[] = [Model.ONNX_CLIP]) => {
embedding: decryptedData,
} as Embedding;
} catch (e) {
let info: Record<string, unknown>;
let hasHiddenAlbums = false;
if (e.message === CustomError.FILE_NOT_FOUND) {
const hasHiddenAlbums =
hiddenAlbums?.length > 0;
info = {
hasHiddenAlbums,
};
hasHiddenAlbums = hiddenAlbums?.length > 0;
}
logError(
log.error(
`decryptEmbedding failed for file (hasHiddenAlbums: ${hasHiddenAlbums})`,
e,
"decryptEmbedding failed for file",
info,
);
}
}),
@ -132,7 +126,7 @@ export const syncEmbeddings = async (models: Model[] = [Model.ONNX_CLIP]) => {
}
await localForage.setItem(EMBEDDINGS_TABLE, allEmbeddings);
await setModelEmbeddingSyncTime(model, modelLastSinceTime);
addLogLine(
log.info(
`Syncing embeddings syncedEmbeddingsCount: ${allEmbeddings.length}`,
);
} while (response.diff.length === DIFF_LIMIT);
@ -205,7 +199,7 @@ export const cleanupDeletedEmbeddings = async (
activeFileIds.has(embedding.fileID),
);
if (allLocalEmbeddings.length !== remainingEmbeddings.length) {
addLogLine(
log.info(
`cleanupDeletedEmbeddings embeddingsCount: ${allLocalEmbeddings.length} remainingEmbeddingsCount: ${remainingEmbeddings.length}`,
);
await localForage.setItem(EMBEDDINGS_TABLE, remainingEmbeddings);

View file

@ -53,13 +53,14 @@ const setLocalFiles = async (type: "normal" | "hidden", files: EnteFile[]) => {
} catch (e1) {
try {
const storageEstimate = await navigator.storage.estimate();
logError(e1, "failed to save files to indexedDB", {
storageEstimate,
});
log.error(
`failed to save files to indexedDB (storageEstimate was ${storageEstimate}`,
e1,
);
addLogLine(`storage estimate ${JSON.stringify(storageEstimate)}`);
} catch (e2) {
logError(e1, "failed to save files to indexedDB");
logError(e2, "failed to get storage stats");
log.error("failed to save files to indexedDB", e1);
log.error("failed to get storage stats", e2);
}
throw e1;
}

View file

@ -65,17 +65,19 @@ class HEICConverter {
},
);
if (!convertedHEIC || convertedHEIC?.size === 0) {
logError(
Error(`converted heic fileSize is Zero`),
"converted heic fileSize is Zero",
{
originalFileSize: convertBytesToHumanReadable(
fileBlob?.size ?? 0,
),
convertedFileSize: convertBytesToHumanReadable(
convertedHEIC?.size ?? 0,
),
},
log.error(
`converted heic fileSize is Zero - ${JSON.stringify(
{
originalFileSize:
convertBytesToHumanReadable(
fileBlob?.size ?? 0,
),
convertedFileSize:
convertBytesToHumanReadable(
convertedHEIC?.size ?? 0,
),
},
)}`,
);
}
await new Promise((resolve) => {

View file

@ -67,13 +67,15 @@ export async function getParsedExifData(
return parseExifData(filteredExifData);
} catch (e) {
if (e.message === EXIFR_UNSUPPORTED_FILE_FORMAT_MESSAGE) {
logError(e, "exif library unsupported format", {
fileType: fileTypeInfo.exactType,
});
log.error(
`exif library unsupported format ${fileTypeInfo.exactType}`,
e,
);
} else {
logError(e, "get parsed exif data failed", {
fileType: fileTypeInfo.exactType,
});
log.error(
`get parsed exif data failed for file type ${fileTypeInfo.exactType}`,
e,
);
throw e;
}
}
@ -128,13 +130,13 @@ function parseExifData(exifData: RawEXIFData): ParsedEXIFData {
parsedExif.imageWidth = ImageWidth;
parsedExif.imageHeight = ImageHeight;
} else {
logError(
new Error("ImageWidth or ImageHeight is not a number"),
"Image dimension parsing failed",
{
ImageWidth,
ImageHeight,
},
log.error(
`Image dimension parsing failed - ImageWidth or ImageHeight is not a number ${JSON.stringify(
{
ImageWidth,
ImageHeight,
},
)}`,
);
}
} else if (ExifImageWidth && ExifImageHeight) {
@ -145,13 +147,13 @@ function parseExifData(exifData: RawEXIFData): ParsedEXIFData {
parsedExif.imageWidth = ExifImageWidth;
parsedExif.imageHeight = ExifImageHeight;
} else {
logError(
new Error("ExifImageWidth or ExifImageHeight is not a number"),
"Image dimension parsing failed",
{
ExifImageWidth,
ExifImageHeight,
},
log.error(
`Image dimension parsing failed - ExifImageWidth or ExifImageHeight is not a number ${JSON.stringify(
{
ExifImageWidth,
ExifImageHeight,
},
)}`,
);
}
} else if (PixelXDimension && PixelYDimension) {
@ -162,13 +164,13 @@ function parseExifData(exifData: RawEXIFData): ParsedEXIFData {
parsedExif.imageWidth = PixelXDimension;
parsedExif.imageHeight = PixelYDimension;
} else {
logError(
new Error("PixelXDimension or PixelYDimension is not a number"),
"Image dimension parsing failed",
{
PixelXDimension,
PixelYDimension,
},
log.error(
`Image dimension parsing failed - PixelXDimension or PixelYDimension is not a number ${JSON.stringify(
{
PixelXDimension,
PixelYDimension,
},
)}`,
);
}
}
@ -229,9 +231,7 @@ function parseEXIFDate(dateTimeString: string) {
}
return date;
} catch (e) {
logError(e, "parseEXIFDate failed", {
dateTimeString,
});
log.error(`Failed to parseEXIFDate ${dateTimeString}`, e);
return null;
}
}
@ -265,12 +265,15 @@ export function parseEXIFLocation(
);
return { latitude, longitude };
} catch (e) {
logError(e, "parseEXIFLocation failed", {
gpsLatitude,
gpsLatitudeRef,
gpsLongitude,
gpsLongitudeRef,
});
log.error(
`Failed to parseEXIFLocation ${JSON.stringify({
gpsLatitude,
gpsLatitudeRef,
gpsLongitude,
gpsLongitudeRef,
})}`,
e,
);
return NULL_LOCATION;
}
}

View file

@ -265,15 +265,13 @@ function areFilesLivePhotoAssets(
) {
return true;
} else {
logError(
new Error(CustomError.TOO_LARGE_LIVE_PHOTO_ASSETS),
CustomError.TOO_LARGE_LIVE_PHOTO_ASSETS,
{
log.error(
`${CustomError.TOO_LARGE_LIVE_PHOTO_ASSETS} - ${JSON.stringify({
fileSizes: [
firstFileIdentifier.size,
secondFileIdentifier.size,
],
},
})}`,
);
}
}

View file

@ -30,7 +30,7 @@ export async function generateThumbnail(
fileTypeInfo: FileTypeInfo,
): Promise<{ thumbnail: Uint8Array; hasStaticThumbnail: boolean }> {
try {
addLogLine(`generating thumbnail for ${getFileNameSize(file)}`);
log.info(`generating thumbnail for ${getFileNameSize(file)}`);
let hasStaticThumbnail = false;
let thumbnail: Uint8Array;
try {
@ -40,32 +40,26 @@ export async function generateThumbnail(
thumbnail = await generateVideoThumbnail(file, fileTypeInfo);
}
if (thumbnail.length > 1.5 * MAX_THUMBNAIL_SIZE) {
logError(
Error("thumbnail_too_large"),
"thumbnail greater than max limit",
{
log.error(
`thumbnail greater than max limit - ${JSON.stringify({
thumbnailSize: convertBytesToHumanReadable(
thumbnail.length,
),
fileSize: convertBytesToHumanReadable(file.size),
fileType: fileTypeInfo.exactType,
},
})}`,
);
}
if (thumbnail.length === 0) {
throw Error("EMPTY THUMBNAIL");
}
addLogLine(
log.info(
`thumbnail successfully generated ${getFileNameSize(file)}`,
);
} catch (e) {
logError(e, "uploading static thumbnail", {
fileFormat: fileTypeInfo.exactType,
});
addLogLine(
`thumbnail generation failed ${getFileNameSize(file)} error: ${
e.message
}`,
log.error(
`thumbnail generation failed ${getFileNameSize(file)} with format ${fileTypeInfo.exactType}`,
e,
);
thumbnail = Uint8Array.from(atob(BLACK_THUMBNAIL_BASE64), (c) =>
c.charCodeAt(0),
@ -213,9 +207,10 @@ async function generateVideoThumbnail(
file,
)} error: ${e.message}`,
);
logError(e, "failed to generate thumbnail using ffmpeg", {
fileFormat: fileTypeInfo.exactType,
});
log.error(
`failed to generate thumbnail using ffmpeg for format ${fileTypeInfo.exactType}`,
e,
);
thumbnail = await generateVideoThumbnailUsingCanvas(file);
}
return thumbnail;
@ -265,7 +260,7 @@ export async function generateVideoThumbnailUsingCanvas(
const err = Error(
`${CustomError.THUMBNAIL_GENERATION_FAILED} err: ${e}`,
);
logError(e, CustomError.THUMBNAIL_GENERATION_FAILED);
log.error(CustomError.THUMBNAIL_GENERATION_FAILED, e);
reject(err);
}
});

View file

@ -156,7 +156,7 @@ class UploadHttpClient {
);
if (!resp?.headers?.etag) {
const err = Error(CustomError.ETAG_MISSING);
logError(err, "putFile in parts failed");
log.error("putFile in parts failed", err);
throw err;
}
return resp;
@ -188,7 +188,7 @@ class UploadHttpClient {
);
if (!resp?.data?.etag) {
const err = Error(CustomError.ETAG_MISSING);
logError(err, "putFile in parts failed");
log.error("putFile in parts failed", err);
throw err;
}
return resp;

View file

@ -1,3 +1,4 @@
import log from "@/next/log";
import { LS_KEYS, getData } from "@ente/shared/storage/localStorage";
import { User } from "@ente/shared/user/types";
import { FamilyData, FamilyMember } from "types/user";
@ -28,11 +29,8 @@ export function getFamilyPlanAdmin(familyData: FamilyData): FamilyMember {
if (isPartOfFamily(familyData)) {
return familyData.members.find((x) => x.isAdmin);
} else {
logError(
Error(
"verify user is part of family plan before calling this method",
),
"invalid getFamilyPlanAdmin call",
log.error(
"invalid getFamilyPlanAdmin call - verify user is part of family plan before calling this method",
);
}
}

View file

@ -1,5 +1,5 @@
import { isDevBuild } from "@/next/env";
import { logError } from "@/utils/logging";
import log from "@/next/log";
import { includes } from "@/utils/type-guards";
import { getUserLocales } from "get-user-locale";
import i18n from "i18next";
@ -154,7 +154,7 @@ const savedLocaleStringMigratingIfNeeded = (): SupportedLocale | undefined => {
} catch (e) {
// Not a valid JSON, or not in the format we expected it. This shouldn't
// have happened, we're the only one setting it.
logError("Failed to parse locale obtained from local storage", e);
log.error("Failed to parse locale obtained from local storage", e);
// Also remove the old key, it is not parseable by us anymore.
localStorage.removeItem("locale");
return undefined;
@ -241,7 +241,7 @@ export const getLocaleInUse = (): SupportedLocale => {
return locale;
} else {
// This shouldn't have happened. Log an error to attract attention.
logError(
log.error(
`Expected the i18next locale to be one of the supported values, but instead found ${locale}`,
);
return defaultLocale;