Răsfoiți Sursa

Merge branch '3.3.0' of Karl/MiWatchKleaner into master

Karl 3 ani în urmă
părinte
comite
f0fa671d82
22 a modificat fișierele cu 435 adăugiri și 108 ștergeri
  1. 8 0
      app.js
  2. 212 45
      data/xiaomiPackageRemovalList.json
  3. 5 1
      lang/de.json
  4. 5 1
      lang/en.json
  5. 5 1
      lang/es.json
  6. 5 1
      lang/fr.json
  7. 5 1
      lang/gr.json
  8. 5 1
      lang/he.json
  9. 5 1
      lang/it.json
  10. 5 1
      lang/nl.json
  11. 5 1
      lang/pl.json
  12. 5 1
      lang/pt-br.json
  13. 5 1
      lang/ru.json
  14. 5 1
      lang/tr.json
  15. 5 1
      lang/vn.json
  16. 13 11
      lib/adb.js
  17. 5 4
      lib/common.js
  18. 3 1
      lib/files.js
  19. 0 1
      lib/globalVars.js
  20. 51 14
      lib/inquirer.js
  21. 1 1
      package.json
  22. 77 18
      pages/pages.js

+ 8 - 0
app.js

@@ -1,3 +1,11 @@
+const settings = require("settings-store")
+
+settings.init({
+    appName: "MiWatchKleaner", //required,
+    // publisherName: "Bar", //optional
+    // reverseDNS: "com.bar.foo" //required for macOS
+})
+
 const pages = require('./pages/pages')
 
 pages.selectLanguage()

+ 212 - 45
data/xiaomiPackageRemovalList.json

@@ -1,45 +1,212 @@
-{
-  "apps": [
-      "com.android.messaging",
-      "com.google.android.clockwork.flashlight",
-      "com.google.android.clockwork.gestures.tutorial",
-      "com.google.android.clockwork.lesetup",
-      "com.google.android.inputmethod.pinyin",
-      "com.google.android.theme.baiji.default",
-      "com.google.android.wearable.frameworkpackagestubs",
-      "com.google.android.wearable.localedition.overlay.cmiit",
-      "com.google.android.wearable.overlay.common.baiji",
-      "com.google.android.wearable.overlay.helium.baiji",
-      "com.google.android.wearable.overlay.home.baiji",
-      "com.google.android.wearable.overlay.home.baiji.tiles",
-      "com.gotokeep.keep",
-      "com.onetrack.watch",
-      "com.qb.qtranslator",
-      "com.sogou.ime.wear",
-      "com.sogou.map.android.maps",
-      "com.tencent.qqmusicwatch",
-      "com.tigerbrokers.stock",
-      "com.umetrip.android.msky.app",
-      "com.xiaomi.mihome",
-      "com.xiaomi.wear.anonymous.xiaoai",
-      "com.xiaomi.wear.calculator",
-      "com.xiaomi.wear.camera",
-      "com.xiaomi.wear.card",
-      "com.xiaomi.wear.charging",
-      "com.xiaomi.wear.compass",
-      "com.xiaomi.wear.deskclock",
-      "com.xiaomi.wear.hotwordle",
-      "com.xiaomi.wear.market",
-      "com.xiaomi.wear.mqs",
-      "com.xiaomi.wear.pressure",
-      "com.xiaomi.wear.setupprovider",
-      "com.xiaomi.wear.tutorial",
-      "com.xiaomi.wear.watchface.album",
-      "com.xiaomi.wear.watchface.art",
-      "com.xiaomi.wear.watchface.classic",
-      "com.xiaomi.wear.watchface.decomposite",
-      "com.xiaomi.wear.watchface.function",
-      "com.ximalayaos.wear.common",
-      "org.codeaurora.ims"
-  ]
-}
+[
+  {
+    "name": "com.android.messaging",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.google.android.clockwork.flashlight",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.google.android.clockwork.gestures.tutorial",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.google.android.clockwork.lesetup",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.google.android.inputmethod.pinyin",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.google.android.theme.baiji.default",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.google.android.wearable.frameworkpackagestubs",
+    "klean": "",
+    "global": "X"
+  },
+  {
+    "name": "com.google.android.wearable.localedition.overlay.cmiit",
+    "klean": "",
+    "global": "X"
+  },
+  {
+    "name": "com.google.android.wearable.overlay.common.baiji",
+    "klean": "",
+    "global": "X"
+  },
+  {
+    "name": "com.google.android.wearable.overlay.helium.baiji",
+    "klean": "",
+    "global": "X"
+  },
+  {
+    "name": "com.google.android.wearable.overlay.home.baiji",
+    "klean": "",
+    "global": "X"
+  },
+  {
+    "name": "com.google.android.wearable.overlay.home.baiji.tiles",
+    "klean": "",
+    "global": "X"
+  },
+  {
+    "name": "com.gotokeep.keep",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.onetrack.watch",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.qb.qtranslator",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.sogou.ime.wear",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.sogou.map.android.maps",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.tencent.qqmusicwatch",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.tigerbrokers.stock",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.umetrip.android.msky.app",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.mihome",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.anonymous.xiaoai",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.calculator",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.camera",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.card",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.charging",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.compass",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.deskclock",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.hotwordle",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.market",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.mqs",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.pressure",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.setupprovider",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.tutorial",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.watchface.album",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.watchface.art",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.watchface.classic",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.watchface.decomposite",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.watchface.function",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.ximalayaos.wear.common",
+    "klean": "X",
+    "global": ""
+  },
+  {
+    "name": "com.xiaomi.wear.xiaoai",
+    "klean": "",
+    "global": ""
+  },
+  {
+    "name": "org.codeaurora.ims",
+    "klean": "X",
+    "global": ""
+  }
+]

