2023-04-29 18:05:31 +00:00
const log = require ( "./sub-log" )
2023-04-29 17:03:19 +00:00
const { BrowserWindow , app , ipcMain } = require ( "electron" )
2023-04-29 16:19:45 +00:00
const https = require ( 'https' ) ;
const fs = require ( 'fs' ) ;
2023-04-29 17:03:19 +00:00
const fse = require ( 'fs-extra' ) ;
2023-04-29 16:19:45 +00:00
const BWin = BrowserWindow
const path = require ( "path" )
const decompress = require ( 'decompress' ) ;
2023-05-04 15:46:02 +00:00
function getSettings ( ) {
2023-05-02 18:52:28 +00:00
2023-05-04 15:46:02 +00:00
var settings = { }
settings . canaldev = null
2023-05-02 18:52:28 +00:00
2023-05-04 15:46:02 +00:00
if ( fs . existsSync ( _ _dirname + path . sep + "settings.json" ) ) {
settings = JSON . parse ( fs . readFileSync ( _ _dirname + path . sep + "settings.json" ) )
}
2023-05-02 18:52:28 +00:00
2023-05-04 15:46:02 +00:00
return settings
}
2023-05-02 18:52:28 +00:00
2023-04-29 16:19:45 +00:00
module . exports . checkUpdate = ( ) => {
2023-05-04 15:46:02 +00:00
var settings = getSettings ( )
2023-04-29 16:19:45 +00:00
log . update ( "Verification des mises a jour ... Processing !" )
2023-05-02 18:40:55 +00:00
if ( settings . canaldev == true ) {
fetch ( "https://git.raphix.fr/subsonics/manager/raw/branch/main/package.json" ) . catch ( err => catchError ( err ) ) . then ( resp => resp . json ( ) ) . then ( resp => checkUpdateProcessing ( resp ) )
} else {
fetch ( "https://git.raphix.fr/subsonics/manager/raw/branch/stable/package.json" ) . catch ( err => catchError ( err ) ) . then ( resp => resp . json ( ) ) . then ( resp => checkUpdateProcessing ( resp ) )
}
2023-04-29 16:19:45 +00:00
}
2023-05-01 21:55:21 +00:00
2023-04-29 16:19:45 +00:00
function checkUpdateProcessing ( serverPackage ) {
const clientPackage = require ( "./package" )
if ( serverPackage . version . replace ( "." , "" ) > clientPackage . version . replace ( "." , "" ) ) {
log . update ( "Verification des mises a jour ... Finish !" )
log . update ( "Mise a jour disponible ! Nouvelle version : " + serverPackage . version + " - Client : " + clientPackage . version + " - Git : " + serverPackage . version )
2023-05-01 21:55:21 +00:00
selfUpdate ( )
2023-04-29 16:19:45 +00:00
} else {
log . update ( "Verification des mises a jour ... Finish !" )
log . update ( "Cette version est la derniere version ! - Client : " + clientPackage . version + " - Git : " + serverPackage . version )
}
}
2023-05-01 21:55:21 +00:00
function selfUpdate ( ) {
2023-04-29 16:19:45 +00:00
2023-05-04 15:46:02 +00:00
var settings = getSettings ( )
2023-04-29 16:19:45 +00:00
const win = BWin . getFocusedWindow ( )
2023-05-02 18:40:55 +00:00
var link = "https://git.raphix.fr/subsonics/manager/archive/stable.tar.gz"
if ( settings . canaldev == true ) {
link = "https://git.raphix.fr/subsonics/manager/archive/main.tar.gz"
}
2023-04-29 16:19:45 +00:00
win . loadFile ( "templates/update/update.html" )
2023-04-29 17:03:19 +00:00
ipcMain . on ( "close" , ( ) => {
app . quit ( )
} )
2023-04-29 18:05:31 +00:00
log . update ( "Telechargement de la mise a jour ... Processing !" )
2023-04-29 16:19:45 +00:00
if ( fs . existsSync ( _ _dirname + path . sep + "update.tar.gz" ) ) {
2023-04-29 21:23:37 +00:00
fs . rmSync ( _ _dirname + path . sep + "update.tar.gz" )
2023-04-29 16:19:45 +00:00
}
const updatePack = fs . createWriteStream ( _ _dirname + path . sep + "update.tar.gz" ) ;
2023-05-02 18:40:55 +00:00
const request = https . get ( link , function ( response ) {
2023-04-29 17:03:19 +00:00
response . pipe ( updatePack ) ;
2023-04-29 16:19:45 +00:00
// after download completed close filestream
updatePack . on ( "finish" , ( ) => {
updatePack . close ( ) ;
2023-04-29 18:05:31 +00:00
log . update ( "Telechargement de la mise a jour ... Finish !" )
2023-04-29 16:19:45 +00:00
install ( _ _dirname + path . sep + "update.tar.gz" )
} ) ;
2023-04-29 17:03:19 +00:00
updatePack . on ( "error" , ( err ) => {
2023-04-29 18:05:31 +00:00
log . update ( "Erreur lors du telechargement de la mise a jour !" )
2023-04-29 17:03:19 +00:00
updatePack . close ( ) ;
console . log ( err )
} )
2023-04-29 16:19:45 +00:00
} ) ;
2023-05-01 21:55:21 +00:00
}
2023-04-29 16:19:45 +00:00
2023-05-01 21:55:21 +00:00
module . exports . update = ( ) => {
selfUpdate ( )
2023-04-29 16:19:45 +00:00
}
function install ( filename ) {
2023-04-29 17:03:19 +00:00
2023-04-29 18:05:31 +00:00
log . update ( "Extraction de la mise a jour ... Processing !" )
2023-04-29 17:03:19 +00:00
decompress ( filename , _ _dirname ) . then ( files => {
2023-04-29 18:05:31 +00:00
log . update ( "Extraction de la mise a jour ... Finish !" )
log . update ( "Installation de la mise a jour ... Processing !" )
2023-04-29 17:03:19 +00:00
fse . copy ( _ _dirname + path . sep + "manager" , _ _dirname , { overwrite : true } , ( ) => {
2023-04-29 17:36:06 +00:00
fs . rm ( filename , ( ) => {
fs . rm ( _ _dirname + path . sep + "manager" , { recursive : true , force : true } , ( err ) => {
if ( err ) {
console . log ( err )
}
2023-04-29 18:05:31 +00:00
log . update ( "Installation de la mise a jour ... Finish !" )
log . update ( "Redemarrage de l'application." )
2023-04-29 17:36:06 +00:00
app . relaunch ( )
app . exit ( )
} )
2023-04-29 17:29:33 +00:00
} )
2023-04-29 17:03:19 +00:00
} )
} ) . catch ( err => catchError ( err , true ) ) ;
}
function catchError ( err , inUp ) {
log . update ( "Erreur lors de la verification des mises a jour !" )
log . update ( err )
if ( inUp == true ) {
win . webContents . send ( "error" )
}
2023-04-29 16:19:45 +00:00
}