1
- import React , { useEffect } from "react" ;
1
+ import React , { useEffect , useState } from "react" ;
2
2
3
+ import { RecordingTarget , getRecordingTarget } from "replay-next/src/suspense/BuildIdCache" ;
3
4
import LoadingScreen from "ui/components/shared/LoadingScreen" ;
4
5
import { BlankViewportWrapper } from "ui/components/shared/Viewport" ;
5
6
import UploadScreen from "ui/components/UploadScreen" ;
6
- import { useGetRecording , useGetRecordingId } from "ui/hooks/recordings" ;
7
+ import { useGetRecording , useGetRecordingId , useInitializeRecording } from "ui/hooks/recordings" ;
7
8
import { useGetUserSettings } from "ui/hooks/settings" ;
8
9
import { useGetNonPendingWorkspaces } from "ui/hooks/workspaces" ;
9
10
@@ -12,15 +13,44 @@ function UploadScreenWrapper({ onUpload }: { onUpload: () => void }) {
12
13
const { recording } = useGetRecording ( recordingId ) ;
13
14
// Make sure to get the user's settings and workspaces before showing the upload screen.
14
15
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 ) ;
16
19
17
20
useEffect ( ( ) => {
18
21
if ( recording ?. isInitialized ) {
19
22
window . onbeforeunload = null ;
20
23
}
21
24
} ) ;
22
25
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 ) {
24
54
return < LoadingScreen message = "Loading..." /> ;
25
55
}
26
56
0 commit comments