+ 5 - 1
lang/de.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "aktuelle DPI ist ",
     "usb-one-device": "Stellen Sie sicher, dass NUR Ihre Uhr angeschlossen ist",
     "accept-authorisation": "Bitte wählen Sie \"Immer zulassen\" für die Autorisierung auf der Uhr",
-    "usb-not-connected": "Stellen Sie sicher, dass Ihre Uhr nicht über USB angeschlossen ist"
+    "usb-not-connected": "Stellen Sie sicher, dass Ihre Uhr nicht über USB angeschlossen ist",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/en.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "Current DPI is",
     "usb-one-device": "Make sure ONLY your watch is connected",
     "accept-authorisation": "Please select \"Always Allow\" for authorisation on watch",
-    "usb-not-connected": "Make sure your watch is not connected via USB"
+    "usb-not-connected": "Make sure your watch is not connected via USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/es.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "Actual DPI es",
     "usb-one-device": "Asegúrate de que SOLO tu reloj esté conectado",
     "accept-authorisation": "Selecciona \"Permitir siempre\" para la autorización de servicio",
-    "usb-not-connected": "Asegúrese de que su reloj no esté conectado a través de USB"
+    "usb-not-connected": "Asegúrese de que su reloj no esté conectado a través de USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/fr.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "Le DPI actuel est",
     "usb-one-device": "Assurez-vous que SEULE votre montre est connectée",
     "accept-authorisation": "Veuillez sélectionner \"Toujours autoriser\" pour l'autorisation sur la montre",
-    "usb-not-connected": "Assurez-vous que votre montre n'est pas connectée via USB"
+    "usb-not-connected": "Assurez-vous que votre montre n'est pas connectée via USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/gr.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "το τρέχον DPI είναι",
     "usb-one-device": "Βεβαιωθείτε ΜΟΝΟ ότι το ρολόι σας είναι συνδεδεμένο",
     "accept-authorisation": "Επιλέξτε \"Να επιτρέπεται πάντα\" για εξουσιοδότηση στο ρολόι",
-    "usb-not-connected": "Βεβαιωθείτε ότι το ρολόι σας δεν είναι συνδεδεμένο μέσω USB"
+    "usb-not-connected": "Βεβαιωθείτε ότι το ρολόι σας δεν είναι συνδεδεμένο μέσω USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/he.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "DPI הנוכחי הוא",
     "usb-one-device": "וודא שהשעון שלך מחובר רק",
     "accept-authorisation": "אנא בחר תמיד אפשר לצורך הרשאה בשעון",
-    "usb-not-connected": "וודא שהשעון שלך אינו מחובר באמצעות USB"
+    "usb-not-connected": "וודא שהשעון שלך אינו מחובר באמצעות USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/it.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "current DPI is",
     "usb-one-device": "Assicurati che SOLO il tuo orologio sia connesso",
     "accept-authorisation": "Seleziona \"Consenti sempre\" per l'autorizzazione sull'orologio",
