@@ -247,74 +247,54 @@ export async function setupDownloadButton() {
247247 const downloadParent = document . getElementById ( "downloads" ) ;
248248 const currentArch = getCurrentArch ( ) ;
249249
250- if ( os && os !== OSEnum . UNDEFINED ) {
251- const releases = await getReleaseInfo ( os , currentArch ) ;
252- const osReadable = getReaderFriendlyName ( os ) ;
253-
254- if ( releases . length === 1 ) {
255- const release = releases [ 0 ] ;
256- const buttonTemplate = document . getElementById (
257- "download-template-single" ,
258- ) . content ;
259- const clone = buttonTemplate . cloneNode ( true ) ;
260- const button = clone . getElementById ( "download-button" ) ;
261-
262- button . title = button . title . replace ( "${os}" , osReadable ) ;
263- button . innerHTML = button . innerHTML . replace (
264- "${version}" ,
265- `${ release . version } ` ,
266- ) ;
267- button . id = `${ release . version } ${ release . ext } ` ;
268-
269- clone . getElementById ( "download-icon" ) . classList . add ( getIconClass ( os ) ) ;
270- callElemMethod (
271- "downloads" ,
272- "appendChild" ,
273- document . importNode ( clone , true ) ,
274- ) ;
275-
276- document . getElementById ( `${ release . version } ${ release . ext } ` ) . onclick =
277- ( ) => window . open ( release . url ) ;
278- }
279-
280- if ( releases . length > 1 ) {
281- const buttonTemplate = document . getElementById (
282- "download-template-multi" ,
283- ) . content ;
284- const clone = buttonTemplate . cloneNode ( true ) ;
285-
286- const downloadText = clone . getElementById ( "download-text" ) ;
287- downloadText . innerHTML = downloadText . innerHTML
288- . replace ( "${version}" , releases [ 0 ] . version )
289- . replace ( "${os}" , osReadable ) ;
290-
291- callElemMethod (
292- "downloads" ,
293- "appendChild" ,
294- document . importNode ( clone , true ) ,
295- ) ;
296- const optionsContainer = document . getElementById ( "options-container" ) ;
297-
298- for ( const release of releases ) {
299- const optionDiv = document . createElement ( "div" ) ;
300- optionDiv . classList . add ( "option" ) ;
301- optionDiv . innerHTML = `${ getSanitizedName ( release ) } ` ;
302- optionsContainer . appendChild ( optionDiv ) ;
303-
304- optionDiv . onclick = ( ) => window . open ( release . url ) ;
305- }
306-
307- const selected = document . querySelector ( ".selected" ) ;
308-
309- selected . addEventListener ( "click" , ( ) => {
310- optionsContainer . classList . toggle ( "options__active" ) ;
311- } ) ;
312- }
313- } else {
250+ if ( ! ( os && os !== OSEnum . UNDEFINED ) ) {
314251 setElemProperty (
315252 "downloads" ,
316253 "innerHTML" ,
317254 "Sorry Moosync is not available for your platform yet" ,
318255 ) ;
256+ return ;
319257 }
258+
259+ const releases = await getReleaseInfo ( os , currentArch ) ;
260+ const osReadable = getReaderFriendlyName ( os ) ;
261+
262+ if ( releases . length === 0 ) return ;
263+
264+ if ( releases . length === 1 ) {
265+ const release = releases [ 0 ] ;
266+ const clone = document . getElementById ( "download-template-single" ) . content . cloneNode ( true ) ;
267+ const button = clone . getElementById ( "download-button" ) ;
268+
269+ button . title = button . title . replace ( "${os}" , osReadable ) ;
270+ button . innerHTML = button . innerHTML . replace ( "${version}" , `${ release . version } ` ) ;
271+ button . id = `${ release . version } ${ release . ext } ` ;
272+ clone . getElementById ( "download-icon" ) . classList . add ( getIconClass ( os ) ) ;
273+
274+ callElemMethod ( "downloads" , "appendChild" , document . importNode ( clone , true ) ) ;
275+ document . getElementById ( button . id ) . onclick = ( ) => window . open ( release . url ) ;
276+ return ;
277+ }
278+
279+ // Multi-release UI
280+ const clone = document . getElementById ( "download-template-multi" ) . content . cloneNode ( true ) ;
281+ const downloadText = clone . getElementById ( "download-text" ) ;
282+ downloadText . innerHTML = downloadText . innerHTML
283+ . replace ( "${version}" , releases [ 0 ] . version )
284+ . replace ( "${os}" , osReadable ) ;
285+
286+ callElemMethod ( "downloads" , "appendChild" , document . importNode ( clone , true ) ) ;
287+ const optionsContainer = document . getElementById ( "options-container" ) ;
288+
289+ releases . forEach ( release => {
290+ const optionDiv = document . createElement ( "div" ) ;
291+ optionDiv . classList . add ( "option" ) ;
292+ optionDiv . innerHTML = getSanitizedName ( release ) ;
293+ optionDiv . onclick = ( ) => window . open ( release . url ) ;
294+ optionsContainer . appendChild ( optionDiv ) ;
295+ } ) ;
296+
297+ document . querySelector ( ".selected" ) . addEventListener ( "click" , ( ) => {
298+ optionsContainer . classList . toggle ( "options__active" ) ;
299+ } ) ;
320300}
0 commit comments