From a56408ad7531c1f5e552f926a88cc4540d805b85 Mon Sep 17 00:00:00 2001 From: vantezzen Date: Wed, 16 Oct 2019 11:06:27 +0200 Subject: Add button to directly open darkmode.css --- src/stores/ServicesStore.js | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/stores/ServicesStore.js') diff --git a/src/stores/ServicesStore.js b/src/stores/ServicesStore.js index 1bf32af9f..9e952a6b1 100644 --- a/src/stores/ServicesStore.js +++ b/src/stores/ServicesStore.js @@ -1,3 +1,4 @@ +import { shell } from 'electron'; import { action, reaction, @@ -6,12 +7,15 @@ import { } from 'mobx'; import { remove } from 'lodash'; import ms from 'ms'; +import fs from 'fs-extra'; +import path from 'path'; import Store from './lib/Store'; import Request from './lib/Request'; import CachedRequest from './lib/CachedRequest'; import { matchRoute } from '../helpers/routing-helpers'; import { isInTimeframe } from '../helpers/schedule-helpers'; +import { getRecipeDirectory, getDevRecipeDirectory } from '../helpers/recipe-helpers'; import { workspaceStore } from '../features/workspaces'; import { serviceLimitStore } from '../features/serviceLimit'; import { RESTRICTION_TYPES } from '../models/Service'; @@ -52,6 +56,7 @@ export default class ServicesStore extends Store { this.actions.service.createFromLegacyService.listen(this._createFromLegacyService.bind(this)); this.actions.service.updateService.listen(this._updateService.bind(this)); this.actions.service.deleteService.listen(this._deleteService.bind(this)); + this.actions.service.openDarkmodeCss.listen(this._openDarkmodeCss.bind(this)); this.actions.service.clearCache.listen(this._clearCache.bind(this)); this.actions.service.setWebviewReference.listen(this._setWebviewReference.bind(this)); this.actions.service.detachService.listen(this._detachService.bind(this)); @@ -316,6 +321,27 @@ export default class ServicesStore extends Store { this.actionStatus = request.result.status; } + @action async _openDarkmodeCss({ recipe }) { + // Get directory for recipe + const normalDirectory = getRecipeDirectory(recipe); + const devDirectory = getDevRecipeDirectory(recipe); + let directory; + + if (await fs.pathExists(normalDirectory)) { + directory = normalDirectory; + } else if (await fs.pathExists(devDirectory)) { + directory = devDirectory; + } else { + // Recipe cannot be found on drive + return; + } + + // Create and open darkmode.css + const file = path.join(directory, 'darkmode.css'); + await fs.ensureFile(file); + shell.showItemInFolder(file); + } + @action async _clearCache({ serviceId }) { this.clearCacheRequest.reset(); const request = this.clearCacheRequest.execute(serviceId); -- cgit v1.2.3-54-g00ecf