@@ -26,6 +26,7 @@ interface ProjectContextValue {
2626 projectList : ProjectList | null ;
2727 newStoredProject : ( ) => Promise < NewStoredDoc > ;
2828 restoreStoredProject : ( id : string ) => Promise < RestoredStoredDoc > ;
29+ restoreMostRecentProject : ( ) => Promise < RestoredStoredDoc | null > ;
2930 deleteProject : ( id : string ) => Promise < void > ;
3031 ydoc : Y . Doc | null ;
3132 awareness : Awareness | null ;
@@ -44,6 +45,7 @@ export function ProjectStorageProvider({
4445 const [ projectStore , setProjectStoreImpl ] = useState < ProjectStore | null > (
4546 null
4647 ) ;
48+
4749 const setProjectStore = ( newProjectStore : ProjectStore ) => {
4850 if ( projectStore ) {
4951 projectStore . destroy ( ) ;
@@ -69,6 +71,18 @@ export function ProjectStorageProvider({
6971 [ projectList ]
7072 ) ;
7173
74+ const restoreMostRecentProject : ( ) => Promise < RestoredStoredDoc | null > =
75+ useCallback ( async ( ) => {
76+ let localProjectList = projectList ;
77+ if ( ! localProjectList ) {
78+ localProjectList = await refreshProjects ( ) ;
79+ }
80+ if ( ! localProjectList || localProjectList . length === 0 ) {
81+ return null ;
82+ }
83+ return restoreStoredProject ( localProjectList [ 0 ] . id ) ;
84+ } , [ restoreStoredProject , projectList ] ) ;
85+
7286 const newStoredProject : ( ) => Promise < NewStoredDoc > =
7387 useCallback ( async ( ) => {
7488 const newProjectId = makeUID ( ) ;
@@ -106,13 +120,14 @@ export function ProjectStorageProvider({
106120
107121 const refreshProjects = async ( ) => {
108122 const projectList = await withProjectDb ( "readonly" , async ( store ) => {
109- const projectList = await new Promise ( ( res , rej ) => {
123+ const projectList = await new Promise < ProjectList > ( ( res , rej ) => {
110124 const query = store . index ( "modifiedDate" ) . getAll ( ) ;
111125 query . onsuccess = ( ) => res ( query . result ) ;
112126 } ) ;
113127 return projectList ;
114128 } ) ;
115- setProjectList ( ( projectList as ProjectList ) . reverse ( ) ) ;
129+ setProjectList ( projectList . reverse ( ) ) ;
130+ return projectList ;
116131 } ;
117132
118133 useEffect ( ( ) => {
@@ -176,6 +191,7 @@ export function ProjectStorageProvider({
176191 getFile,
177192 newStoredProject,
178193 restoreStoredProject,
194+ restoreMostRecentProject,
179195 deleteProject,
180196 setProjectName,
181197 } }
0 commit comments