163 lines
No EOL
5.6 KiB
JavaScript
163 lines
No EOL
5.6 KiB
JavaScript
const {app, protocol, dialog} = require("electron"),
|
|
{join, resolve} = require("path"),
|
|
{existsSync, createReadStream, unlink, rmSync} = require("fs"),
|
|
Store = require('electron-store');
|
|
|
|
module.exports = () => {
|
|
|
|
/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
Application Configuration Init
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
|
|
app.setPath("userData", join(app.getPath("appData"), app.name.replace(/\s/g, ''))) // Set Linux to use .cache instead of .config and remove the space as its annoying
|
|
|
|
// Set the Theme List based on css files in themes directory
|
|
app.userThemesPath = resolve(app.getPath('userData'), 'themes');
|
|
app.userPluginsPath = resolve(app.getPath('userData'), 'plugins');
|
|
let showIntro = false
|
|
|
|
const migrationFunctions = {
|
|
clearElectronPrefs: () => {
|
|
if (existsSync(resolve(app.getPath('userData'), 'preferences.json'))) {
|
|
unlink(resolve(app.getPath('userData'), 'preferences.json'), (err) => {
|
|
if (err) console.error(err)
|
|
})
|
|
}
|
|
if (existsSync(resolve(app.getPath('userData'), 'Preferences'))) {
|
|
unlink(resolve(app.getPath('userData'), 'Preferences'), (err) => {
|
|
if (err) console.error(err)
|
|
})
|
|
}
|
|
},
|
|
clearCache: () => {
|
|
if (existsSync(resolve(app.getPath('userData'), 'Cache'))) {
|
|
rmSync(resolve(app.getPath('userData'), 'Cache'), {recursive: true, force: true})
|
|
}
|
|
},
|
|
showDevelopmentMessage: () => {
|
|
app.whenReady().then(() => {
|
|
dialog.showMessageBox({
|
|
title: "Version under Development!",
|
|
message: "This version is under development. Expect bugs and issues whilst using the application.",
|
|
type: "warning"
|
|
})
|
|
})
|
|
}
|
|
}
|
|
const storeDefaults = {
|
|
general: {
|
|
storefront: "",
|
|
incognitoMode: false,
|
|
playbackNotifications: "minimized",
|
|
trayTooltipSongName: true,
|
|
startupPage: "browse",
|
|
discordRPC: "ame-title",
|
|
discordClearActivityOnPause: true,
|
|
lastfm: false,
|
|
lastfmRemoveFeaturingArtists: true,
|
|
lastfmNowPlaying: true,
|
|
analyticsEnabled: true,
|
|
lastfmScrobbleDelay: 30
|
|
},
|
|
visual: {
|
|
theme: "default",
|
|
frameType: "",
|
|
transparencyEffect: "",
|
|
transparencyTheme: "appearance-based",
|
|
transparencyDisableBlur: true,
|
|
transparencyMaximumRefreshRate: "",
|
|
streamerMode: false,
|
|
removeUpsell: true,
|
|
removeAppleLogo: true,
|
|
removeFooter: true,
|
|
removeScrollbars: true,
|
|
useOperatingSystemAccent: false,
|
|
scaling: 1,
|
|
yton: false,
|
|
mxmon: false,
|
|
mxmlanguage: "en"
|
|
},
|
|
audio: {
|
|
audioQuality: "auto",
|
|
seamlessAudioTransitions: false,
|
|
castingBitDepth: '16',
|
|
enableDLNA: false,
|
|
},
|
|
window: {
|
|
appStartupBehavior: "",
|
|
closeButtonMinimize: true,
|
|
alwaysOnTop: false
|
|
},
|
|
advanced: {
|
|
forceApplicationMode: "system",
|
|
hardwareAcceleration: true,
|
|
verboseLogging: false,
|
|
autoUpdaterBetaBuilds: false,
|
|
useBetaSite: true,
|
|
preventMediaKeyHijacking: false,
|
|
devToolsOnStartup: false,
|
|
allowMultipleInstances: false
|
|
},
|
|
tokens: {
|
|
lastfm: ""
|
|
}
|
|
}
|
|
const storeMigrations = {
|
|
'>=3.0.0': store => {
|
|
showIntro = true
|
|
},
|
|
|
|
'<=3.0.0': store => {
|
|
migrationFunctions.clearElectronPrefs()
|
|
migrationFunctions.clearCache()
|
|
migrationFunctions.showDevelopmentMessage()
|
|
}
|
|
}
|
|
|
|
app.cfg = new Store({
|
|
defaults: storeDefaults,
|
|
migrations: storeMigrations
|
|
})
|
|
app.cfg.watch = true;
|
|
app.isQuiting = false;
|
|
|
|
app.whenReady().then(() => {
|
|
protocol.registerFileProtocol('themes', (request, callback) => {
|
|
const url = request.url.substr(7)
|
|
callback({
|
|
path: join(app.userThemesPath, url.toLowerCase())
|
|
})
|
|
})
|
|
protocol.registerFileProtocol('ameres', (request, callback) => {
|
|
const url = request.url.substr(7)
|
|
callback(createReadStream(join(join(__dirname, '../'), url.toLowerCase())))
|
|
})
|
|
protocol.registerFileProtocol('plugin', (request, callback) => {
|
|
const url = request.url.substr(7)
|
|
callback({
|
|
path: join(app.userPluginsPath, url.toLowerCase())
|
|
})
|
|
})
|
|
})
|
|
|
|
const handlersFuncs = require('./handler'),
|
|
initFuncs = require('./init'),
|
|
loadFuncs = require('./load'),
|
|
utilsFuncs = require('./utils'),
|
|
winFuncs = require('./win'),
|
|
discordFuncs = require('./media/discordrpc'),
|
|
lastfmFuncs = require('./media/lastfm'),
|
|
mprisFuncs = require('./media/mpris');
|
|
|
|
return {
|
|
handler: handlersFuncs,
|
|
init: initFuncs,
|
|
load: loadFuncs,
|
|
utils: utilsFuncs,
|
|
win: winFuncs,
|
|
discord: discordFuncs,
|
|
lastfm: lastfmFuncs,
|
|
mpris: mprisFuncs,
|
|
wsapi: require('./wsapi'),
|
|
showOOBE: showIntro
|
|
};
|
|
} |