const fs = require('fs')
const os = require('os')
const path = require('path')

const APP_NAME = '{{packageName}}'

/**
 * App-related paths all go to system temp directory.
 * - Avoid default userData being shared by multiple instances (causing chromium cache corruption errors)
 * - Keep project directory clean
 */
function getAppPaths() {
  const cacheRoot = path.join(os.tmpdir(), APP_NAME)

  return {
    cacheRoot,
    userDataPath: path.join(cacheRoot, 'user-data'),
    sessionDataPath: path.join(cacheRoot, 'session-data'),
    chromiumCachePath: path.join(cacheRoot, 'chromium-cache')
  }
}

function configureAppPaths(app) {
  const paths = getAppPaths()

  fs.mkdirSync(paths.userDataPath, { recursive: true })
  fs.mkdirSync(paths.sessionDataPath, { recursive: true })
  fs.mkdirSync(paths.chromiumCachePath, { recursive: true })

  app.setPath('userData', paths.userDataPath)
  app.setPath('sessionData', paths.sessionDataPath)

  return paths
}

module.exports = {
  configureAppPaths,
  getAppPaths
}