@@ -34,27 +34,31 @@ export class CodeServerRouteWrapper {
34
34
35
35
// Ew means the workspace was closed so clear the last folder/workspace.
36
36
const { query } = await settings . read ( )
37
- if ( req . query . ew ) {
38
- delete query . folder
39
- delete query . workspace
40
- }
37
+ if ( query ) {
38
+ if ( req . query . ew ) {
39
+ delete query . folder
40
+ delete query . workspace
41
+ }
41
42
42
- // Redirect to the last folder/workspace if nothing else is opened.
43
- if (
44
- ! req . query . folder &&
45
- ! req . query . workspace &&
46
- ( query . folder || query . workspace ) &&
47
- ! req . args [ "ignore-last-opened" ] // This flag disables this behavior.
48
- ) {
49
- return redirect ( req , res , "" , {
50
- folder : query . folder ,
51
- workspace : query . workspace ,
52
- } )
43
+ // Redirect to the last folder/workspace if nothing else is opened.
44
+ if (
45
+ ! req . query . folder &&
46
+ ! req . query . workspace &&
47
+ ( query . folder || query . workspace ) &&
48
+ ! req . args [ "ignore-last-opened" ] // This flag disables this behavior.
49
+ ) {
50
+ // Redirect to the same page but with the query parameters attached
51
+ // (preserving the trailing slash if any).
52
+ return redirect ( req , res , req . baseUrl + ( req . originalUrl . endsWith ( "/" ) ? "/" : "" ) , {
53
+ folder : query . folder ,
54
+ workspace : query . workspace ,
55
+ } )
56
+ }
53
57
}
54
58
55
59
// Store the query parameters so we can use them on the next load. This
56
60
// also allows users to create functionality around query parameters.
57
- settings . write ( { query : req . query } )
61
+ await settings . write ( { query : req . query } )
58
62
59
63
next ( )
60
64
}
0 commit comments