pages.js 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. const chalk = require('chalk');
  2. const common = require('../lib/common');
  3. const inquirer = require('../lib/inquirer');
  4. const files = require('../lib/files')
  5. const logger = require('perfect-logger');
  6. const Language = require("@shypes/language-translator");
  7. const adb = require('../lib/adb');
  8. logger.info(process.platform + " detected")
  9. if (process.platform === 'win32' || process.platform === 'win64') {
  10. adbRun = 'adb'
  11. } else {
  12. adbRun = './adb'
  13. }
  14. logger.initialize('RunTIme', {
  15. logLevelFile: 0, // Log level for file
  16. logLevelConsole: -1, // Log level for STDOUT/STDERR
  17. logDirectory: 'data/', // Log directory
  18. });
  19. module.exports = {
  20. removeCompatibleApps: async () => {
  21. common.header(await Language.get('remove_installed_apps_header'))
  22. logger.info(await Language.get('remove_installed_apps_header'))
  23. value = await adb.getInstalledPacakges()
  24. for (let element of value.removeAppsList) {
  25. console.log(await Language.get('removing') + ' ' + element)
  26. logger.info(await Language.get('removing') + ' ' + element)
  27. const package = element.substring(8)
  28. await adb.removeApk(package)
  29. }
  30. console.log(chalk.green(await Language.get('remove_selected_user_apps')))
  31. logger.info(await Language.get('remove_selected_user_apps'))
  32. await common.pause(2000)
  33. module.exports.mainMenu()
  34. },
  35. installCompatibleApps: async () => {
  36. logger.info(await Language.get('install_compatible_apps_header'))
  37. common.header(await Language.get('install_compatible_apps_header'))
  38. const compatibleApps = await common.getCompatibleAppsList()
  39. const value = await inquirer.compatibleApps();
  40. await common.clearApkFolder()
  41. for (let element of value.removeAppsList) {
  42. for (let element2 of compatibleApps) {
  43. if (element === element2.name) {
  44. newName = element.replace(/\s/g, '');
  45. await common.downloadFile(element2.url, './data/apps/' + newName + '.apk')
  46. }
  47. }
  48. }
  49. const apkList = await files.getListOfAPk('./data/apps')
  50. for (let package of apkList) {
  51. console.log(await Language.get('installing') + ' ' + package)
  52. logger.info(await Language.get('installing') + ' ' + package)
  53. await adb.installApk(package)
  54. }
  55. console.log(chalk.green(await Language.get('compatible_apps_installed')))
  56. logger.info(await Language.get('compatible_apps_installed'))
  57. await common.pause(2000)
  58. module.exports.mainMenu()
  59. },
  60. removeApps: async () => {
  61. logger.info("Remove Apps")
  62. common.header('Remove Apps')
  63. const value = await inquirer.removeAppsList();
  64. for (let package of value.removeAppsList) {
  65. await adb.removeXiaomiApk(package)
  66. }
  67. console.log(chalk.green('Removal Complete'))
  68. await common.pause(2000)
  69. logger.info("Remove Complete")
  70. module.exports.mainMenu()
  71. },
  72. restoreApps: async () => {
  73. logger.info("Restore Apps")
  74. common.header('Restore Apps')
  75. const value = await inquirer.removeAppsList();
  76. for (let package of value.removeAppsList) {
  77. await adb.restoreXiaomiApk(package)
  78. }
  79. console.log(chalk.green('Restore Complete'))
  80. await common.pause(2000)
  81. logger.info("Restore Apps Complete")
  82. module.exports.mainMenu()
  83. },
  84. connectWatch: async () => {
  85. logger.info("Connect to watch")
  86. common.header('Connect to watch')
  87. const value = await inquirer.connectionType()
  88. connected = await adb.watchConnection(value)
  89. if (connected != true) {
  90. module.exports.connectWatch()
  91. } else {
  92. module.exports.mainMenu()
  93. }
  94. },
  95. oneClick: async () => {
  96. logger.info("1-Click Karl0ss Klean")
  97. common.header('1-Click Karl0ss Klean')
  98. const removalPackagesList = files.loadPackageList()
  99. for (let package of removalPackagesList.apps) {
  100. await adb.removeXiaomiApk(package)
  101. }
  102. console.log(chalk.green('Removal Complete'))
  103. await common.pause(2000)
  104. logger.info("Remove Complete")
  105. logger.info("Compatible Apps")
  106. await common.clearApkFolder()
  107. const compatibleApps = await common.getCompatibleAppsList()
  108. console.log(chalk.green('Download Compatible APKS'))
  109. for (const package of compatibleApps) {
  110. if (package.Klean === "X") {
  111. try {
  112. newPacakgeName = package.name.replace(/\s/g, '');
  113. await common.downloadFile(package.url, './data/apps/' + newPacakgeName + '.apk')
  114. logger.info('Downloading Latest ' + package.name + ' Complete')
  115. console.log('Downloading Latest ' + package.name + ' Complete')
  116. } catch (error) {
  117. logger.info('Downloading Latest ' + package.name + ' FAILED')
  118. }
  119. }
  120. }
  121. const apkList = await files.getListOfAPk('./data/apps')
  122. console.log(chalk.green('Install Apks'))
  123. for (let element of apkList) {
  124. await adb.installApk(element)
  125. }
  126. console.log(chalk.green('Compatible Apps Installed'))
  127. logger.info('Compatible Apps Installed')
  128. await common.pause(2000)
  129. module.exports.mainMenu()
  130. },
  131. restoreAnyApp: async () => {
  132. logger.info("Restore Any App")
  133. common.header('Restore Any App')
  134. const value = await inquirer.restoreAnyApp();
  135. await adb.restoreAnyApk(value)
  136. console.log(chalk.green('Restore Complete'))
  137. await common.pause(2000)
  138. logger.info("App Restore Complete")
  139. module.exports.mainMenu()
  140. },
  141. batchInstallApks: async () => {
  142. logger.info("Batch Install Apks")
  143. common.header('Batch Install Apks')
  144. let apkList = await files.getListOfAPk('./my_apk/')
  145. await files.renameLocalApk(apkList)
  146. apkList = await files.getListOfAPk('./my_apk/')
  147. for (let element of apkList) {
  148. console.log('Installing ' + element)
  149. logger.info('Installing ' + element)
  150. await adb.installApk(element)
  151. }
  152. console.log(chalk.green('Batch Install Apks Completed'))
  153. logger.info('Batch Install Apks Completed')
  154. await common.pause(2000)
  155. module.exports.mainMenu()
  156. },
  157. mainMenu: async () => {
  158. common.header('Main Menu')
  159. const mainMenuSelection = await inquirer.mainMenu();
  160. switch (mainMenuSelection.mainMenu) {
  161. case 'connect to miwatch':
  162. module.exports.connectWatch()
  163. break;
  164. case '1-click karl0ss klean':
  165. module.exports.oneClick()
  166. break;
  167. case 'remove xiaomi apps':
  168. module.exports.removeApps()
  169. break;
  170. case 'restore xiaomi apps':
  171. module.exports.restoreApps()
  172. break;
  173. case 'install compatible apps':
  174. module.exports.installCompatibleApps()
  175. break;
  176. case 'batch remove installed apps':
  177. module.exports.removeCompatibleApps()
  178. break;
  179. case 'restore any app':
  180. module.exports.restoreAnyApp()
  181. break;
  182. case 'batch install apks':
  183. module.exports.batchInstallApks()
  184. break;
  185. case 'quit':
  186. break;
  187. default:
  188. // code block
  189. }
  190. }
  191. };