178 lines
7.8 KiB
JavaScript
Raw Normal View History

2020-04-25 21:28:13 +01:00
const gfin = require('get-files-in')
2020-08-28 13:03:24 +01:00
const logger = require('perfect-logger');
2020-04-25 21:28:13 +01:00
const shellExec = require('shell-exec')
2020-08-28 13:03:24 +01:00
const Language = require("@shypes/language-translator");
const inquirer = require('../lib/inquirer');
const common = require('./common')
2020-08-28 15:29:38 +01:00
const chalk = require('chalk');
const globalVariables = require('../lib/globalVars');
2020-08-29 20:48:57 +01:00
const { dualLog } = require('./common');
2020-08-28 13:03:24 +01:00
if (process.platform === 'win32' || process.platform === 'win64') {
adbRun = 'adb'
} else {
adbRun = './adb'
}
2020-04-25 21:28:13 +01:00
module.exports = {
2020-08-28 13:03:24 +01:00
installApk: async (element) => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 13:03:24 +01:00
result = await shellExec(adbRun + ' install -r ' + element).then(async function (result) {
if (result.stderr != '') {
2020-08-29 20:48:57 +01:00
common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
2020-08-28 13:03:24 +01:00
}
2020-08-29 20:48:57 +01:00
common.dualLog(element + ' - ' + result.stdout)
2020-08-28 13:03:24 +01:00
if (element === "data\\apps\\simpleweather_base.apk") {
await common.downloadFile('http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/Others/simpleweather_split_config.armeabi_v7a.apk', './data/apps/simpleweather_split_config.armeabi_v7a.apk')
await common.downloadFile('http://kithub.cf/Karl/MiWatchKleaner-APKs/raw/master/Others/simpleweather_split_config.xhdpi.apk', './data/apps/simpleweather_split_config.xhdpi.apk')
await shellExec(adbRun + ' install-multiple "data\\apps\\simpleweather_base.apk" "data\\apps\\simpleweather_split_config.armeabi_v7a.apk" "data\\apps\\simpleweather_split_config.xhdpi.apk"').then(async function (result) {
2020-08-29 20:48:57 +01:00
common.log(result)
common.dualLog('simple-weather-activated-on-watch')
2020-08-28 13:03:24 +01:00
})
}
if (element === "data\\apps\\MoreLocale.apk") {
await shellExec(adbRun + ' shell pm grant jp.co.c_lis.ccl.morelocale android.permission.CHANGE_CONFIGURATION').then(async function (result) {
2020-08-29 20:48:57 +01:00
common.log(result)
common.dualLog('morelocale-activated-on-watch')
2020-08-28 13:03:24 +01:00
})
}
2020-08-29 11:20:45 +01:00
if (element === "data\\apps\\AlbertoLocale.apk") {
2020-08-28 13:03:24 +01:00
await shellExec(adbRun + ' shell pm grant com.alberto.locale android.permission.CHANGE_CONFIGURATION && ' + adbRun + ' shell am start -n com.alberto.locale/com.alberto.locale.MainActivity && ' + adbRun + ' shell pm grant com.alberto.locale android.permission.CHANGE_CONFIGURATION').then(async function (result) {
2020-08-29 20:48:57 +01:00
common.log(result)
common.dualLog('alberto-locale-activated-on-watch')
2020-04-26 12:24:50 +01:00
});
2020-08-28 13:03:24 +01:00
}
});
},
removeApk: async (package) => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 13:03:24 +01:00
result = await shellExec(adbRun + ' uninstall ' + package)
2020-08-28 15:29:38 +01:00
if (result.stderr != '') {
2020-08-29 20:48:57 +01:00
common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
2020-08-28 15:29:38 +01:00
} else {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('removing') + ' ' + package + ' - ' + result.stdout)
2020-08-28 15:29:38 +01:00
}
},
removeXiaomiApk: async (package) => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 15:29:38 +01:00
result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package)
if (result.stderr != '') {
2020-08-29 20:48:57 +01:00
common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
2020-08-28 15:29:38 +01:00
} else {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('removing') + ' ' + package + ' - ' + result.stdout)
2020-08-28 15:29:38 +01:00
}
},
restoreXiaomiApk: async (package) => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 15:29:38 +01:00
result = await shellExec(adbRun + ' shell cmd package install-existing ' + package)
if (result.stderr != '') {
2020-08-29 20:48:57 +01:00
common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
2020-08-28 15:29:38 +01:00
} else {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('removing') + ' ' + package + ' - ' + result.stdout)
2020-08-28 15:29:38 +01:00
}
},
restoreAnyApk: async (package) => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-29 22:00:13 +01:00
result = await shellExec(adbRun + ' shell cmd package install-existing ' + package.removeAnyApp)
2020-08-28 15:29:38 +01:00
if (result.stderr != '') {
2020-08-29 20:48:57 +01:00
common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
2020-08-28 15:29:38 +01:00
} else if (result.stdout.includes('doesn\'t exist')) {
logger.info(result.stdout);
console.log(chalk.redBright(result.stdout));
} else {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('restoring') + ' ' + package + ' - ' + result.stdout)
2020-08-28 15:29:38 +01:00
}
2020-08-28 13:03:24 +01:00
},
2020-08-29 21:03:18 +01:00
removeAnyApk: async (package) => {
Language.setActiveLang(globalVariables.language)
result = await shellExec(adbRun + ' shell pm uninstall -k --user 0 ' + package.removeAnyApp)
if (result.stderr != '') {
common.dualLog('device-not-authorised' + ' ' + result.stderr, 'red')
} else if (result.stdout.includes('doesn\'t exist')) {
logger.info(result.stdout);
console.log(chalk.redBright(result.stdout));
} else {
common.dualLog(await Language.get('removing') + ' ' + package + ' - ' + result.stdout)
}
},
2020-08-28 13:03:24 +01:00
getInstalledPacakges: async () => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 13:03:24 +01:00
result = await shellExec(adbRun + ' shell pm list packages -3')
2020-08-28 16:59:05 +01:00
logger.info(await Language.get('packages-recieved-from-watch'))
2020-08-28 13:03:24 +01:00
if (result.stderr.includes('error')) {
logger.info(result.stderr)
2020-08-28 16:59:05 +01:00
console.log(chalk.red(await Language.get('device-not-authorised')))
2020-08-28 13:03:24 +01:00
common.pause(3000)
await shellExec(adbRun + ' kill-server').then(async function (result) {
2020-08-28 16:59:05 +01:00
logger.info(await Language.get('restarting-adb'))
2020-08-28 13:03:24 +01:00
logger.info(result.stdout)
2020-08-28 16:59:05 +01:00
console.log(await Language.get('please-reconnect-to-watch'))
2020-08-28 13:03:24 +01:00
common.pause(3000)
2020-08-28 16:59:05 +01:00
logger.info(await Language.get('remove-installed-apps-failed'))
2020-08-28 13:03:24 +01:00
module.exports.mainMenu()
})
} else {
if (process.platform === 'win32' || process.platform === 'win64') {
installedAppList = result.stdout.split('\r\n'); // split string on comma space
installedAppList.splice(-1, 1)
2020-04-26 12:24:50 +01:00
} else {
2020-08-28 13:03:24 +01:00
installedAppList = result.stdout.split('\n'); // split string on comma space
installedAppList.splice(-1, 1)
2020-04-26 12:24:50 +01:00
}
2020-08-28 13:03:24 +01:00
const value = await inquirer.installedApps(installedAppList);
return value
2020-04-25 21:28:13 +01:00
}
},
2020-08-28 15:29:38 +01:00
killAdbServer: async () => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 15:29:38 +01:00
let result = await shellExec(adbRun + ' kill-server')
2020-08-29 20:48:57 +01:00
// common.log('')
// common.dualLog('restarting-adb' + ' ' + result.stderr, 'red')
2020-08-28 15:29:38 +01:00
},
watchConnection: async (value) => {
2020-08-29 12:34:02 +01:00
Language.setActiveLang(globalVariables.language)
2020-08-28 15:29:38 +01:00
if (value.connection === "usb") {
await module.exports.killAdbServer()
result = await shellExec(adbRun + ' devices')
console.log(result.stdout)
if (result.stdout.includes('device', 15)) {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('connected-via-usb', 'green'))
2020-08-28 15:29:38 +01:00
await common.pause(3000)
globalVariables.localUSB = "X"
return true
} else {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('not-found', 'red'))
2020-08-28 15:29:38 +01:00
await common.pause(2000)
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('try-again', 'white'))
2020-08-28 15:29:38 +01:00
await common.pause(1000)
return false
}
}
if (value.connection === "wifi") {
const value = await inquirer.connectWifi();
await module.exports.killAdbServer()
result = await shellExec(adbRun + ' connect ' + value.connectWifi)
logger.info("Connect Wifi Result " + result.stdout)
if (result.stdout.includes('already connected') || result.stdout.includes('connected to ')) {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('connected', 'green'))
2020-08-28 15:29:38 +01:00
globalVariables.localUSB = ""
globalVariables.miWatchIpaddress = value.connectWifi
await common.pause(3000)
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('connect-wifi-complete', 'green'))
2020-08-28 15:29:38 +01:00
return true
} else {
if (result.stdout.includes('failed to authenticate')) {
2020-08-29 20:48:57 +01:00
common.dualLog(await Language.get('not-authenticated', 'red'))
2020-08-28 15:29:38 +01:00
return false
} else {
2020-08-29 20:48:57 +01:00
common.dualLog(result.stdout, 'red')
2020-08-28 15:29:38 +01:00
}
await common.pause(2000)
2020-08-29 20:48:57 +01:00
common.dualLog('try-again', '')
2020-08-28 15:29:38 +01:00
await common.pause(1000)
return false
}
}
}
2020-04-25 21:28:13 +01:00
};