Skip to content

Commit 27743e5

Browse files
authored
Only show the Request Access button when the user is logged in (#5054)
* only show request access when the user is logged in * no optional * clean up comparison * update props
1 parent 9d18f0c commit 27743e5

File tree

4 files changed

+20
-28
lines changed

4 files changed

+20
-28
lines changed

editor/src/components/editor/persistence/persistence.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ export class PersistenceMachine {
4747
backendAPI: PersistenceBackendAPI<PersistentModel, ProjectFile>,
4848
dispatch: EditorDispatch,
4949
onProjectNotFound: () => void,
50-
onProjectNotAuthorized: (projectId: string) => void,
50+
onProjectNotAuthorized: (projectId: string, loggedIn: boolean) => void,
5151
onCreatedOrLoadedProject: (
5252
projectId: string,
5353
projectName: string,
@@ -87,7 +87,7 @@ export class PersistenceMachine {
8787
onProjectNotFound()
8888
break
8989
case 'LOAD_FAILED_NOT_AUTHORIZED':
90-
onProjectNotAuthorized(event.projectId)
90+
onProjectNotAuthorized(event.projectId, state.context.loggedIn)
9191
break
9292
case 'DOWNLOAD_ASSETS_COMPLETE': {
9393
if (state.matches({ core: { [Forking]: CreatingProjectId } })) {

editor/src/templates/editor.tsx

+6-20
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,8 @@ import {
3232
startPreviewConnectedMonitoring,
3333
} from '../components/editor/preview-report-handler'
3434
import {
35-
downloadGithubRepo,
3635
getLoginState,
3736
getUserConfiguration,
38-
isRequestFailure,
3937
startPollingLoginState,
4038
} from '../components/editor/server'
4139
import {
@@ -82,12 +80,7 @@ import {
8280
ElementsToRerenderGLOBAL,
8381
} from '../components/canvas/ui-jsx-canvas'
8482
import { foldEither } from '../core/shared/either'
85-
import {
86-
getURLImportDetails,
87-
importZippedGitProject,
88-
isProjectImportSuccess,
89-
reuploadAssets,
90-
} from '../core/model/project-import'
83+
import { getURLImportDetails, reuploadAssets } from '../core/model/project-import'
9184
import { isSendPreviewModel, load } from '../components/editor/actions/actions'
9285
import { UtopiaStyles } from '../uuiui'
9386
import { reduxDevtoolsSendInitialState } from '../core/shared/redux-devtools'
@@ -111,10 +104,7 @@ import { waitUntil } from '../core/shared/promise-utils'
111104
import { sendSetVSCodeTheme } from '../core/vscode/vscode-bridge'
112105
import type { ElementPath } from '../core/shared/project-file-types'
113106
import { uniqBy } from '../core/shared/array-utils'
114-
import {
115-
startGithubPolling,
116-
updateUserDetailsWhenAuthenticated,
117-
} from '../core/shared/github/helpers'
107+
import { updateUserDetailsWhenAuthenticated } from '../core/shared/github/helpers'
118108
import { DispatchContext } from '../components/editor/store/dispatch-context'
119109
import {
120110
logSelectorTimings,
@@ -124,11 +114,7 @@ import { createPerformanceMeasure } from '../components/editor/store/editor-disp
124114
import { runDomWalkerAndSaveResults } from '../components/canvas/editor-dispatch-flow'
125115
import { simpleStringifyActions } from '../components/editor/actions/action-utils'
126116
import { unpatchedCreateRemixDerivedDataMemo } from '../components/editor/store/remix-derived-data'
127-
import {
128-
emptyProjectServerState,
129-
ProjectServerState,
130-
ProjectServerStateUpdater,
131-
} from '../components/editor/store/project-server-state'
117+
import { emptyProjectServerState } from '../components/editor/store/project-server-state'
132118
import { GithubOperations } from '../core/shared/github/operations'
133119
import { GithubAuth } from '../utils/github-auth'
134120
import { Provider as JotaiProvider } from 'jotai'
@@ -824,14 +810,14 @@ async function renderProjectNotFound(): Promise<void> {
824810
const rootElement = document.getElementById(EditorID)
825811
if (rootElement != null) {
826812
const root = createRoot(rootElement)
827-
root.render(<ProjectNotFound />)
813+
root.render(<ProjectNotFound projectId={null} loggedIn={false} />)
828814
}
829815
}
830816

831-
async function renderProjectNotAuthorized(projectId: string): Promise<void> {
817+
async function renderProjectNotAuthorized(projectId: string, loggedIn: boolean): Promise<void> {
832818
const rootElement = document.getElementById(EditorID)
833819
if (rootElement != null) {
834820
const root = createRoot(rootElement)
835-
root.render(<ProjectNotFound projectId={projectId} />)
821+
root.render(<ProjectNotFound projectId={projectId} loggedIn={loggedIn} />)
836822
}
837823
}

editor/src/templates/project-not-found/ProjectNotFound.tsx

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
/** @jsxRuntime classic */
22
/** @jsx jsx */
3-
import React from 'react'
43
import { jsx } from '@emotion/react'
5-
import { Button } from '../../uuiui/button'
4+
import React from 'react'
65
import { UTOPIA_BACKEND_BASE_URL } from '../../common/env-vars'
7-
import { when } from '../../utils/react-conditionals'
86
import { requestProjectAccess } from '../../components/editor/server'
7+
import { when } from '../../utils/react-conditionals'
8+
import { Button } from '../../uuiui/button'
99

1010
const PyramidLight404 = `${process.env.UTOPIA_DOMAIN}/editor/404_pyramid_light.png?hash=${process.env.UTOPIA_SHA}`
1111

12-
export default function ProjectNotFound({ projectId }: { projectId?: string }) {
12+
export default function ProjectNotFound({
13+
projectId,
14+
loggedIn,
15+
}: {
16+
projectId: string | null
17+
loggedIn: boolean
18+
}) {
1319
const [accessRequested, setAccessRequested] = React.useState(false)
1420
const requestAccess = React.useCallback(async () => {
1521
if (projectId != null) {
@@ -63,7 +69,7 @@ export default function ProjectNotFound({ projectId }: { projectId?: string }) {
6369
<ActionButton text='Return Home' />
6470
</a>
6571
{when(
66-
projectId != null,
72+
projectId != null && loggedIn,
6773
<ActionButton
6874
text={accessRequested ? 'Access Requested' : 'Request Access'}
6975
onClick={requestAccess}

editor/src/templates/project-not-found/not-found-entry-point.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ import { EditorID } from '../../core/shared/utils'
66
const rootElement = document.getElementById(EditorID)
77
if (rootElement != null) {
88
const root = createRoot(rootElement)
9-
root.render(<ProjectNotFound />)
9+
root.render(<ProjectNotFound projectId={null} loggedIn={false} />)
1010
}

0 commit comments

Comments
 (0)