@@ -15,15 +15,10 @@ const vscode = acquireVsCodeApi();
15
15
let frontendBaseUrl : string ;
16
16
17
17
function relayToFrontend ( document : Document , message : MessageType ) {
18
- const iframe : HTMLIFrameElement = document . getElementById (
18
+ const iframe = document . getElementById (
19
19
FRONTEND_ELEMENT_ID ,
20
- ) as HTMLIFrameElement ;
21
- const contentWindow = iframe . contentWindow ;
22
- if ( ! contentWindow ) {
23
- return ;
24
- }
25
- // TODO: Don't hardcode this!
26
- contentWindow . postMessage ( message , frontendBaseUrl ) ;
20
+ ) as HTMLIFrameElement | null ;
21
+ iframe ?. contentWindow ?. postMessage ( message , frontendBaseUrl ) ;
27
22
}
28
23
29
24
function relayToExtension ( message : MessageType ) {
@@ -82,15 +77,18 @@ const SourceAcademy: React.FC = () => {
82
77
) {
83
78
return ;
84
79
}
85
- console . log ( "[Webview] MCQ choice selected" , {
80
+ console . log ( "[MCQPanel] choice selected" , {
86
81
workspaceLocation,
87
82
assessmentName,
88
83
questionId,
89
84
choice,
90
85
} ) ;
91
86
// Persist answer for future sessions
92
87
try {
93
- localStorage . setItem ( `mcq_${ assessmentName } _${ questionId } ` , String ( choice ) ) ;
88
+ localStorage . setItem (
89
+ `mcq_${ assessmentName } _${ questionId } ` ,
90
+ String ( choice ) ,
91
+ ) ;
94
92
} catch ( e ) {
95
93
console . warn ( "[Webview] Failed to save MCQ answer to localStorage" , e ) ;
96
94
}
@@ -101,27 +99,28 @@ const SourceAcademy: React.FC = () => {
101
99
questionId ,
102
100
choice ,
103
101
) ;
104
- // Relay directly to the embedded frontend iframe
105
- relayToFrontend ( document , message ) ;
102
+ vscode . postMessage ( message ) ;
106
103
} ;
107
104
108
105
document . addEventListener ( "change" , handleChoiceChange ) ;
109
106
110
- // Upon mount, restore any saved answers and pre-select radios
111
- const restore = ( ) => {
112
- document . querySelectorAll < HTMLInputElement > ( 'input[name="mcq-choice"]' ) . forEach ( ( el ) => {
113
- const qid = el . dataset . qid ;
114
- const assess = el . dataset . assessment ;
115
- if ( ! qid || ! assess ) return ;
116
- const stored = localStorage . getItem ( `mcq_${ assess } _${ qid } ` ) ;
117
- if ( stored !== null && stored === el . dataset . choice ) {
118
- el . checked = true ;
119
- }
120
- } ) ;
121
- } ;
122
- restore ( ) ;
107
+ // Upon mount, restore any saved answers and pre-select radios
108
+ const restore = ( ) => {
109
+ document
110
+ . querySelectorAll < HTMLInputElement > ( 'input[name="mcq-choice"]' )
111
+ . forEach ( ( el ) => {
112
+ const qid = el . dataset . qid ;
113
+ const assess = el . dataset . assessment ;
114
+ if ( ! qid || ! assess ) return ;
115
+ const stored = localStorage . getItem ( `mcq_${ assess } _${ qid } ` ) ;
116
+ if ( stored !== null && stored === el . dataset . choice ) {
117
+ el . checked = true ;
118
+ }
119
+ } ) ;
120
+ } ;
121
+ restore ( ) ;
123
122
124
- return ( ) => document . removeEventListener ( "change" , handleChoiceChange ) ;
123
+ return ( ) => document . removeEventListener ( "change" , handleChoiceChange ) ;
125
124
} , [ ] ) ;
126
125
127
126
return < > </ > ;
0 commit comments