Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 1488f13

Browse files
committed
Introduce new modules.json format extensions.
1 parent 06a3e1f commit 1488f13

File tree

12 files changed

+282
-73
lines changed

12 files changed

+282
-73
lines changed

DEVELOPERS.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,33 @@ it is a check that verify that the module is declaring the minimum required to
2727
allow the app to show your module to the user without hurting his experience.
2828
Filling all basic Magisk properties is often enough to not get filtered out by it.
2929

30+
## Custom Repo format
31+
32+
Note: This feature is for `0.6.0` version that is not released yet.
33+
34+
`last_update` fields uses unix millis.
35+
36+
Json format is
37+
```json
38+
{
39+
"name": "Repo name",
40+
"website": "repo website",
41+
"support": "optional support url",
42+
"donate": "optional support url",
43+
"submitModule": "optional submit module URL",
44+
"last_update": 0,
45+
"modules": [
46+
{
47+
"id": "module id",
48+
"last_update": 0,
49+
"notes_url": "notes url",
50+
"prop_url": "module.prop url",
51+
"zip_url": "module.zip url"
52+
}
53+
]
54+
}
55+
```
56+
3057
## Properties
3158

3259
In addition to the following required magisk properties

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ android {
3636
buildConfigField "boolean", "ENABLE_AUTO_UPDATER", "true"
3737
buildConfigField(
3838
"java.util.List<String>",
39-
"DISABLED_REPOS",
40-
"java.util.Arrays.asList()",
39+
"ENABLED_REPOS",
40+
"java.util.Arrays.asList(\"magisk_alt_repo\", \"androidacy_repo\")",
4141
)
4242
}
4343

@@ -54,8 +54,8 @@ android {
5454
// F-Droid flavor.
5555
buildConfigField(
5656
"java.util.List<String>",
57-
"DISABLED_REPOS",
58-
"java.util.Arrays.asList(\"androidacy_repo\")",
57+
"ENABLED_REPOS",
58+
"java.util.Arrays.asList(\"magisk_alt_repo\")",
5959
)
6060
}
6161
}

app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyActivity.java

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,14 @@
88
import android.os.Build;
99
import android.os.Bundle;
1010
import android.util.Log;
11+
import android.view.View;
12+
import android.webkit.ConsoleMessage;
1113
import android.webkit.ValueCallback;
1214
import android.webkit.WebChromeClient;
1315
import android.webkit.WebResourceRequest;
1416
import android.webkit.WebSettings;
1517
import android.webkit.WebView;
18+
import android.widget.TextView;
1619
import android.widget.Toast;
1720

1821
import androidx.annotation.NonNull;
@@ -46,6 +49,7 @@ public class AndroidacyActivity extends FoxActivity {
4649
}
4750

4851
WebView webView;
52+
TextView webViewNote;
4953
AndroidacyWebAPI androidacyWebAPI;
5054
boolean backOnResume;
5155

@@ -108,6 +112,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
108112
}
109113
}
110114
this.webView = this.findViewById(R.id.webView);
115+
this.webViewNote = this.findViewById(R.id.webViewNote);
111116
WebSettings webSettings = this.webView.getSettings();
112117
webSettings.setUserAgentString(Http.getAndroidacyUA());
113118
webSettings.setDomStorageEnabled(true);
@@ -140,12 +145,20 @@ public void onPageStarted(WebView view, String url, Bitmap favicon) {
140145
this.pageUrl = url;
141146
}
142147

143-
private void onReceivedError(String url,int errorCode) {
148+
@Override
149+
public void onPageFinished(WebView view, String url) {
150+
webViewNote.setVisibility(View.GONE);
151+
}
152+
153+
private void onReceivedError(String url, int errorCode) {
144154
if ((url.startsWith("https://api.androidacy.com/magisk/") ||
145155
url.equals(pageUrl)) && (errorCode == 419 || errorCode == 429 || errorCode == 503)) {
146156
Toast.makeText(AndroidacyActivity.this,
147157
"Too many requests!", Toast.LENGTH_LONG).show();
148158
AndroidacyActivity.this.runOnUiThread(AndroidacyActivity.this::onBackPressed);
159+
} else if (url.equals(this.pageUrl)) {
160+
postOnUiThread(() ->
161+
webViewNote.setVisibility(View.VISIBLE));
149162
}
150163
}
151164

@@ -172,6 +185,28 @@ public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathC
172185
FileChooserParams.parseResult(code, data)));
173186
return true;
174187
}
188+
189+
@Override
190+
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
191+
switch (consoleMessage.messageLevel()) {
192+
case TIP:
193+
Log.v(TAG, consoleMessage.message());
194+
break;
195+
case LOG:
196+
Log.i(TAG, consoleMessage.message());
197+
break;
198+
case WARNING:
199+
Log.w(TAG, consoleMessage.message());
200+
break;
201+
case ERROR:
202+
Log.e(TAG, consoleMessage.message());
203+
break;
204+
case DEBUG:
205+
Log.d(TAG, consoleMessage.message());
206+
break;
207+
}
208+
return super.onConsoleMessage(consoleMessage);
209+
}
175210
});
176211
this.webView.setDownloadListener((
177212
downloadUrl, userAgent, contentDisposition, mimetype, contentLength) -> {

app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyRepoData.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.fox2code.mmm.R;
88
import com.fox2code.mmm.manager.ModuleInfo;
99
import com.fox2code.mmm.repo.RepoData;
10+
import com.fox2code.mmm.repo.RepoManager;
1011
import com.fox2code.mmm.repo.RepoModule;
1112
import com.fox2code.mmm.utils.Http;
1213
import com.fox2code.mmm.utils.PropUtils;
@@ -49,6 +50,11 @@ public AndroidacyRepoData(String url, File cacheRoot,
4950
this.androidacyBlockade = 0; // Don't allow time travel. Well why not???
5051
}
5152
}
53+
this.defaultName = "Androidacy Modules Repo";
54+
this.defaultWebsite = RepoManager.ANDROIDACY_MAGISK_REPO_HOMEPAGE;
55+
this.defaultSupport = "https://t.me/androidacy_discussions";
56+
this.defaultDonate = "https://patreon.com/androidacy";
57+
this.defaultSubmitModule = "https://www.androidacy.com/module-repository-applications/";
5258
}
5359

