lacymorrow/crossover

View on GitHub
src/main/reset.js

Summary

Maintainability
A
0 mins
Test Coverage
const { ipcMain } = require( 'electron' )
const log = require( './log' )
const sound = require( './sound' )
const windows = require( './windows' )
const Preferences = require( './preferences' )
const keyboard = require( './keyboard' )
const preferences = Preferences.init()
const app = skipFullReset => {

    // Sonic announcement
    sound.play( 'RESET' )

    // Close extra crosshairs
    windows.closeAllShadows()

    // Hides chooser and preferences
    keyboard.escapeAction()

    reset.allPreferences()

    if ( !skipFullReset ) {

        keyboard.unregisterShortcuts()

        // todo - circular dependency using:
        // init()
        // Using app.relaunch to cheat
        // or, to restart completely
        ipcMain.emit( 'init' )

        // if ( !is.development ) {

        //     electronApp.relaunch()
        //     electronApp.exit()

        //     return

        // }

    }

}

const preference = key => {

    const defaults = Preferences.getDefaults()

    try {

        const [ groupId, id ] = key.split( '.' )
        const group = defaults[groupId]
        const defaultValue = group[id]

        log.info( `Setting default value ${defaultValue} for ${key}` )
        preferences.value( key, defaultValue )

    } catch ( error ) {

        log.warn( error )

    }

}

// Temp until implemented in electron-preferences
const allPreferences = () => {

    // defaults are all different: defaults.crosshair.positionX, Preferences.defaults.crosshair.positionX, Preferences.getDefaults().crosshair.positionX

    for ( const [ key, value ] of Object.entries( Preferences.getDefaults() ) ) {

        preferences.value( key, value )

    }

}

const reset = {
    app,
    allPreferences,
    preference,
}

module.exports = reset