You've already forked Tricky-Addon-Update-Target-List
mirror of
https://github.com/KOWX712/Tricky-Addon-Update-Target-List.git
synced 2025-09-06 06:37:09 +00:00
feat: option to add system app
This commit is contained in:
@@ -40,7 +40,8 @@ export async function fetchAppList() {
|
||||
|
||||
const result = await execCommand(`
|
||||
pm list packages -3 | awk -F: '{print $2}'
|
||||
pm list packages -s | awk -F: '{print $2}' | grep -Ex "com.google.android.gms|com.google.android.gsf|com.android.vending" 2>/dev/null || true
|
||||
[ -f "/data/adb/tricky_store/system_app" ] && SYSTEM_APP=$(cat "/data/adb/tricky_store/system_app" | tr '\n' '|' | sed 's/|*$//') || SYSTEM_APP=""
|
||||
pm list packages -s | awk -F: '{print $2}' | grep -Ex "$SYSTEM_APP" 2>/dev/null || true
|
||||
`);
|
||||
const appEntries = result
|
||||
.split("\n")
|
||||
@@ -53,7 +54,11 @@ export async function fetchAppList() {
|
||||
for (const entry of appEntries) {
|
||||
if (!entry.appName) {
|
||||
try {
|
||||
const apkPath = await execCommand(`pm path ${entry.packageName} | grep "base.apk" | awk -F: '{print $2}' | tr -d '\\r'`);
|
||||
const apkPath = await execCommand(`
|
||||
base_apk=$(pm path ${entry.packageName} | grep "base.apk" | awk -F: '{print $2}' | tr -d '\\r')
|
||||
[ -n "$base_apk" ] || base_apk=$(pm path ${entry.packageName} | grep ".apk" | awk -F: '{print $2}' | tr -d '\\r')
|
||||
echo "$base_apk"
|
||||
`);
|
||||
if (apkPath) {
|
||||
const appName = await execCommand(`${basePath}common/aapt dump badging ${apkPath.trim()} 2>/dev/null | grep "application-label:" | sed "s/application-label://; s/'//g"`);
|
||||
entry.appName = appName.trim() || "Unknown App";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { appListContainer, fetchAppList, modeActive } from './applist.js';
|
||||
import { initializeAvailableLanguages, detectUserLanguage, loadTranslations, setupLanguageMenu, translations } from './language.js';
|
||||
import { aospkb } from './menu_option.js';
|
||||
import { aospkb, setupSystemAppMenu } from './menu_option.js';
|
||||
import { searchMenuContainer, searchInput, clearBtn, setupMenuToggle } from './search_menu.js';
|
||||
import { updateCheck } from './update.js';
|
||||
import { securityPatch } from './security_patch.js';
|
||||
@@ -40,7 +40,7 @@ async function getModuleVersion() {
|
||||
}
|
||||
|
||||
// Function to refresh app list
|
||||
async function refreshAppList() {
|
||||
export async function refreshAppList() {
|
||||
isRefreshing = true;
|
||||
title.style.transform = 'translateY(0)';
|
||||
searchMenuContainer.style.transform = 'translateY(0)';
|
||||
@@ -326,6 +326,7 @@ document.addEventListener('DOMContentLoaded', async () => {
|
||||
await loadTranslations(userLang);
|
||||
setupMenuToggle();
|
||||
setupLanguageMenu();
|
||||
setupSystemAppMenu();
|
||||
await fetchAppList();
|
||||
applyRippleEffect();
|
||||
checkTrickyStoreVersion();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { basePath, execCommand, showPrompt, toast, applyRippleEffect } from './main.js';
|
||||
import { basePath, execCommand, showPrompt, toast, applyRippleEffect, refreshAppList } from './main.js';
|
||||
|
||||
// Function to check or uncheck all app
|
||||
function toggleCheckboxes(shouldCheck) {
|
||||
@@ -75,6 +75,104 @@ document.getElementById("deselect-unnecessary").addEventListener("click", async
|
||||
}
|
||||
});
|
||||
|
||||
// Function to add system app
|
||||
export async function setupSystemAppMenu() {
|
||||
document.getElementById("add-system-app").addEventListener("click", () => openSystemAppOverlay());
|
||||
document.getElementById("add-system-app-overlay").addEventListener("click", (event) => {
|
||||
if (event.target === event.currentTarget) {
|
||||
closeSystemAppOverlay();
|
||||
}
|
||||
});
|
||||
const systemAppOverlay = document.getElementById("add-system-app-overlay");
|
||||
const systemAppInput = document.getElementById("system-app-input");
|
||||
function openSystemAppOverlay() {
|
||||
renderSystemAppList();
|
||||
document.body.classList.add("no-scroll");
|
||||
systemAppOverlay.style.display = "flex";
|
||||
setTimeout(() => {
|
||||
systemAppOverlay.style.opacity = "1";
|
||||
}, 10);
|
||||
systemAppInput.value = "";
|
||||
}
|
||||
function closeSystemAppOverlay() {
|
||||
document.body.classList.remove("no-scroll");
|
||||
systemAppOverlay.style.opacity = "0";
|
||||
setTimeout(() => {
|
||||
systemAppOverlay.style.display = "none";
|
||||
}, 300);
|
||||
}
|
||||
|
||||
// Add system app button
|
||||
document.getElementById("add-system-app-button").addEventListener("click", async () => {
|
||||
const input = document.getElementById("system-app-input");
|
||||
const packageName = input.value;
|
||||
if (packageName) {
|
||||
try {
|
||||
const result = await execCommand(`pm list packages -s | grep -q ${packageName} || echo "false"`);
|
||||
if (result.includes("false")) {
|
||||
showPrompt("prompt.system_app_not_found", false);
|
||||
} else {
|
||||
await execCommand(`
|
||||
touch "/data/adb/tricky_store/system_app"
|
||||
echo "${packageName}" >> "/data/adb/tricky_store/system_app"
|
||||
echo "${packageName}" >> "/data/adb/tricky_store/target.txt"
|
||||
`);
|
||||
systemAppInput.value = "";
|
||||
closeSystemAppOverlay();
|
||||
refreshAppList();
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Error adding system app:", error);
|
||||
showPrompt("prompt.add_system_app_error", false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Display current system app list and remove button
|
||||
async function renderSystemAppList() {
|
||||
const currentSystemAppList = document.querySelector(".current-system-app-list");
|
||||
const currentSystemAppListContent = document.querySelector(".current-system-app-list-content");
|
||||
currentSystemAppListContent.innerHTML = "";
|
||||
try {
|
||||
const systemAppList = await execCommand(`[ -f "/data/adb/tricky_store/system_app" ] && cat "/data/adb/tricky_store/system_app" | sed '/^$/d' || echo "false"`);
|
||||
if (systemAppList.includes("false")) {
|
||||
currentSystemAppList.style.display = "none";
|
||||
} else {
|
||||
systemAppList.split("\n").forEach(app => {
|
||||
currentSystemAppListContent.innerHTML += `
|
||||
<div class="system-app-item">
|
||||
<span>${app}</span>
|
||||
<button class="remove-system-app-button ripple-element">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="22px" viewBox="0 -960 960 960" width="22px" fill="#FFFFFF"><path d="M154-412v-136h652v136H154Z"/></svg>
|
||||
</button>
|
||||
</div>
|
||||
`;
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
currentSystemAppList.style.display = "none";
|
||||
console.error("Error displaying system app list:", error);
|
||||
}
|
||||
|
||||
const removeSystemAppButtons = document.querySelectorAll(".remove-system-app-button");
|
||||
removeSystemAppButtons.forEach(button => {
|
||||
button.addEventListener("click", async () => {
|
||||
const app = button.closest(".system-app-item").querySelector("span").textContent;
|
||||
try {
|
||||
await execCommand(`
|
||||
sed -i "/${app}/d" "/data/adb/tricky_store/system_app" || true
|
||||
sed -i "/${app}/d" "/data/adb/tricky_store/target.txt" || true
|
||||
`);
|
||||
closeSystemAppOverlay();
|
||||
refreshAppList();
|
||||
} catch (error) {
|
||||
console.error("Error removing system app:", error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Function to backup previous keybox and set new keybox
|
||||
async function setKeybox(content) {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user