diff --git a/README.md b/README.md
index 4af8c58..64e3650 100644
--- a/README.md
+++ b/README.md
@@ -65,8 +65,8 @@ me to not be stuck in my bed at least once a day because of pain.
## Screenshots
Main activity:
-[](screenshot-dark.jpg)
-[](screenshot-light.jpg)
+[](docs/screenshot-dark.jpg)
+[](docs/screenshot-light.jpg)
## What is this?
diff --git a/app/src/main/java/com/fox2code/mmm/AppUpdateManager.java b/app/src/main/java/com/fox2code/mmm/AppUpdateManager.java
index 760bff2..da0d11b 100644
--- a/app/src/main/java/com/fox2code/mmm/AppUpdateManager.java
+++ b/app/src/main/java/com/fox2code/mmm/AppUpdateManager.java
@@ -2,8 +2,8 @@ package com.fox2code.mmm;
import android.util.Log;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Http;
import org.json.JSONArray;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/fox2code/mmm/MainActivity.java b/app/src/main/java/com/fox2code/mmm/MainActivity.java
index 0fc7138..83d9e04 100644
--- a/app/src/main/java/com/fox2code/mmm/MainActivity.java
+++ b/app/src/main/java/com/fox2code/mmm/MainActivity.java
@@ -49,7 +49,7 @@ import com.fox2code.mmm.repo.RepoManager;
import com.fox2code.mmm.settings.SettingsActivity;
import com.fox2code.mmm.utils.BlurUtils;
import com.fox2code.mmm.utils.ExternalHelper;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.progressindicator.LinearProgressIndicator;
diff --git a/app/src/main/java/com/fox2code/mmm/MainApplication.java b/app/src/main/java/com/fox2code/mmm/MainApplication.java
index 7303923..14f5a10 100644
--- a/app/src/main/java/com/fox2code/mmm/MainApplication.java
+++ b/app/src/main/java/com/fox2code/mmm/MainApplication.java
@@ -27,9 +27,9 @@ import com.fox2code.foxcompat.app.FoxApplication;
import com.fox2code.foxcompat.app.internal.FoxProcessExt;
import com.fox2code.foxcompat.view.FoxThemeWrapper;
import com.fox2code.mmm.installer.InstallerInitializer;
-import com.fox2code.mmm.utils.GMSProviderInstaller;
-import com.fox2code.mmm.utils.Http;
-import com.fox2code.mmm.utils.SentryMain;
+import com.fox2code.mmm.utils.io.GMSProviderInstaller;
+import com.fox2code.mmm.utils.io.Http;
+import com.fox2code.mmm.utils.sentry.SentryMain;
import com.fox2code.rosettax.LanguageSwitcher;
import com.google.common.hash.Hashing;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/main/java/com/fox2code/mmm/NotificationType.java b/app/src/main/java/com/fox2code/mmm/NotificationType.java
index b057a90..ee70241 100644
--- a/app/src/main/java/com/fox2code/mmm/NotificationType.java
+++ b/app/src/main/java/com/fox2code/mmm/NotificationType.java
@@ -12,8 +12,8 @@ import com.fox2code.foxcompat.app.FoxActivity;
import com.fox2code.mmm.installer.InstallerInitializer;
import com.fox2code.mmm.module.ModuleViewListBuilder;
import com.fox2code.mmm.repo.RepoManager;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
import java.io.BufferedReader;
diff --git a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java
index 09168e5..18426c4 100644
--- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java
+++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java
@@ -32,7 +32,7 @@ import com.fox2code.mmm.Constants;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R;
import com.fox2code.mmm.XHooks;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.progressindicator.LinearProgressIndicator;
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 51edd40..b436d30 100644
--- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java
+++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java
@@ -16,9 +16,9 @@ import com.fox2code.mmm.manager.ModuleInfo;
import com.fox2code.mmm.repo.RepoData;
import com.fox2code.mmm.repo.RepoManager;
import com.fox2code.mmm.repo.RepoModule;
-import com.fox2code.mmm.utils.Http;
-import com.fox2code.mmm.utils.HttpException;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.Http;
+import com.fox2code.mmm.utils.io.HttpException;
+import com.fox2code.mmm.utils.io.PropUtils;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.topjohnwu.superuser.Shell;
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 cbd475e..1d058a5 100644
--- a/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java
+++ b/app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java
@@ -26,8 +26,8 @@ import com.fox2code.mmm.manager.ModuleInfo;
import com.fox2code.mmm.manager.ModuleManager;
import com.fox2code.mmm.repo.RepoModule;
import com.fox2code.mmm.utils.ExternalHelper;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.Hashes;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Hashes;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
diff --git a/app/src/main/java/com/fox2code/mmm/background/BackgroundUpdateChecker.java b/app/src/main/java/com/fox2code/mmm/background/BackgroundUpdateChecker.java
index 76d4da8..e3d0acd 100644
--- a/app/src/main/java/com/fox2code/mmm/background/BackgroundUpdateChecker.java
+++ b/app/src/main/java/com/fox2code/mmm/background/BackgroundUpdateChecker.java
@@ -26,7 +26,7 @@ import com.fox2code.mmm.manager.LocalModuleInfo;
import com.fox2code.mmm.manager.ModuleManager;
import com.fox2code.mmm.repo.RepoManager;
import com.fox2code.mmm.repo.RepoModule;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.PropUtils;
import java.util.HashMap;
import java.util.Random;
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 d62c0f3..9c12463 100644
--- a/app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java
+++ b/app/src/main/java/com/fox2code/mmm/installer/InstallerActivity.java
@@ -29,13 +29,13 @@ import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.androidacy.AndroidacyUtil;
import com.fox2code.mmm.module.ActionButtonType;
import com.fox2code.mmm.utils.FastException;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.Hashes;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Hashes;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
-import com.fox2code.mmm.utils.PropUtils;
-import com.fox2code.mmm.utils.SentryBreadcrumb;
-import com.fox2code.mmm.utils.SentryMain;
+import com.fox2code.mmm.utils.io.PropUtils;
+import com.fox2code.mmm.utils.sentry.SentryBreadcrumb;
+import com.fox2code.mmm.utils.sentry.SentryMain;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
import com.google.android.material.progressindicator.LinearProgressIndicator;
diff --git a/app/src/main/java/com/fox2code/mmm/installer/InstallerInitializer.java b/app/src/main/java/com/fox2code/mmm/installer/InstallerInitializer.java
index 4a1073d..b052b31 100644
--- a/app/src/main/java/com/fox2code/mmm/installer/InstallerInitializer.java
+++ b/app/src/main/java/com/fox2code/mmm/installer/InstallerInitializer.java
@@ -9,7 +9,7 @@ import androidx.annotation.Nullable;
import com.fox2code.mmm.Constants;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.NotificationType;
-import com.fox2code.mmm.utils.Files;
+import com.fox2code.mmm.utils.io.Files;
import com.topjohnwu.superuser.NoShellException;
import com.topjohnwu.superuser.Shell;
diff --git a/app/src/main/java/com/fox2code/mmm/manager/LocalModuleInfo.java b/app/src/main/java/com/fox2code/mmm/manager/LocalModuleInfo.java
index 4096a0a..bcc980e 100644
--- a/app/src/main/java/com/fox2code/mmm/manager/LocalModuleInfo.java
+++ b/app/src/main/java/com/fox2code/mmm/manager/LocalModuleInfo.java
@@ -4,8 +4,8 @@ import android.util.Log;
import com.fox2code.mmm.markdown.MarkdownUrlLinker;
import com.fox2code.mmm.utils.FastException;
-import com.fox2code.mmm.utils.Http;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.Http;
+import com.fox2code.mmm.utils.io.PropUtils;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/fox2code/mmm/manager/ModuleInfo.java b/app/src/main/java/com/fox2code/mmm/manager/ModuleInfo.java
index 6d0e1f0..91f8e03 100644
--- a/app/src/main/java/com/fox2code/mmm/manager/ModuleInfo.java
+++ b/app/src/main/java/com/fox2code/mmm/manager/ModuleInfo.java
@@ -1,7 +1,7 @@
package com.fox2code.mmm.manager;
import com.fox2code.mmm.BuildConfig;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.PropUtils;
/**
* Representation of the module.prop
diff --git a/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java b/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java
index 3d8888a..f2fc109 100644
--- a/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java
+++ b/app/src/main/java/com/fox2code/mmm/manager/ModuleManager.java
@@ -8,7 +8,7 @@ import androidx.annotation.NonNull;
import com.fox2code.mmm.BuildConfig;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.installer.InstallerInitializer;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.PropUtils;
import com.fox2code.mmm.utils.SyncManager;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.io.SuFile;
diff --git a/app/src/main/java/com/fox2code/mmm/markdown/MarkdownActivity.java b/app/src/main/java/com/fox2code/mmm/markdown/MarkdownActivity.java
index ce88c04..c5164cd 100644
--- a/app/src/main/java/com/fox2code/mmm/markdown/MarkdownActivity.java
+++ b/app/src/main/java/com/fox2code/mmm/markdown/MarkdownActivity.java
@@ -24,7 +24,7 @@ import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R;
import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.utils.BlurUtils;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
diff --git a/app/src/main/java/com/fox2code/mmm/module/ModuleHolder.java b/app/src/main/java/com/fox2code/mmm/module/ModuleHolder.java
index db7c15f..5d35137 100644
--- a/app/src/main/java/com/fox2code/mmm/module/ModuleHolder.java
+++ b/app/src/main/java/com/fox2code/mmm/module/ModuleHolder.java
@@ -15,9 +15,9 @@ import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.manager.LocalModuleInfo;
import com.fox2code.mmm.manager.ModuleInfo;
import com.fox2code.mmm.repo.RepoModule;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.PropUtils;
import java.util.Comparator;
import java.util.List;
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 e0448f0..ac9d592 100644
--- a/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java
+++ b/app/src/main/java/com/fox2code/mmm/repo/CustomRepoData.java
@@ -2,7 +2,7 @@ package com.fox2code.mmm.repo;
import android.content.SharedPreferences;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Http;
import org.json.JSONException;
import org.json.JSONObject;
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 f983686..36d93b8 100644
--- a/app/src/main/java/com/fox2code/mmm/repo/CustomRepoManager.java
+++ b/app/src/main/java/com/fox2code/mmm/repo/CustomRepoManager.java
@@ -3,10 +3,8 @@ package com.fox2code.mmm.repo;
import android.content.Context;
import android.content.SharedPreferences;
-import androidx.annotation.NonNull;
-
import com.fox2code.mmm.MainApplication;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.PropUtils;
public class CustomRepoManager {
private static final boolean AUTO_RECOMPILE = true;
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 d21ef3f..6804f36 100644
--- a/app/src/main/java/com/fox2code/mmm/repo/RepoData.java
+++ b/app/src/main/java/com/fox2code/mmm/repo/RepoData.java
@@ -13,8 +13,8 @@ import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.R;
import com.fox2code.mmm.XRepo;
import com.fox2code.mmm.manager.ModuleInfo;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.PropUtils;
import org.json.JSONArray;
import org.json.JSONException;
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 75d860a..2b620b1 100644
--- a/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java
+++ b/app/src/main/java/com/fox2code/mmm/repo/RepoManager.java
@@ -19,10 +19,10 @@ import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.XRepo;
import com.fox2code.mmm.androidacy.AndroidacyRepoData;
import com.fox2code.mmm.manager.ModuleInfo;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.Hashes;
-import com.fox2code.mmm.utils.Http;
-import com.fox2code.mmm.utils.PropUtils;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Hashes;
+import com.fox2code.mmm.utils.io.Http;
+import com.fox2code.mmm.utils.io.PropUtils;
import com.fox2code.mmm.utils.SyncManager;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@@ -221,13 +221,16 @@ public final class RepoManager extends SyncManager {
return repoData;
}
- @SuppressWarnings("StatementWithEmptyBody")
@SuppressLint("StringFormatInvalid")
protected void scanInternal(@NonNull UpdateListener updateListener) {
// Refuse to start if first_launch is not false in shared preferences
if (MainActivity.doSetupNowRunning) {
return;
}
+ // fail fast on no internet
+ if (!RepoManager.getINSTANCE().hasConnectivity()) {
+ return;
+ }
this.modules.clear();
updateListener.update(0D);
// Using LinkedHashSet to deduplicate Androidacy entry.
@@ -297,7 +300,8 @@ public final class RepoManager extends SyncManager {
// Attempt to contact connectivitycheck.gstatic.com/generate_204
// If we can't, we don't have internet connection
try {
- HttpURLConnection urlConnection = (HttpURLConnection) new URL("https://connectivitycheck.gstatic.com/generate_204").openConnection();
+ HttpURLConnection urlConnection = (HttpURLConnection) new URL(
+ "https://connectivitycheck.gstatic.com/generate_204").openConnection();
urlConnection.setInstanceFollowRedirects(false);
urlConnection.setReadTimeout(1000);
urlConnection.setUseCaches(false);
diff --git a/app/src/main/java/com/fox2code/mmm/repo/RepoUpdater.java b/app/src/main/java/com/fox2code/mmm/repo/RepoUpdater.java
index 6fb5933..77da514 100644
--- a/app/src/main/java/com/fox2code/mmm/repo/RepoUpdater.java
+++ b/app/src/main/java/com/fox2code/mmm/repo/RepoUpdater.java
@@ -3,8 +3,8 @@ package com.fox2code.mmm.repo;
import android.util.Log;
import com.fox2code.mmm.BuildConfig;
-import com.fox2code.mmm.utils.Files;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Http;
import org.json.JSONObject;
diff --git a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java
index 42ede06..b03d445 100644
--- a/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java
+++ b/app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java
@@ -58,10 +58,10 @@ import com.fox2code.mmm.repo.CustomRepoManager;
import com.fox2code.mmm.repo.RepoData;
import com.fox2code.mmm.repo.RepoManager;
import com.fox2code.mmm.utils.ExternalHelper;
-import com.fox2code.mmm.utils.Http;
+import com.fox2code.mmm.utils.io.Http;
import com.fox2code.mmm.utils.IntentHelper;
import com.fox2code.mmm.utils.ProcessHelper;
-import com.fox2code.mmm.utils.SentryMain;
+import com.fox2code.mmm.utils.sentry.SentryMain;
import com.fox2code.rosettax.LanguageActivity;
import com.fox2code.rosettax.LanguageSwitcher;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/IntentHelper.java b/app/src/main/java/com/fox2code/mmm/utils/IntentHelper.java
index 5c02346..84f01f2 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/IntentHelper.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/IntentHelper.java
@@ -26,6 +26,8 @@ import com.fox2code.mmm.XHooks;
import com.fox2code.mmm.androidacy.AndroidacyActivity;
import com.fox2code.mmm.installer.InstallerActivity;
import com.fox2code.mmm.markdown.MarkdownActivity;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.Http;
import com.topjohnwu.superuser.CallbackList;
import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.io.SuFileInputStream;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/SyncManager.java b/app/src/main/java/com/fox2code/mmm/utils/SyncManager.java
index d47bbb4..863cc27 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/SyncManager.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/SyncManager.java
@@ -29,10 +29,6 @@ public abstract class SyncManager {
// MultiThread friendly method
public final void update(@Nullable UpdateListener updateListener) {
- // fail fast on no internet
- if (!RepoManager.getINSTANCE().hasConnectivity()) {
- return;
- }
if (updateListener == null) updateListener = NO_OP;
if (!this.syncing) {
// Do scan
diff --git a/app/src/main/java/com/fox2code/mmm/utils/ZipFileOpener.java b/app/src/main/java/com/fox2code/mmm/utils/ZipFileOpener.java
index e8d6212..0e4241e 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/ZipFileOpener.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/ZipFileOpener.java
@@ -11,6 +11,8 @@ import com.fox2code.foxcompat.app.FoxActivity;
import com.fox2code.mmm.BuildConfig;
import com.fox2code.mmm.R;
import com.fox2code.mmm.installer.InstallerInitializer;
+import com.fox2code.mmm.utils.io.Files;
+import com.fox2code.mmm.utils.io.PropUtils;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import java.io.File;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/AddCookiesInterceptor.java b/app/src/main/java/com/fox2code/mmm/utils/io/AddCookiesInterceptor.java
similarity index 98%
rename from app/src/main/java/com/fox2code/mmm/utils/AddCookiesInterceptor.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/AddCookiesInterceptor.java
index 5ee31ac..73f7c0d 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/AddCookiesInterceptor.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/AddCookiesInterceptor.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
// Original written by tsuharesu
// Adapted to create a "drop it in and watch it work" approach by Nikhil Jha.
diff --git a/app/src/main/java/com/fox2code/mmm/utils/Files.java b/app/src/main/java/com/fox2code/mmm/utils/io/Files.java
similarity index 99%
rename from app/src/main/java/com/fox2code/mmm/utils/Files.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/Files.java
index e1696ab..b97b8c1 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/Files.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/Files.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
import android.content.Context;
import android.database.Cursor;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/GMSProviderInstaller.java b/app/src/main/java/com/fox2code/mmm/utils/io/GMSProviderInstaller.java
similarity index 98%
rename from app/src/main/java/com/fox2code/mmm/utils/GMSProviderInstaller.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/GMSProviderInstaller.java
index a8f7092..1ec312d 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/GMSProviderInstaller.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/GMSProviderInstaller.java
@@ -22,7 +22,7 @@
*
* */
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
import android.content.Context;
import android.content.pm.PackageManager;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/Hashes.java b/app/src/main/java/com/fox2code/mmm/utils/io/Hashes.java
similarity index 99%
rename from app/src/main/java/com/fox2code/mmm/utils/Hashes.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/Hashes.java
index 8c2e207..00261a4 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/Hashes.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/Hashes.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
import android.util.Log;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/Http.java b/app/src/main/java/com/fox2code/mmm/utils/io/Http.java
similarity index 99%
rename from app/src/main/java/com/fox2code/mmm/utils/Http.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/Http.java
index 1e0f226..a4c9b3c 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/Http.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/Http.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
import android.annotation.SuppressLint;
import android.content.Context;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/HttpException.java b/app/src/main/java/com/fox2code/mmm/utils/io/HttpException.java
similarity index 96%
rename from app/src/main/java/com/fox2code/mmm/utils/HttpException.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/HttpException.java
index 81ed69f..186d67e 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/HttpException.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/HttpException.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
import androidx.annotation.Keep;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/PropUtils.java b/app/src/main/java/com/fox2code/mmm/utils/io/PropUtils.java
similarity index 99%
rename from app/src/main/java/com/fox2code/mmm/utils/PropUtils.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/PropUtils.java
index 927a677..8bf00df 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/PropUtils.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/PropUtils.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
import static com.fox2code.mmm.AppUpdateManager.FLAG_COMPAT_LOW_QUALITY;
import static com.fox2code.mmm.AppUpdateManager.getFlagsForModule;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/ReceivedCookiesInterceptor.java b/app/src/main/java/com/fox2code/mmm/utils/io/ReceivedCookiesInterceptor.java
similarity index 97%
rename from app/src/main/java/com/fox2code/mmm/utils/ReceivedCookiesInterceptor.java
rename to app/src/main/java/com/fox2code/mmm/utils/io/ReceivedCookiesInterceptor.java
index 85a9711..834b2db 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/ReceivedCookiesInterceptor.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/io/ReceivedCookiesInterceptor.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.io;
// Original written by tsuharesu
// Adapted to create a "drop it in and watch it work" approach by Nikhil Jha.
diff --git a/app/src/main/java/com/fox2code/mmm/utils/SentryBreadcrumb.java b/app/src/main/java/com/fox2code/mmm/utils/sentry/SentryBreadcrumb.java
similarity index 95%
rename from app/src/main/java/com/fox2code/mmm/utils/SentryBreadcrumb.java
rename to app/src/main/java/com/fox2code/mmm/utils/sentry/SentryBreadcrumb.java
index 53e04f5..747d077 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/SentryBreadcrumb.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/sentry/SentryBreadcrumb.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.sentry;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
diff --git a/app/src/main/java/com/fox2code/mmm/utils/SentryMain.java b/app/src/main/java/com/fox2code/mmm/utils/sentry/SentryMain.java
similarity index 97%
rename from app/src/main/java/com/fox2code/mmm/utils/SentryMain.java
rename to app/src/main/java/com/fox2code/mmm/utils/sentry/SentryMain.java
index f8fc1e9..855b412 100644
--- a/app/src/main/java/com/fox2code/mmm/utils/SentryMain.java
+++ b/app/src/main/java/com/fox2code/mmm/utils/sentry/SentryMain.java
@@ -1,4 +1,4 @@
-package com.fox2code.mmm.utils;
+package com.fox2code.mmm.utils.sentry;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -55,7 +55,7 @@ public class SentryMain {
options.addInAppInclude("com.fox2code.mmm");
options.addInAppInclude("com.fox2code.mmm.debug");
options.addInAppInclude("com.fox2code.mmm.fdroid");
- options.addInAppExclude("com.fox2code.mmm.utils.SentryMain");
+ options.addInAppExclude("com.fox2code.mmm.utils.sentry.SentryMain");
// Sentry sends ABSOLUTELY NO Personally Identifiable Information (PII) by default.
// Already set to false by default, just set it again to make peoples feel safer.
options.setSendDefaultPii(false);
@@ -87,7 +87,7 @@ public class SentryMain {
});
}
- public static void addSentryBreadcrumb(com.fox2code.mmm.utils.SentryBreadcrumb sentryBreadcrumb) {
+ public static void addSentryBreadcrumb(SentryBreadcrumb sentryBreadcrumb) {
if (MainApplication.isCrashReportingEnabled()) {
Sentry.addBreadcrumb(sentryBreadcrumb.breadcrumb);
}
diff --git a/app/src/sentry/AndroidManifest.xml b/app/src/sentry/AndroidManifest.xml
deleted file mode 100644
index 28cbf36..0000000
--- a/app/src/sentry/AndroidManifest.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/sentryless/AndroidManifest.xml b/app/src/sentryless/AndroidManifest.xml
deleted file mode 100644
index 56958dc..0000000
--- a/app/src/sentryless/AndroidManifest.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryBreadcrumb.java b/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryBreadcrumb.java
deleted file mode 100644
index 1ab6d69..0000000
--- a/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryBreadcrumb.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.fox2code.mmm.sentry;
-
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-
-import java.util.Objects;
-
-public class SentryBreadcrumb {
- public SentryBreadcrumb() {}
-
- public void setType(@Nullable String type) {}
-
- public void setData(@NotNull String key, @Nullable Object value) {
- Objects.requireNonNull(key);
- }
-
- public void setCategory(@Nullable String category) {}
-}
diff --git a/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java b/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java
deleted file mode 100644
index d8e9138..0000000
--- a/app/src/sentryless/java/com/fox2code/mmm/sentry/SentryMain.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.fox2code.mmm.sentry;
-
-import com.fox2code.mmm.MainApplication;
-
-public class SentryMain {
- public static final boolean IS_SENTRY_INSTALLED = false;
-
- public static void initialize(MainApplication mainApplication) {}
-
- public static void addSentryBreadcrumb(SentryBreadcrumb sentryBreadcrumb) {}
-
- public static boolean isSentryEnabled() { return false; }
-}
diff --git a/docs/DEVELOPERS.md b/docs/DEVELOPERS.md
index 51f7c2d..c9641ab 100644
--- a/docs/DEVELOPERS.md
+++ b/docs/DEVELOPERS.md
@@ -24,7 +24,7 @@ App hiding: I don't intent on hiding the app, the package names should always be
`com.fox2code.mmm` or starts with `com.fox2code.mmm.`, however I notice the presence of
my app is causing issues due to it existing, I may add an hiding feature to the app.
-Low quality module filter: Implemented at `com.fox2code.mmm.utils.PropUtils.isLowQualityModule`,
+Low quality module filter: Implemented at `com.fox2code.mmm.utils.io.PropUtils.isLowQualityModule`,
it is a check that verify that the module is declaring the minimum required to
allow the app to show your module to the user without hurting his experience.
Filling all basic Magisk properties is often enough to not get filtered out by it.
@@ -173,7 +173,7 @@ mmm_exec hideLoading
mmm_exec setSupportLink https://github.com/Fox2Code/FoxMagiskModuleManager
```
-[You may look at the examples modules and their codes.](../examples)
+[You may look at the examples modules and their codes.](examples)
## Developer mode
diff --git a/examples/example_module.zip b/docs/examples/example_module.zip
similarity index 100%
rename from examples/example_module.zip
rename to docs/examples/example_module.zip
diff --git a/examples/example_module/customize.sh b/docs/examples/example_module/customize.sh
similarity index 100%
rename from examples/example_module/customize.sh
rename to docs/examples/example_module/customize.sh
diff --git a/examples/example_module/module.prop b/docs/examples/example_module/module.prop
similarity index 100%
rename from examples/example_module/module.prop
rename to docs/examples/example_module/module.prop
diff --git a/examples/rainbow_module.zip b/docs/examples/rainbow_module.zip
similarity index 100%
rename from examples/rainbow_module.zip
rename to docs/examples/rainbow_module.zip
diff --git a/examples/rainbow_module/customize.sh b/docs/examples/rainbow_module/customize.sh
similarity index 100%
rename from examples/rainbow_module/customize.sh
rename to docs/examples/rainbow_module/customize.sh
diff --git a/examples/rainbow_module/module.prop b/docs/examples/rainbow_module/module.prop
similarity index 100%
rename from examples/rainbow_module/module.prop
rename to docs/examples/rainbow_module/module.prop
diff --git a/screenshot-dark.jpg b/docs/screenshot-dark.jpg
similarity index 100%
rename from screenshot-dark.jpg
rename to docs/screenshot-dark.jpg
diff --git a/screenshot-light.jpg b/docs/screenshot-light.jpg
similarity index 100%
rename from screenshot-light.jpg
rename to docs/screenshot-light.jpg