-    "usb-not-connected": "Assicurati che l'orologio non sia connesso tramite USB"
+    "usb-not-connected": "Assicurati che l'orologio non sia connesso tramite USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/nl.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "huidige DPI is",
     "usb-one-device": "Zorg ervoor dat ALLEEN uw horloge is aangesloten",
     "accept-authorisation": "Selecteer \"Altijd toestaan​​\" voor autorisatie op horloge",
-    "usb-not-connected": "Zorg ervoor dat uw horloge niet is aangesloten via USB"
+    "usb-not-connected": "Zorg ervoor dat uw horloge niet is aangesloten via USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/pl.json

@@ -59,5 +59,9 @@
     "bieżąca-dpi-to": "bieżąca wartość DPI to",
     "usb-one-device": "Upewnij się, że TYLKO zegarek jest podłączony",
     "accept-authorisation": "Aby uzyskać autoryzację na zegarku, wybierz Zawsze zezwalaj",
-    "usb-not-connected": "Upewnij się, że zegarek nie jest podłączony przez USB"
+    "usb-not-connected": "Upewnij się, że zegarek nie jest podłączony przez USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/pt-br.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "o DPI atual é",
     "usb-one-device": "Certifique-se de que SOMENTE seu relógio esteja conectado",
     "accept-authorisation": "Selecione \"Sempre permitir\" para autorização no relógio",
-    "usb-not-connected": "Certifique-se de que seu relógio não esteja conectado via USB"
+    "usb-not-connected": "Certifique-se de que seu relógio não esteja conectado via USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/ru.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "текущий DPI",
     "usb-one-device": "Убедитесь, что подключены ТОЛЬКО ваши часы",
     "accept-authorisation": "Пожалуйста, выберите \"Всегда разрешать\" для авторизации на часах",
-    "usb-not-connected": "Убедитесь, что ваши часы не подключены через USB."
+    "usb-not-connected": "Убедитесь, что ваши часы не подключены через USB.",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/tr.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "Geçerli DPI:",
     "usb-one-device": "YALNIZCA saatinizin bağlı olduğundan emin olun",
     "accept-authorisation": "Saatte yetkilendirme için lütfen \"Her Zaman İzin Ver\" seçeneğini seçin",
-    "usb-not-connected": "Saatinizin USB ile bağlı olmadığından emin olun"
+    "usb-not-connected": "Saatinizin USB ile bağlı olmadığından emin olun",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 5 - 1
lang/vn.json

@@ -59,5 +59,9 @@
     "current-dpi-is": "DPI hiện tại là",
     "usb-one-device": "Đảm bảo CHỈ đồng hồ của bạn được kết nối",
     "accept-authorisation": "Vui lòng chọn \"Luôn cho phép\" để ủy quyền trên đồng hồ",
-    "usb-not-connected": "Đảm bảo rằng đồng hồ của bạn không được kết nối qua USB"
+    "usb-not-connected": "Đảm bảo rằng đồng hồ của bạn không được kết nối qua USB",
+    "main-menu-item-11": "Global Theme",
+    "enable-global-theme": "Enable Global Theme",
+    "disable-global-theme": "Disable Global Theme",
+    "main-menu-item-12": "Xiaomi Apps"
 }

+ 13 - 11
lib/adb.js

@@ -7,6 +7,8 @@ const common = require('./common')
 const chalk = require('chalk');
 const globalVariables = require('../lib/globalVars');
 const extractNumber = require('extract-numbers')
