More manual tweaks
This commit is contained in:
parent
1dc8f4617e
commit
0d0e20f7c4
19 changed files with 134 additions and 183 deletions
|
@ -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;
|
||||
}
|
||||
}),
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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}`);
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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"),
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 (
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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) => {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
],
|
||||
},
|
||||
})}`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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",
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue