Skip to content

Commit aeea3bd

Browse files
authored
Bypass UploadScreen if the user has no workspaces (#10532)
1 parent 5e6cbbd commit aeea3bd

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

pages/upload.tsx

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import React, { useEffect } from "react";
1+
import React, { useEffect, useState } from "react";
22

3+
import { RecordingTarget, getRecordingTarget } from "replay-next/src/suspense/BuildIdCache";
34
import LoadingScreen from "ui/components/shared/LoadingScreen";
45
import { BlankViewportWrapper } from "ui/components/shared/Viewport";
56
import UploadScreen from "ui/components/UploadScreen";
6-
import { useGetRecording, useGetRecordingId } from "ui/hooks/recordings";
7+
import { useGetRecording, useGetRecordingId, useInitializeRecording } from "ui/hooks/recordings";
78
import { useGetUserSettings } from "ui/hooks/settings";
89
import { useGetNonPendingWorkspaces } from "ui/hooks/workspaces";
910

@@ -12,15 +13,44 @@ function UploadScreenWrapper({ onUpload }: { onUpload: () => void }) {
1213
const { recording } = useGetRecording(recordingId);
1314
// Make sure to get the user's settings and workspaces before showing the upload screen.
1415
const { userSettings, loading: userSettingsLoading } = useGetUserSettings();
15-
const { workspaces, loading: pendingWorkspacesLoading } = useGetNonPendingWorkspaces();
16+
const { workspaces, loading: workspacesLoading } = useGetNonPendingWorkspaces();
17+
const initializeRecording = useInitializeRecording();
18+
const [initializing, setInitializing] = useState(false);
1619

1720
useEffect(() => {
1821
if (recording?.isInitialized) {
1922
window.onbeforeunload = null;
2023
}
2124
});
2225

23-
if (userSettingsLoading || pendingWorkspacesLoading) {
26+
useEffect(() => {
27+
async function initialize() {
28+
await initializeRecording({
29+
variables: { recordingId, title: recording?.title || "Untitled", workspaceId: null },
30+
});
31+
onUpload();
32+
}
33+
if (
34+
recording?.isInitialized === false &&
35+
!initializing &&
36+
!workspacesLoading &&
37+
workspaces.length === 0 &&
38+
getRecordingTarget(recording.buildId ?? "unknown") !== RecordingTarget.gecko
39+
) {
40+
setInitializing(true);
41+
initialize();
42+
}
43+
}, [
44+
initializeRecording,
45+
initializing,
46+
onUpload,
47+
recording,
48+
recordingId,
49+
workspacesLoading,
50+
workspaces,
51+
]);
52+
53+
if (userSettingsLoading || workspacesLoading || initializing) {
2454
return <LoadingScreen message="Loading..." />;
2555
}
2656

0 commit comments

Comments
 (0)