+const settings = require("settings-store");
+
 
 if (process.platform === 'win32' || process.platform === 'win64') {
   adbRun = 'adb'
@@ -16,7 +18,7 @@ if (process.platform === 'win32' || process.platform === 'win64') {
 
 module.exports = {
   installApk: async (element) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
       if (result.stderr != '') {
         common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
@@ -46,7 +48,7 @@ module.exports = {
     });
   },
   removeApk: async (package) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' uninstall ' + package)
     if (result.stderr != '') {
       common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
@@ -55,7 +57,7 @@ module.exports = {
     }
   },
   removeXiaomiApk: async (package) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package)
     if (result.stderr != '') {
       common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
@@ -64,7 +66,7 @@ module.exports = {
     }
   },
   restoreXiaomiApk: async (package) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' shell cmd package install-existing ' + package)
     if (result.stderr != '') {
       common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
@@ -73,7 +75,7 @@ module.exports = {
     }
   },
   restoreAnyApk: async (package) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' shell cmd package install-existing ' + package.removeAnyApp)
     if (result.stderr != '') {
       common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
@@ -85,7 +87,7 @@ module.exports = {
     }
   },
   removeAnyApk: async (package) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package.removeAnyApp)
     if (result.stderr != '') {
       common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
@@ -97,7 +99,7 @@ module.exports = {
     }
   },
   getInstalledPacakges: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     result = await shellExec(adbRun + ' shell pm list packages -3')
     logger.info(await Language.get('packages-recieved-from-watch'))
     if (result.stderr.includes('error')) {
@@ -125,13 +127,13 @@ module.exports = {
     }
   },
   killAdbServer: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     let result = await shellExec(adbRun + ' kill-server')
     // common.log('')
     // common.dualLog('restarting-adb' + ' ' + result.stderr, 'red')
   },
   getCurrentDPI: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     let result = await shellExec(adbRun + ' shell wm density')
     if (result.stdout != "") {
       currentDPI = extractNumber(result.stdout)
@@ -146,13 +148,13 @@ module.exports = {
 
   },
   setDPI: async (setDPI) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     let result = await shellExec(adbRun + ' shell wm density ' + setDPI)
     // currentDPI = extractNumber(result.stdout)
     // return currentDPI[0]
   },
   watchConnection: async (value) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     if (value.connection === "usb") {
       common.dualLog(await Language.get('usb-one-device', 'whiteBright'))
       await common.pause(2000)

+ 5 - 4
lib/common.js

@@ -8,11 +8,12 @@ var shell = require('shelljs');
 const logger = require('perfect-logger');
 const Language = require("@shypes/language-translator");
 const globalVariables = require('../lib/globalVars');
+const settings = require("settings-store");
 var chalkRainbow = require('chalk-rainbow')
 
 module.exports = {
     header: async (page) => {
-        Language.setActiveLang(globalVariables.language)
+        Language.setActiveLang(await settings.value("Lang"))
         clear();
         console.log(
             chalkRainbow(
@@ -36,7 +37,7 @@ module.exports = {
         await new Promise(resolve => setTimeout(resolve, time));
     },
     connectionCheck: async () => {
-        Language.setActiveLang(globalVariables.language)
+        Language.setActiveLang(await settings.value("Lang"))
         if (globalVariables.localUSB === "X") {
             console.log(chalk.white('MiWatch: ') + chalk.green(await Language.get('connected-via-usb')))
         }
@@ -48,7 +49,7 @@ module.exports = {
         }
     },
     downloadFile: async (url, path) => {
-        Language.setActiveLang(globalVariables.language)
+        Language.setActiveLang(await settings.value("Lang"))
         const res = await fetch(url);
         // await module.exports.downloadSize(url)
         await new Promise(async (resolve, reject) => {
@@ -81,7 +82,7 @@ module.exports = {
         logger.info(await Language.get(item, 'en'))
     },
     print: async (item, colour) => {
-        Language.setActiveLang(globalVariables.language)
+        Language.setActiveLang(await settings.value("Lang"))
         switch (colour) {
             case 'green':
                 console.log(chalk.green(await Language.get(item)))

+ 3 - 1
lib/files.js

@@ -4,8 +4,10 @@ const tiny = require("@peterpanhihi/tiny");
 const getFilesIn = require('get-files-in')
 const globalVariables = require('../lib/globalVars');
 const Language = require("@shypes/language-translator");
+const settings = require("settings-store");
 
-Language.setActiveLang(globalVariables.language)
+
+Language.setActiveLang(settings.value("Lang"))
 
 
 module.exports = {

+ 0 - 1
lib/globalVars.js

@@ -1,7 +1,6 @@
 class globalVariables {
     localUSB = "";
     miWatchIpaddress = "";
-    language = "";
     usersList=[];
  }
 

+ 51 - 14
lib/inquirer.js

@@ -3,10 +3,11 @@ const files = require("./files");
 const common = require("./common");
 const Language = require("@shypes/language-translator");
 const globalVariables = require('../lib/globalVars');
+const settings = require("settings-store");
 
 module.exports = {
   mainMenu: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "list",
       name: "mainMenu",
@@ -14,8 +15,8 @@ module.exports = {
       choices: [
         '-----------------------',
         await Language.get('main-menu-item-1'),
-        await Language.get('main-menu-item-2'),
-        await Language.get('main-menu-item-3'),
+        await Language.get('main-menu-item-12'),
+        await Language.get('main-menu-item-11'),
         await Language.get('main-menu-item-4'),
         await Language.get('main-menu-item-5'),
         await Language.get('main-menu-item-6'),
@@ -45,7 +46,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   connectionType: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "list",
       name: "connection",
@@ -61,7 +62,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   connectWifi: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "input",
       name: "connectWifi",
@@ -70,7 +71,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   setDPI: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "input",
       name: "setDPI",
@@ -78,20 +79,24 @@ module.exports = {
     },];
     return inquirer.prompt(questions);
   },
-  removeAppsList: async () => {
-    Language.setActiveLang(globalVariables.language)
+  xiaomiAppsList: async () => {
+    Language.setActiveLang(await settings.value("Lang"))
     const packages = await files.loadPackageList();
+    let appList = []
+    packages.forEach(element => {
+      appList.push(element.name)
+    });
 
     const questions = [{
       type: "checkbox",
-      name: "removeAppsList",
+      name: "appList",
       message: await Language.get('restore-app-message'),
-      choices: packages.apps,
+      choices: appList,
     },];
     return inquirer.prompt(questions);
   },
   compatibleApps: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const compatibleApps = await common.getCompatibleAppsList()
     const appList = []
     for (let element of compatibleApps) {
@@ -106,7 +111,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   installedApps: async (installedApps) => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "checkbox",
       name: "removeAppsList",
@@ -116,7 +121,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   restoreAnyApp: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "input",
       name: "restoreAnyApp",
@@ -125,7 +130,7 @@ module.exports = {
     return inquirer.prompt(questions);
   },
   removeAnyApp: async () => {
-    Language.setActiveLang(globalVariables.language)
+    Language.setActiveLang(await settings.value("Lang"))
     const questions = [{
       type: "input",
       name: "removeAnyApp",
@@ -133,4 +138,36 @@ module.exports = {
     },];
     return inquirer.prompt(questions);
   },
+  globalMenu: async () => {
+    Language.setActiveLang(await settings.value("Lang"))
+    const questions = [{
+      type: "list",
+      name: "globalSelection",
+      message: await Language.get('main-menu-item-11'),
+      choices: [
+        await Language.get('enable-global-theme'),
+        await Language.get('disable-global-theme')
+            ],
+      filter: function (val) {
+        return val.toLowerCase();
+      },
+    },];
+    return inquirer.prompt(questions);
+  },
+  xiaomiMenu: async () => {
+    Language.setActiveLang(await settings.value("Lang"))
+    const questions = [{
+      type: "list",
+      name: "xiaomiSelection",
+      message: await Language.get('main-menu-item-12'),
+      choices: [
+        await Language.get('main-menu-item-2'),
+        await Language.get('main-menu-item-3')
+            ],
+      filter: function (val) {
+        return val.toLowerCase();
+      },
+    },];
+    return inquirer.prompt(questions);
+  },
 };

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "miwatchkleaner",
-  "version": "3.2.1",
+  "version": "3.3.0",
   "description": "MiWatch Cleaning Tool",
   "main": "app.js",
   "bin": "app.js",

+ 77 - 18
pages/pages.js

@@ -6,6 +6,8 @@ const logger = require('perfect-logger');
 const Language = require("@shypes/language-translator");
 const globalVariables = require('../lib/globalVars');
 const adb = require('../lib/adb');
+const settings = require("settings-store");
+
 
 logger.info(process.platform + " detected")
 if (process.platform === 'win32' || process.platform === 'win64') {
@@ -26,8 +28,10 @@ module.exports = {
         common.header('main-menu-item-1')
         common.print('remove-xiaomi-apps', 'whiteBright')
         const removalPackagesList = files.loadPackageList()
-        for (let package of removalPackagesList.apps) {
-            await adb.removeXiaomiApk(package)
+        for (let package of removalPackagesList) {
+            if (package.klean === "X" || package.global === "X") {
+                await adb.removeXiaomiApk(package.name)
+            }
         }
         common.print('removal-complete', 'green')
         await common.pause(2000)
@@ -68,8 +72,8 @@ module.exports = {
     removeXiaomiApps: async () => {
         common.header('main-menu-item-2')
         common.log('main-menu-item-2')
-        const value = await inquirer.removeAppsList();
-        for (let package of value.removeAppsList) {
+        const value = await inquirer.xiaomiAppsList();
+        for (let package of value.appList) {
             await adb.removeXiaomiApk(package)
         }
         common.dualLog('removal-complete', 'green')
@@ -80,8 +84,8 @@ module.exports = {
     restoreXiaomiApps: async () => {
         common.header('main-menu-item-3')
         common.log('main-menu-item-3')
-        const value = await inquirer.removeAppsList();
-        for (let package of value.removeAppsList) {
+        const value = await inquirer.xiaomiAppsList();
+        for (let package of value.appList) {
             await adb.restoreXiaomiApk(package)
         }
         common.dualLog('restoring-apps-complete', 'green')
@@ -213,19 +217,69 @@ module.exports = {
     },
 
     selectLanguage: async () => {
-        common.header('Select Language')
-        common.log('Select Language')
-        const v = await inquirer.LanguageSelect()
-        globalVariables.language = v.selection
-        module.exports.connectWatch()
+        if (await settings.value("Lang") != undefined) {
+            common.log(await settings.value("Lang") + " Selected")
+            module.exports.connectWatch()
+        } else {
+            common.header('Select Language')
+            common.log('Select Language')
+            const v = await inquirer.LanguageSelect()
+            settings.setValue("Lang", v.selection)
+        }
+    },
+
+    globalTheme: async () => {
+        const v = await inquirer.globalMenu()
+        console.log(v)
+        if (v.globalSelection === "enable global theme") {
+            common.log('main-menu-item-11')
+            common.header('main-menu-item-11')
+            common.print('enable-global-theme', 'whiteBright')
+            const removalPackagesList = files.loadPackageList()
+            for (let package of removalPackagesList) {
+                if (package.global === "X") {
+                    await adb.removeXiaomiApk(package.name)
+                }
+            }
+            common.print('removal-complete', 'green')
+            await common.pause(2000)
+            // common.log('removal-complete')
+            // common.log('compatible-apps')
+            module.exports.mainMenu()
+        } else {
+            common.log('main-menu-item-11')
+            common.header('main-menu-item-11')
+            common.print('disable-global-theme', 'whiteBright')
+            const removalPackagesList = files.loadPackageList()
+            for (let package of removalPackagesList) {
+                if (package.global === "X") {
+                    await adb.restoreXiaomiApk(package.name)
+                }
+            }
+            // common.print('removal-complete', 'green')
+            await common.pause(2000)
+            // common.log('removal-complete')
+            // common.log('compatible-apps')
+            module.exports.mainMenu()
+        }
+    },
+
+    xiaomiApps: async () => {
+        const v = await inquirer.xiaomiMenu()
+        console.log(v)
+        n = await Language.get('main-menu-item-2')
+        if (v.xiaomiSelection === n.toLowerCase()) {
+            module.exports.removeXiaomiApps()
+        } else {
+            module.exports.restoreXiaomiApps()
+        }
     },
 
     mainMenu: async () => {
         common.header('Main Menu')
         const mainMenuSelection = await inquirer.mainMenu();
         menu_1 = await Language.get('main-menu-item-1')
-        menu_2 = await Language.get('main-menu-item-2')
-        menu_3 = await Language.get('main-menu-item-3')
+        menu_12 = await Language.get('main-menu-item-12')
         menu_4 = await Language.get('main-menu-item-4')
         menu_5 = await Language.get('main-menu-item-5')
         menu_6 = await Language.get('main-menu-item-6')
@@ -233,17 +287,18 @@ module.exports = {
         menu_8 = await Language.get('main-menu-item-8')
         menu_9 = await Language.get('main-menu-item-9')
         menu_10 = await Language.get('main-menu-item-10')
+        menu_11 = await Language.get('main-menu-item-11')
 
         switch (mainMenuSelection.mainMenu) {
             case menu_1.toLowerCase():
                 module.exports.oneClick()
                 break;
-            case menu_2.toLowerCase():
-                module.exports.removeXiaomiApps()
-                break;
-            case menu_3.toLowerCase():
-                module.exports.restoreXiaomiApps()
+            case menu_12.toLowerCase():
+                module.exports.xiaomiApps()
                 break;
+            // case menu_3.toLowerCase():
+            //     module.exports.restoreXiaomiApps()
+            //     break;
             case menu_4.toLowerCase():
                 module.exports.installCompatibleApps()
                 break;
@@ -266,6 +321,10 @@ module.exports = {
                 module.exports.changeWatchDPI()
                 break;
             case menu_9.toLowerCase():
+                process.kill(process.pid)
+                break;
+            case menu_11.toLowerCase():
+                module.exports.globalTheme();
                 break;
             default:
             // code block