From b6fb4d0c0b9dd361617cfa1c5a3465a4b0030965 Mon Sep 17 00:00:00 2001
From: Filipe Boechat <filipeboechatsampaio@hotmail.com>
Date: Tue, 27 Aug 2019 11:49:19 -0300
Subject: [PATCH] refactor: factor out setLanguage listener

Factor out the setLanguage listener to its own file.

refs #104
---
 public/app/listeners/index.js       |  4 +++-
 public/app/listeners/setLanguage.js | 15 +++++++++++++++
 public/electron.js                  | 13 +++----------
 3 files changed, 21 insertions(+), 11 deletions(-)
 create mode 100644 public/app/listeners/setLanguage.js

diff --git a/public/app/listeners/index.js b/public/app/listeners/index.js
index a4d2ea57..a4c48ddd 100644
--- a/public/app/listeners/index.js
+++ b/public/app/listeners/index.js
@@ -12,6 +12,7 @@ const showLoadSpacePrompt = require('./showLoadSpacePrompt');
 const showExportSpacePrompt = require('./showExportSpacePrompt');
 const showDeleteSpacePrompt = require('./showDeleteSpacePrompt');
 const getUserFolder = require('./getUserFolder');
+const setLanguage = require('./setLanguage');
 
 module.exports = {
   loadSpace,
@@ -27,5 +28,6 @@ module.exports = {
   showLoadSpacePrompt,
   showExportSpacePrompt,
   showDeleteSpacePrompt,
-  getUserFolder
+  getUserFolder,
+  setLanguage,
 };
diff --git a/public/app/listeners/setLanguage.js b/public/app/listeners/setLanguage.js
new file mode 100644
index 00000000..341a527f
--- /dev/null
+++ b/public/app/listeners/setLanguage.js
@@ -0,0 +1,15 @@
+const { SET_LANGUAGE_CHANNEL } = require('../config/channels');
+const logger = require('../logger');
+const { ERROR_GENERAL } = require('../config/errors');
+
+const setLanguage = (mainWindow, db) => async (event, lang) => {
+  try {
+    db.set('user.lang', lang).write();
+    mainWindow.webContents.send(SET_LANGUAGE_CHANNEL, lang);
+  } catch (e) {
+    logger.error(e);
+    mainWindow.webContents.send(SET_LANGUAGE_CHANNEL, ERROR_GENERAL);
+  }
+};
+
+module.exports = setLanguage;
diff --git a/public/electron.js b/public/electron.js
index 3815961b..d2a67e18 100644
--- a/public/electron.js
+++ b/public/electron.js
@@ -66,7 +66,8 @@ const {
   showDeleteSpacePrompt,
   getGeolocationEnabled,
   setGeolocationEnabled,
-  getUserFolder
+  getUserFolder,
+  setLanguage,
 } = require('./app/listeners');
 const isMac = require('./app/utils/isMac');
 
@@ -336,15 +337,7 @@ app.on('ready', async () => {
   });
 
   // called when setting language
-  ipcMain.on(SET_LANGUAGE_CHANNEL, (event, lang) => {
-    try {
-      db.set('user.lang', lang).write();
-      mainWindow.webContents.send(SET_LANGUAGE_CHANNEL, lang);
-    } catch (e) {
-      logger.error(e);
-      mainWindow.webContents.send(SET_LANGUAGE_CHANNEL, ERROR_GENERAL);
-    }
-  });
+  ipcMain.on(SET_LANGUAGE_CHANNEL, setLanguage(mainWindow));
 
   // called when getting developer mode
   ipcMain.on(GET_DEVELOPER_MODE_CHANNEL, () => {