@@ -247,74 +247,54 @@ export async function setupDownloadButton() {
247
247
const downloadParent = document . getElementById ( "downloads" ) ;
248
248
const currentArch = getCurrentArch ( ) ;
249
249
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 ) ) {
314
251
setElemProperty (
315
252
"downloads" ,
316
253
"innerHTML" ,
317
254
"Sorry Moosync is not available for your platform yet" ,
318
255
) ;
256
+ return ;
319
257
}
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
+ } ) ;
320
300
}
0 commit comments