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

Only show upgrade message on timeout if not already premium

GitOrigin-RevId: 1378b0a98c6b511d63f2ce1192d3fdca16e8db26
This commit is contained in:
Alf Eaton 2021-05-14 09:26:20 +01:00 committed by Copybot
parent 79f58598eb
commit 01c8a8a04d
3 changed files with 45 additions and 2 deletions

View file

@ -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}
</>

View file

@ -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,

View file

@ -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,