Просмотр исходного кода

Merge pull request #22256 from overleaf/revert-22239-jpa-file-url-helper

Revert "[web] add helper for getting file URL from history w/ filestore fallback"

GitOrigin-RevId: 3feecb5291f574de058b51efd5c799e07d5ec851
Thomas 1 год назад
Родитель
Сommit
85f4966d49

+ 0 - 19
services/web/app/src/Features/History/HistoryURLHelper.js

@@ -1,19 +0,0 @@
-// Pass settings to enable consistent unit tests from .js and .mjs modules
-function projectHistoryURLWithFilestoreFallback(
-  Settings,
-  projectId,
-  historyId,
-  fileRef
-) {
-  const filestoreURL = `${Settings.apis.filestore.url}/project/${projectId}/file/${fileRef._id}`
-  if (fileRef.hash) {
-    return {
-      url: `${Settings.apis.project_history.url}/project/${historyId}/blob/${fileRef.hash}`,
-      fallbackURL: filestoreURL,
-    }
-  } else {
-    return { url: filestoreURL }
-  }
-}
-
-module.exports = { projectHistoryURLWithFilestoreFallback }

+ 13 - 7
services/web/app/src/Features/References/ReferencesHandler.mjs

@@ -24,7 +24,6 @@ import _ from 'lodash'
 import Async from 'async'
 import Errors from '../Errors/Errors.js'
 import { promisify } from '@overleaf/promise-utils'
-import HistoryURLHelper from '../History/HistoryURLHelper.js'
 
 let ReferencesHandler
 
@@ -39,6 +38,18 @@ export default ReferencesHandler = {
     }
   },
 
+  _buildFileUrl(projectId, historyId, fileRef) {
+    const filestoreURL = `${settings.apis.filestore.url}/project/${projectId}/file/${fileRef._id}`
+    if (fileRef.hash) {
+      return {
+        url: `${settings.apis.project_history.url}/project/${historyId}/blob/${fileRef.hash}`,
+        fallbackURL: filestoreURL,
+      }
+    } else {
+      return { url: filestoreURL }
+    }
+  },
+
   _findBibFileRefs(project) {
     const fileRefs = []
     function _process(folder) {
@@ -168,12 +179,7 @@ export default ReferencesHandler = {
             ReferencesHandler._buildDocUrl(projectId, docId)
           )
           const bibFileUrls = fileRefs.map(fileRef =>
-            HistoryURLHelper.projectHistoryURLWithFilestoreFallback(
-              settings,
-              projectId,
-              historyId,
-              fileRef
-            )
+            ReferencesHandler._buildFileUrl(projectId, historyId, fileRef)
           )
           const sourceURLs = bibDocUrls.concat(bibFileUrls)
           return request.post(

+ 8 - 10
services/web/app/src/Features/ThirdPartyDataStore/TpdsUpdateSender.js

@@ -6,7 +6,6 @@ const metrics = require('@overleaf/metrics')
 const Path = require('path')
 const { fetchNothing } = require('@overleaf/fetch-utils')
 const settings = require('@overleaf/settings')
-const HistoryURLHelper = require('../History/HistoryURLHelper')
 
 const CollaboratorsGetter =
   require('../Collaborators/CollaboratorsGetter').promises
@@ -82,13 +81,12 @@ async function addFile(params) {
     folderId,
   } = params
   // Go through project-history to avoid the need for handling history-v1 authentication.
-  const { url, fallbackURL } =
-    HistoryURLHelper.projectHistoryURLWithFilestoreFallback(
-      settings,
-      projectId,
-      historyId,
-      { _id: fileId, hash }
-    )
+  const streamOrigin =
+    settings.apis.project_history.url +
+    Path.join(`/project/${historyId}/blob/${hash}`)
+  const streamFallback =
+    settings.apis.filestore.url +
+    Path.join(`/project/${projectId}`, `/file/${fileId}`)
 
   await addEntity({
     projectId,
@@ -96,8 +94,8 @@ async function addFile(params) {
     projectName,
     rev,
     folderId,
-    streamOrigin: url,
-    streamFallback: fallbackURL,
+    streamOrigin,
+    streamFallback,
     entityId: fileId,
     entityType: 'file',
   })

+ 0 - 53
services/web/test/unit/src/ThirdPartyDataStore/TpdsUpdateSenderTests.js

@@ -116,59 +116,6 @@ describe('TpdsUpdateSender', function () {
     })
 
     it('queues a post the file with user and file id', async function () {
-      const fileId = '4545345'
-      const hash = undefined
-      const historyId = 91525
-      const path = '/some/path/here.jpg'
-
-      await this.TpdsUpdateSender.promises.addFile({
-        projectId,
-        historyId,
-        fileId,
-        hash,
-        path,
-        projectName,
-      })
-
-      expect(this.FetchUtils.fetchNothing).to.have.been.calledWithMatch(
-        this.enqueueUrl,
-        {
-          json: {
-            group: userId,
-            method: 'pipeStreamFrom',
-            job: {
-              method: 'post',
-              streamOrigin: `${filestoreUrl}/project/${projectId}/file/${fileId}`,
-              uri: `${thirdPartyDataStoreApiUrl}/user/${userId}/entity/${encodeURIComponent(
-                projectName
-              )}${encodeURIComponent(path)}`,
-              headers: {},
-            },
-          },
-        }
-      )
-
-      expect(this.FetchUtils.fetchNothing).to.have.been.calledWithMatch(
-        this.enqueueUrl,
-        {
-          json: {
-            group: collaberatorRef,
-          },
-        }
-      )
-
-      expect(this.FetchUtils.fetchNothing).to.have.been.calledWithMatch(
-        this.enqueueUrl,
-        {
-          json: {
-            group: readOnlyRef,
-            job: {},
-          },
-        }
-      )
-    })
-
-    it('queues a post the file with user and file id and hash', async function () {
       const fileId = '4545345'
       const hash = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
       const historyId = 91525