From a268013b0da8355a77fcd586ec63b1024062c66e Mon Sep 17 00:00:00 2001 From: androidacy-user Date: Sat, 22 Apr 2023 19:20:28 -0400 Subject: [PATCH] (misc) work on custom repos Signed-off-by: androidacy-user --- .../java/com/fox2code/mmm/MainApplication.java | 2 +- .../mmm/androidacy/AndroidacyRepoData.java | 4 ++-- .../fox2code/mmm/androidacy/AndroidacyWebAPI.java | 2 +- .../fox2code/mmm/installer/InstallerActivity.java | 7 ++++++- .../java/com/fox2code/mmm/repo/CustomRepoData.java | 6 ++---- .../com/fox2code/mmm/repo/CustomRepoManager.java | 14 ++++++++++++-- .../main/java/com/fox2code/mmm/repo/RepoData.java | 6 ++---- .../java/com/fox2code/mmm/repo/RepoManager.java | 6 ++---- app/src/main/res/layout/installer.xml | 7 ++++--- 9 files changed, 32 insertions(+), 22 deletions(-) diff --git a/app/src/main/java/com/fox2code/mmm/MainApplication.java b/app/src/main/java/com/fox2code/mmm/MainApplication.java index d836a7d..e8577b7 100644 --- a/app/src/main/java/com/fox2code/mmm/MainApplication.java +++ b/app/src/main/java/com/fox2code/mmm/MainApplication.java @@ -160,7 +160,7 @@ public class MainApplication extends FoxApplication implements androidx.work.Con StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); // get the caller of this method StackTraceElement caller = stackTrace[3]; - Timber.d("Shared prefs file: %s, caller: %s:%d", name, caller.getMethodName(), caller.getLineNumber()); + Timber.d("Shared prefs file: %s, caller: %s:%d in %s", name, caller.getFileName(), caller.getLineNumber(), caller.getMethodName()); // add the caller to an array. if the last 3 callers are the same, then we are in a loop, log at error level callers.add(name + ":" + caller.getLineNumber() + ":" + caller.getMethodName()); // get the last 3 callers diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java index f89dc71..5b1f6c0 100644 --- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java +++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java @@ -62,8 +62,8 @@ public final class AndroidacyRepoData extends RepoData { // Avoid spamming requests to Androidacy private long androidacyBlockade = 0; - public AndroidacyRepoData(File cacheRoot, SharedPreferences cachedPreferences, boolean testMode) { - super(testMode ? RepoManager.ANDROIDACY_TEST_MAGISK_REPO_ENDPOINT : RepoManager.ANDROIDACY_MAGISK_REPO_ENDPOINT, cacheRoot, cachedPreferences); + public AndroidacyRepoData(File cacheRoot, boolean testMode) { + super(testMode ? RepoManager.ANDROIDACY_TEST_MAGISK_REPO_ENDPOINT : RepoManager.ANDROIDACY_MAGISK_REPO_ENDPOINT, cacheRoot); this.defaultName = "Androidacy Modules Repo"; this.defaultWebsite = RepoManager.ANDROIDACY_MAGISK_REPO_HOMEPAGE; this.defaultSupport = "https://t.me/androidacy_discussions"; diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java index 274f5c2..7dd0e8e 100644 --- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java +++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java @@ -244,7 +244,7 @@ public class AndroidacyWebAPI { } checksum = Hashes.checkSumFormat(checksum); if (checksum == null || checksum.isEmpty()) { - Timber.w("Androidacy WebView didn't provided a checksum!"); + Timber.w("Androidacy didn't provided a checksum!"); } else if (!Hashes.checkSumValid(checksum)) { this.forceQuitRaw("Androidacy didn't provided a valid checksum"); return; diff --git a/app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java b/app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java index 49b0c8f..fb050f8 100644 --- a/app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java +++ b/app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java @@ -75,6 +75,7 @@ public class InstallerActivity extends FoxActivity { private boolean warnReboot; private PowerManager.WakeLock wakeLock; + @SuppressLint("RestrictedApi") @Override protected void onCreate(Bundle savedInstanceState) { this.warnReboot = false; @@ -151,6 +152,9 @@ public class InstallerActivity extends FoxActivity { this.progressIndicator = findViewById(R.id.progress_bar); this.rebootFloatingButton = findViewById(R.id.install_terminal_reboot_fab); this.cancelFloatingButton = findViewById(R.id.back_installer); + // disable both + this.rebootFloatingButton.setEnabled(false); + this.cancelFloatingButton.setEnabled(false); this.installerTerminal = new InstallerTerminal(installTerminal = findViewById(R.id.install_terminal), this.isLightTheme(), foreground, mmtReborn); (horizontalScroller != null ? horizontalScroller : installTerminal).setBackground(new ColorDrawable(background)); installTerminal.setItemAnimator(null); @@ -530,7 +534,8 @@ public class InstallerActivity extends FoxActivity { Shell.cmd(reboot_cmd).submit(); } }); - this.rebootFloatingButton.setVisibility(View.VISIBLE); + this.rebootFloatingButton.setEnabled(true); + this.cancelFloatingButton.setEnabled(true); // handle back button this.cancelFloatingButton.setOnClickListener(_view -> this.forceBackPressed()); if (message != null && !message.isEmpty()) this.installerTerminal.addLine(message); diff --git a/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java b/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java index 1b40536..b99b0a3 100644 --- a/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java +++ b/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java @@ -1,7 +1,5 @@ package com.fox2code.mmm.repo; -import android.content.SharedPreferences; - import com.fox2code.mmm.utils.io.net.Http; import org.json.JSONException; @@ -15,8 +13,8 @@ public final class CustomRepoData extends RepoData { boolean loadedExternal; String override; - CustomRepoData(String url, File cacheRoot, SharedPreferences cachedPreferences) { - super(url, cacheRoot, cachedPreferences); + CustomRepoData(String url, File cacheRoot) { + super(url, cacheRoot); } @Override diff --git a/app/src/main/java/com/fox2code/mmm/repo/CustomRepoManager.java b/app/src/main/java/com/fox2code/mmm/repo/CustomRepoManager.java index 246f489..9a1438a 100644 --- a/app/src/main/java/com/fox2code/mmm/repo/CustomRepoManager.java +++ b/app/src/main/java/com/fox2code/mmm/repo/CustomRepoManager.java @@ -3,12 +3,15 @@ package com.fox2code.mmm.repo; import android.content.SharedPreferences; import com.fox2code.mmm.MainApplication; +import com.fox2code.mmm.utils.io.Hashes; import com.fox2code.mmm.utils.io.PropUtils; import com.fox2code.mmm.utils.io.net.Http; import com.fox2code.mmm.utils.realm.ReposList; import org.json.JSONObject; +import java.nio.charset.StandardCharsets; + import io.realm.Realm; import io.realm.RealmConfiguration; import timber.log.Timber; @@ -118,6 +121,7 @@ public class CustomRepoManager { } catch (Exception e) { submitModule = null; } + String id = "repo_" + Hashes.hashSha256(repo.getBytes(StandardCharsets.UTF_8)); RealmConfiguration realmConfiguration = new RealmConfiguration.Builder().name("ReposList.realm").encryptionKey(MainApplication.getINSTANCE().getKey()).allowQueriesOnUiThread(true).allowWritesOnUiThread(true).directory(MainApplication.getINSTANCE().getDataDirWithPath("realms")).schemaVersion(1).build(); Realm realm = Realm.getInstance(realmConfiguration); int finalI = i; @@ -127,7 +131,7 @@ public class CustomRepoManager { String finalSubmitModule = submitModule; realm.executeTransaction(realm1 -> { // find the matching entry for repo_0, repo_1, etc. - ReposList reposList = realm1.where(ReposList.class).equalTo("id", "repo_" + finalI).findFirst(); + ReposList reposList = realm1.where(ReposList.class).equalTo("id", "repo_" + id).findFirst(); if (reposList == null) { reposList = realm1.createObject(ReposList.class, "repo_" + finalI); } @@ -144,7 +148,13 @@ public class CustomRepoManager { customReposCount++; this.dirty = true; CustomRepoData customRepoData = (CustomRepoData) this.repoManager.addOrGet(repo); - customRepoData.override = "custom_repo_" + i; + customRepoData.override = "repo_" + id; + customRepoData.id = id; + customRepoData.website = website; + customRepoData.support = support; + customRepoData.donate = donate; + customRepoData.submitModule = submitModule; + customRepoData.name = name; // Set the enabled state to true customRepoData.setEnabled(true); customRepoData.updateEnabledState(); diff --git a/app/src/main/java/com/fox2code/mmm/repo/RepoData.java b/app/src/main/java/com/fox2code/mmm/repo/RepoData.java index 4978d1e..18d364d 100644 --- a/app/src/main/java/com/fox2code/mmm/repo/RepoData.java +++ b/app/src/main/java/com/fox2code/mmm/repo/RepoData.java @@ -1,6 +1,5 @@ package com.fox2code.mmm.repo; -import android.content.SharedPreferences; import android.net.Uri; import androidx.annotation.NonNull; @@ -38,11 +37,11 @@ import timber.log.Timber; public class RepoData extends XRepo { public final JSONObject supportedProperties = new JSONObject(); private final Object populateLock = new Object(); + public String url; public String id; public File cacheRoot; - public SharedPreferences cachedPreferences; public HashMap moduleHashMap; public JSONObject metaDataCache; public long lastUpdate; @@ -72,7 +71,7 @@ public class RepoData extends XRepo { //installedVersionCode= (only if installed) private boolean forceHide, enabled; // Cache for speed - public RepoData(String url, File cacheRoot, SharedPreferences cachedPreferences) { + public RepoData(String url, File cacheRoot) { // setup supportedProperties try { supportedProperties.put("id", ""); @@ -100,7 +99,6 @@ public class RepoData extends XRepo { this.url = url; this.id = RepoManager.internalIdOfUrl(url); this.cacheRoot = cacheRoot; - this.cachedPreferences = cachedPreferences; // metadata cache is a realm database from ModuleListCache this.metaDataCache = null; this.moduleHashMap = new HashMap<>(); diff --git a/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java b/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java index 96f881a..d7d7500 100644 --- a/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java +++ b/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java @@ -351,8 +351,7 @@ public final class RepoManager extends SyncManager { private RepoData addRepoData(String url, String fallBackName) { String id = internalIdOfUrl(url); File cacheRoot = new File(this.mainApplication.getDataDir(), "repos/" + id); - SharedPreferences sharedPreferences = MainApplication.getPreferences("mmm_" + id); - RepoData repoData = id.startsWith("repo_") ? new CustomRepoData(url, cacheRoot, sharedPreferences) : new RepoData(url, cacheRoot, sharedPreferences); + RepoData repoData = id.startsWith("repo_") ? new CustomRepoData(url, cacheRoot) : new RepoData(url, cacheRoot); if (fallBackName != null && !fallBackName.isEmpty()) { repoData.defaultName = fallBackName; if (repoData instanceof CustomRepoData) { @@ -374,8 +373,7 @@ public final class RepoManager extends SyncManager { private AndroidacyRepoData addAndroidacyRepoData() { // cache dir is actually under app data File cacheRoot = this.mainApplication.getDataDirWithPath("realms/repos/androidacy_repo"); - SharedPreferences sharedPreferences = MainApplication.getPreferences("mmm_androidacy_repo"); - AndroidacyRepoData repoData = new AndroidacyRepoData(cacheRoot, sharedPreferences, MainApplication.isAndroidacyTestMode()); + AndroidacyRepoData repoData = new AndroidacyRepoData(cacheRoot, MainApplication.isAndroidacyTestMode()); this.repoData.put(ANDROIDACY_MAGISK_REPO_ENDPOINT, repoData); this.repoData.put(ANDROIDACY_TEST_MAGISK_REPO_ENDPOINT, repoData); return repoData; diff --git a/app/src/main/res/layout/installer.xml b/app/src/main/res/layout/installer.xml index 66656db..796d239 100644 --- a/app/src/main/res/layout/installer.xml +++ b/app/src/main/res/layout/installer.xml @@ -9,15 +9,14 @@ tools:context=".installer.InstallerActivity"> + app:layout_constraintTop_toTopOf="parent" android:layout_height="0dp"> \ No newline at end of file