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

Merge pull request #4025 from overleaf/ae-timeout-upgrade

Only show upgrade message on timeout if not already premium

GitOrigin-RevId: 1378b0a98c6b511d63f2ce1192d3fdca16e8db26
Alf Eaton 5 лет назад
Родитель
Сommit
01c8a8a04d

+ 2 - 2
services/web/frontend/js/features/preview/components/preview-error.js

@@ -8,7 +8,7 @@ import { useEditorContext } from '../../../shared/context/editor-context'
 import StartFreeTrialButton from '../../../shared/components/start-free-trial-button'
 
 function PreviewError({ name }) {
-  const { isProjectOwner } = useEditorContext({
+  const { hasPremiumCompile, isProjectOwner } = useEditorContext({
     isProjectOwner: PropTypes.bool,
   })
   const {
@@ -74,7 +74,7 @@ function PreviewError({ name }) {
         entryAriaLabel={t('compile_error_entry_description')}
         level="error"
       />
-      {name === 'timedout' && enableSubscriptions ? (
+      {name === 'timedout' && enableSubscriptions && !hasPremiumCompile ? (
         <TimeoutUpgradePrompt isProjectOwner={isProjectOwner} />
       ) : null}
     </>

+ 7 - 0
services/web/frontend/js/shared/context/editor-context.js

@@ -19,6 +19,7 @@ EditorContext.Provider.propTypes = {
       brandedMenu: PropTypes.string,
       submitBtnHtml: PropTypes.string,
     }),
+    hasPremiumCompile: PropTypes.bool,
     loading: PropTypes.bool,
     projectRootDocId: PropTypes.string,
     projectId: PropTypes.string.isRequired,
@@ -66,6 +67,11 @@ export function EditorProvider({ children, ide, settings }) {
     ide.$scope
   )
 
+  const [compileGroup] = useScopeValue(
+    'project.features.compileGroup',
+    ide.$scope
+  )
+
   const [rootFolder] = useScopeValue('rootFolder', ide.$scope)
 
   const renameProject = useCallback(
@@ -98,6 +104,7 @@ export function EditorProvider({ children, ide, settings }) {
 
   const editorContextValue = {
     cobranding,
+    hasPremiumCompile: compileGroup === 'priority',
     loading,
     projectId: window.project_id,
     projectRootDocId,

+ 36 - 0
services/web/frontend/stories/preview-logs-pane.stories.js

@@ -16,6 +16,9 @@ export const TimedOutError = args => {
         owner: {
           _id: window.user.id,
         },
+        features: {
+          compileGroup: 'standard',
+        },
       },
     },
   }
@@ -34,6 +37,39 @@ TimedOutError.args = {
   },
 }
 
+export const TimedOutErrorWithPriorityCompile = args => {
+  useFetchMock(fetchMock => {
+    fetchMock.post('express:/event/:key', 202)
+  })
+
+  const ide = {
+    $scope: {
+      $watch: () => () => null,
+      project: {
+        owner: {
+          _id: window.user.id,
+        },
+        features: {
+          compileGroup: 'priority',
+        },
+      },
+    },
+  }
+
+  return (
+    <ApplicationProvider>
+      <EditorProvider ide={ide} settings={{}}>
+        <PreviewLogsPane {...args} />
+      </EditorProvider>
+    </ApplicationProvider>
+  )
+}
+TimedOutErrorWithPriorityCompile.args = {
+  errors: {
+    timedout: {},
+  },
+}
+
 export default {
   title: 'Preview Logs / Pane',
   component: PreviewLogsPane,