@@ -2,11 +2,12 @@ import { readTextFile, BaseDirectory, writeTextFile } from '@tauri-apps/api/fs'
2
2
import { getClient , ResponseType } from '@tauri-apps/api/http'
3
3
import { appConfigDir , join } from '@tauri-apps/api/path'
4
4
import { invoke , convertFileSrc } from '@tauri-apps/api/tauri'
5
- import { createSignal } from 'solid-js'
6
5
import { download } from 'tauri-plugin-upload-api'
7
- import { RESTStatus } from '@src/store/api/restAPI '
6
+ import { addNotification , ENotificationType , ENotificationAction } from '@hooks/notifications '
8
7
import { setFirmwareAssets , setGHRestStatus , setFirmwareVersion } from '@store/api/ghAPI'
8
+ import { RESTStatus } from '@store/api/restAPI'
9
9
import { ghRESTEndpoint , firmwareAssets , firmwareVersion } from '@store/api/selectors'
10
+ import { setProgressBar } from '@store/ui/ui'
10
11
11
12
interface IGHRelease {
12
13
data : object
@@ -35,19 +36,38 @@ const getRelease = async (firmware: string) => {
35
36
36
37
if ( firmwareAsset ) {
37
38
console . log ( '[Github Release]: Downloading firmware: ' , firmware )
39
+ console . log ( '[Github Release]: Firmware URL: ' , firmwareAsset )
38
40
39
41
// parse out the file name from the firmwareAsset.url and append it to the appConfigDirPath
40
- const fileName = firmwareAsset . url . split ( '/' ) [ firmwareAsset . url . split ( '/' ) . length - 1 ]
42
+ const fileName =
43
+ firmwareAsset . browser_download_url . split ( '/' ) [
44
+ firmwareAsset . browser_download_url . split ( '/' ) . length - 1
45
+ ]
41
46
//console.log('[Github Release]: File Name: ', fileName)
42
47
// ${appConfigDirPath}${fileName}
43
48
const path = await join ( appConfigDirPath , fileName )
44
49
console . log ( '[Github Release]: Path: ' , path )
45
50
// get the latest release
46
51
const response = await download (
47
- firmwareAsset . url ,
52
+ firmwareAsset . browser_download_url ,
48
53
path ,
49
- ( progress , total ) =>
50
- console . log ( `[Github Release]: Downloaded ${ progress } of ${ total } bytes` ) , // a callback that will be called with the upload progress
54
+ ( progress , total ) => {
55
+ // UI store set prgoress bar to true and set progress
56
+ const download_percent = Math . round ( ( progress / total ) * 100 )
57
+ setProgressBar ( download_percent , `Downloading Firmware ${ firmware } ` , true )
58
+ console . log ( `[Github Release]: Downloaded ${ progress } of ${ total } bytes` )
59
+ } ,
60
+ )
61
+ setProgressBar ( 0 , '' , false )
62
+ console . log ( '[Github Release]: Download Response: ' , response )
63
+
64
+ addNotification (
65
+ {
66
+ title : 'ETVR Firmware Downloaded' ,
67
+ message : `Downloaded Firmware ${ firmware } ` ,
68
+ type : ENotificationType . INFO ,
69
+ } ,
70
+ ENotificationAction . OS ,
51
71
)
52
72
53
73
const res = await invoke ( 'unzip_archive' , {
@@ -95,7 +115,6 @@ const getRelease = async (firmware: string) => {
95
115
console . log ( '[Github Release]: Manifest: ' , config_json )
96
116
return
97
117
}
98
- return response
99
118
}
100
119
}
101
120
@@ -105,47 +124,41 @@ const getRelease = async (firmware: string) => {
105
124
* @returns {function } downloadAsset - The function that will download the asset from the github release endpoint
106
125
*/
107
126
export const useGHRelease = ( ) => {
108
- const [ data , setData ] = createSignal ( { } )
109
127
const downloadAsset = async ( firmware : string ) => {
110
128
const response = await getRelease ( firmware )
111
-
112
- if ( typeof response === 'string' ) {
113
- setGHRestStatus ( RESTStatus . ACTIVE )
114
- const parsedResponse = JSON . parse ( response )
115
- setData ( ( prevData ) => ( {
116
- ...prevData ,
117
- ...parsedResponse ,
118
- } ) )
119
- }
129
+ console . log ( '[Github Release]: Download Response: ' , response )
120
130
}
121
-
122
- return { data, downloadAsset }
131
+ return downloadAsset
123
132
}
124
133
125
134
const setGHData = ( data : IGHRelease , update : boolean ) => {
126
135
setFirmwareVersion ( data [ 'name' ] )
127
136
const assets = data [ 'assets' ]
128
137
const download_urls = assets . map ( ( asset ) => asset . browser_download_url )
138
+
129
139
const firmware_assets = assets . map ( ( asset ) => asset . name )
130
140
131
141
// split the firmware_assets array of strings on the first dash and return the first element of the array
132
142
const boardName = firmware_assets . map ( ( asset ) => asset . split ( '-' ) [ 0 ] )
133
143
134
144
// set the board name in the store
135
145
for ( let i = 0 ; i < boardName . length ; i ++ ) {
136
- setFirmwareAssets ( { name : boardName [ i ] , url : download_urls [ i ] } )
146
+ //console.log('[Github Release]: Board Name: ', boardName[i])
147
+ //console.log('[Github Release]: URLs: ', download_urls[i])
148
+ setFirmwareAssets ( { name : boardName [ i ] , browser_download_url : download_urls [ i ] } )
137
149
}
138
150
139
151
if ( update ) {
140
- // parse out the assets and the version from the ghRestState
141
- // write the config file
142
- const config = {
143
- version : firmwareVersion ( ) ,
144
- assets : firmwareAssets ( ) ,
145
- }
146
- writeTextFile ( 'config.json' , JSON . stringify ( config ) , {
147
- dir : BaseDirectory . AppConfig ,
148
- } )
152
+ writeTextFile (
153
+ 'config.json' ,
154
+ JSON . stringify ( {
155
+ version : firmwareVersion ( ) ,
156
+ assets : firmwareAssets ( ) ,
157
+ } ) ,
158
+ {
159
+ dir : BaseDirectory . AppConfig ,
160
+ } ,
161
+ )
149
162
. then ( ( ) => {
150
163
console . log (
151
164
update
0 commit comments