From da6ab7aa4a2f89ebb4b6a0c7e15db6873f7a478d Mon Sep 17 00:00:00 2001 From: Thomas Rogers Date: Sat, 30 Nov 2024 00:12:11 +0100 Subject: [PATCH] Merge to main --- packages/api/src/jobs/export.ts | 23 ++++++++----------- .../web/components/templates/AuthLayout.tsx | 1 - .../web/components/templates/LoginLayout.tsx | 2 -- .../components/templates/NavigationLayout.tsx | 4 ---- .../components/templates/SettingsLayout.tsx | 2 -- 5 files changed, 10 insertions(+), 22 deletions(-) diff --git a/packages/api/src/jobs/export.ts b/packages/api/src/jobs/export.ts index 0e87cdbe5..bbeeece56 100644 --- a/packages/api/src/jobs/export.ts +++ b/packages/api/src/jobs/export.ts @@ -5,6 +5,7 @@ import { TaskState } from '../generated/graphql' import { findExportById, saveExport } from '../services/export' import { findHighlightsByLibraryItemId } from '../services/highlights' import { + countLibraryItems, findLibraryItemById, searchLibraryItems, } from '../services/library_item' @@ -12,17 +13,11 @@ import { sendExportJobEmail } from '../services/send_emails' import { findActiveUser } from '../services/user' import { logger } from '../utils/logger' import { highlightToMarkdown } from '../utils/parser' -import { contentFilePath } from '../utils/uploads' import { env } from '../env' import { storage } from '../repository/storage/storage' import { File } from '../repository/storage/StorageClient' import { Readable } from 'stream' -import { - contentFilePath, - createGCSFile, - generateUploadFilePathName, -} from '../utils/uploads' -import { batch } from 'googleapis/build/src/apis/batch' +import { contentFilePath, generateUploadFilePathName } from '../utils/uploads' import { getRepository } from '../repository' import { UploadFile } from '../entity/upload_file' @@ -67,7 +62,7 @@ const uploadContent = async ( const file = createGCSFile(filePath) // check if file is already uploaded - const [exists] = await file.exists() + const exists = await file.exists() if (!exists) { logger.info(`File not found: ${filePath}`) @@ -107,17 +102,19 @@ const uploadPdfContent = async ( id: libraryItem.uploadFileId, }) if (!upload || !upload.fileName) { - console.log(`upload does not have a filename: ${upload}`) + console.log( + `upload does not have a filename: ${upload?.fileName ?? 'empty'}` + ) return } const filePath = generateUploadFilePathName(upload.id, upload.fileName) const file = createGCSFile(filePath) - const [exists] = await file.exists() + const exists = await file.exists() if (exists) { console.log(`adding PDF file: ${filePath}`) // append the existing file to the archive - archive.append(file.createReadStream(), { + archive.append(await file.download(), { name: `content/${libraryItem.slug}.pdf`, }) } @@ -279,7 +276,7 @@ export const exportJob = async (jobData: ExportJobData) => { // Pipe the archiver output to the write stream archive.pipe(writeStream) - + let cursor = 0 try { // fetch data from the database const batchSize = 20 @@ -326,7 +323,7 @@ export const exportJob = async (jobData: ExportJobData) => { }) // generate a temporary signed url for the zip file - const [signedUrl] = await file.getSignedUrl({ + const signedUrl = await storage.signedUrl(bucketName, fullPath, { action: 'read', expires: Date.now() + 168 * 60 * 60 * 1000, // one week }) diff --git a/packages/web/components/templates/AuthLayout.tsx b/packages/web/components/templates/AuthLayout.tsx index b64d3cfb6..bc9388894 100644 --- a/packages/web/components/templates/AuthLayout.tsx +++ b/packages/web/components/templates/AuthLayout.tsx @@ -1,5 +1,4 @@ import { Box, VStack, HStack } from '../elements/LayoutPrimitives' -import { ShutdownBanner } from '../elements/ShutdownBanner' import { OmnivoreNameLogo } from '../elements/images/OmnivoreNameLogo' import { theme } from '../tokens/stitches.config' import { GoogleReCaptchaProvider } from '@google-recaptcha/react' diff --git a/packages/web/components/templates/LoginLayout.tsx b/packages/web/components/templates/LoginLayout.tsx index 7c27b390d..468de5777 100644 --- a/packages/web/components/templates/LoginLayout.tsx +++ b/packages/web/components/templates/LoginLayout.tsx @@ -10,12 +10,10 @@ import type { LoginFormProps } from './LoginForm' import { OmnivoreNameLogo } from '../elements/images/OmnivoreNameLogo' import featureFullWidthImage from '../../public/static/images/login/login-feature-image-full.png' -import { ShutdownBanner } from '../elements/ShutdownBanner' export function LoginLayout(props: LoginFormProps): JSX.Element { return ( <> - } largerLayoutNode={} diff --git a/packages/web/components/templates/NavigationLayout.tsx b/packages/web/components/templates/NavigationLayout.tsx index d5bbbf4a2..df5c1a4e4 100644 --- a/packages/web/components/templates/NavigationLayout.tsx +++ b/packages/web/components/templates/NavigationLayout.tsx @@ -21,9 +21,6 @@ import useWindowDimensions from '../../lib/hooks/useGetWindowDimensions' import { useHandleAddUrl } from '../../lib/hooks/useHandleAddUrl' import { useGetViewer } from '../../lib/networking/viewer/useGetViewer' import { useQueryClient } from '@tanstack/react-query' -import { usePersistedState } from '../../lib/hooks/usePersistedState' -import { CloseButton } from '../elements/CloseButton' -import { ShutdownBanner } from '../elements/ShutdownBanner' export type NavigationSection = | 'home' @@ -207,7 +204,6 @@ const Header = (props: HeaderProps): JSX.Element => { height: '58px', }} > -