5460
private static String getCookies() {
@@ -231,6 +237,10 @@ protected List<RepoModule> populate(JSONObject jsonObject) throws JSONException
231237
}
232238
this.lastUpdate = lastLastUpdate;
233239
this.name = name;
240+
this.website = jsonObject.optString("website");
241+
this.support = jsonObject.optString("support");
242+
this.donate = jsonObject.optString("donate");
243+
this.submitModule = jsonObject.optString("submitModule");
234244
return newModules;
235245
}
236246

app/src/main/java/com/fox2code/mmm/androidacy/AndroidacyWebAPI.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,14 @@
66
import android.os.Build;
77
import android.util.Log;
88
import android.util.TypedValue;
9+
import android.view.View;
910
import android.webkit.JavascriptInterface;
1011
import android.widget.Button;
1112
import android.widget.Toast;
1213

1314
import androidx.annotation.Keep;
14-
import androidx.annotation.RequiresApi;
1515
import androidx.appcompat.app.AlertDialog;
1616
import androidx.core.content.ContextCompat;
17-
import androidx.core.graphics.ColorUtils;
1817

1918
import com.fox2code.foxcompat.FoxDisplay;
2019
import com.fox2code.mmm.BuildConfig;
@@ -42,6 +41,7 @@ public class AndroidacyWebAPI {
4241
private static final int MAX_COMPAT_MODE = 1;
4342
private final AndroidacyActivity activity;
4443
private final boolean allowInstall;
44+
private boolean allowHideNote = true;
4545
boolean consumedAction;
4646
boolean downloadMode;
4747
int effectiveCompatMode;
@@ -322,6 +322,11 @@ public void hideActionBar() {
322322
this.activity.runOnUiThread(() -> {
323323
this.activity.hideActionBar();
324324
this.consumedAction = false;
325+
if (this.allowHideNote) {
326+
this.allowHideNote = false;
327+
this.activity.webViewNote
328+
.setVisibility(View.GONE);
329+
}
325330
});
326331
}
327332

app/src/main/java/com/fox2code/mmm/module/ActionButtonType.java

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -218,13 +218,8 @@ public void doAction(Chip button, ModuleHolder moduleHolder) {
218218
@Override
219219
public void update(Chip button, ModuleHolder moduleHolder) {
220220
ModuleInfo moduleInfo = moduleHolder.getMainModuleInfo();
221-
int icon = R.drawable.ic_baseline_monetization_on_24;
222-
if (moduleInfo.donate.startsWith("https://www.paypal.me/")) {
223-
icon = R.drawable.ic_baseline_paypal_24;
224-
} else if (moduleInfo.donate.startsWith("https://www.patreon.com/")) {
225-
icon = R.drawable.ic_patreon;
226-
}
227-
button.setChipIcon(button.getContext().getDrawable(icon));
221+
button.setChipIcon(button.getContext().getDrawable(
222+
donateIconForUrl(moduleInfo.donate)));
228223
button.setText(R.string.donate);
229224
}
230225

@@ -252,6 +247,18 @@ public static int supportIconForUrl(String url) {
252247
return icon;
253248
}
254249

250+
@DrawableRes
251+
public static int donateIconForUrl(String url) {
252+
int icon = R.drawable.ic_baseline_monetization_on_24;
253+
if (url.startsWith("https://www.paypal.me/") ||
254+
url.startsWith("https://www.paypal.com/paypalme/")) {
255+
icon = R.drawable.ic_baseline_paypal_24;
256+
} else if (url.startsWith("https://www.patreon.com/")) {
257+
icon = R.drawable.ic_patreon;
258+
}
259+
return icon;
260+
}
261+
255262
@DrawableRes
256263
private final int iconId;
257264

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.fox2code.mmm.repo;
2+
3+
import android.content.SharedPreferences;
4+
5+
import java.io.File;
6+
7+
public class LimitedRepoData extends RepoData {
8+
LimitedRepoData(String url, File cacheRoot, SharedPreferences cachedPreferences) {
9+
super(url, cacheRoot, cachedPreferences);
10+
}
11+
12+
@Override
13+
public final boolean isEnabledByDefault() {
14+
return false;
15+
}
16+
17+
@Override
18+
public final boolean isLimited() {
19+
return true;
20+
}
21+
}

0 commit comments

Comments
 (0)