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

Commit 04ee424

Browse files
committed
0.3.1 Release
1 parent ea3e095 commit 04ee424

File tree

7 files changed

+80
-9
lines changed

7 files changed

+80
-9
lines changed

app/build.gradle

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ android {
1010
applicationId "com.fox2code.mmm"
1111
minSdk 21
1212
targetSdk 32
13-
versionCode 28
14-
versionName "0.3.0"
13+
versionCode 29
14+
versionName "0.3.1"
1515

1616
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1717
}
@@ -20,7 +20,8 @@ android {
2020
release {
2121
minifyEnabled true
2222
shrinkResources true
23-
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
23+
proguardFiles getDefaultProguardFile(
24+
'proguard-android-optimize.txt'), 'proguard-rules.pro'
2425
}
2526
debug {
2627
applicationIdSuffix '.debug'

app/src/main/java/com/fox2code/mmm/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected void onCreate(Bundle savedInstanceState) {
5151
this.setActionBarExtraMenuButton(R.drawable.ic_baseline_settings_24, v -> {
5252
IntentHelper.startActivity(this, SettingsActivity.class);
5353
return true;
54-
});
54+
}, R.string.pref_category_settings);
5555
setContentView(R.layout.activity_main);
5656
this.setTitle(R.string.app_name);
5757
this.getWindow().setFlags(

app/src/main/java/com/fox2code/mmm/MainApplication.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import android.app.Application;
55
import android.content.Intent;
66
import android.content.SharedPreferences;
7+
import android.content.pm.ApplicationInfo;
78
import android.content.res.Configuration;
89
import android.content.res.Resources;
910
import android.graphics.Color;
@@ -25,9 +26,12 @@
2526
import com.topjohnwu.superuser.Shell;
2627

2728
import java.text.SimpleDateFormat;
29+
import java.util.Arrays;
2830
import java.util.Date;
31+
import java.util.HashSet;
2932
import java.util.Locale;
3033
import java.util.Random;
34+
import java.util.Set;
3135

3236
import io.noties.markwon.Markwon;
3337
import io.noties.markwon.html.HtmlPlugin;
@@ -276,7 +280,6 @@ public boolean isLightTheme() {
276280
}
277281
}
278282

279-
280283
@Override
281284
public void onCreate() {
282285
super.onCreate();

app/src/main/java/com/fox2code/mmm/ModuleHolder.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,11 @@ public int compare(ModuleHolder o1, ModuleHolder o2) {
226226
public int compare(ModuleHolder o1, ModuleHolder o2) {
227227
int cmp = Integer.compare(o1.filterLevel, o2.filterLevel);
228228
if (cmp != 0) return cmp;
229-
return Long.compare(o2.repoModule.lastUpdated, o1.repoModule.lastUpdated);
229+
long lastUpdated1 = o1.repoModule == null ? 0L : o1.repoModule.lastUpdated;
230+
long lastUpdated2 = o2.repoModule == null ? 0L : o2.repoModule.lastUpdated;
231+
cmp = Long.compare(lastUpdated2, lastUpdated1);
232+
if (cmp != 0) return cmp;
233+
return o1.getMainModuleName().compareTo(o2.getMainModuleName());
230234
}
231235
},
232236
INSTALLED(R.string.installed, true, true) {
@@ -243,7 +247,11 @@ public int compare(ModuleHolder o1, ModuleHolder o2) {
243247
public int compare(ModuleHolder o1, ModuleHolder o2) {
244248
int cmp = Integer.compare(o1.filterLevel, o2.filterLevel);
245249
if (cmp != 0) return cmp;
246-
return Long.compare(o2.repoModule.lastUpdated, o1.repoModule.lastUpdated);
250+
long lastUpdated1 = o1.repoModule == null ? 0L : o1.repoModule.lastUpdated;
251+
long lastUpdated2 = o2.repoModule == null ? 0L : o2.repoModule.lastUpdated;
252+
cmp = Long.compare(lastUpdated2, lastUpdated1);
253+
if (cmp != 0) return cmp;
254+
return o1.getMainModuleName().compareTo(o2.getMainModuleName());
247255
}
248256
},
249257
FOOTER(R.string.loading, false, false);

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import android.annotation.SuppressLint;
44
import android.content.Intent;
55
import android.content.pm.PackageManager;
6+
import android.graphics.Bitmap;
67
import android.net.Uri;
78
import android.os.Build;
89
import android.os.Bundle;
@@ -11,9 +12,11 @@
1112
import android.webkit.WebResourceRequest;
1213
import android.webkit.WebSettings;
1314
import android.webkit.WebView;
15+
import android.widget.Toast;
1416

1517
import androidx.annotation.NonNull;
1618
import androidx.annotation.Nullable;
19+
import androidx.webkit.WebResourceErrorCompat;
1720
import androidx.webkit.WebSettingsCompat;
1821
import androidx.webkit.WebViewClientCompat;
1922
import androidx.webkit.WebViewFeature;
@@ -104,6 +107,8 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
104107
WebSettingsCompat.FORCE_DARK_OFF : WebSettingsCompat.FORCE_DARK_ON);
105108
}
106109
this.webView.setWebViewClient(new WebViewClientCompat() {
110+
private String pageUrl;
111+
107112
@Override
108113
public boolean shouldOverrideUrlLoading(
109114
@NonNull WebView view, @NonNull WebResourceRequest request) {
@@ -115,6 +120,33 @@ public boolean shouldOverrideUrlLoading(
115120
}
116121
return false;
117122
}
123+
124+
@Override
125+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
126+
this.pageUrl = url;
127+
}
128+
129+
private void onReceivedError(String url,int errorCode) {
130+
if ((url.startsWith("https://api.androidacy.com/magisk/") ||
131+
url.equals(pageUrl)) && (errorCode == 419 || errorCode == 429)) {
132+
Toast.makeText(AndroidacyActivity.this,
133+
"Too many requests!", Toast.LENGTH_LONG).show();
134+
AndroidacyActivity.this.runOnUiThread(AndroidacyActivity.this::onBackPressed);
135+
}
136+
}
137+
138+
@Override
139+
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
140+
this.onReceivedError(failingUrl, errorCode);
141+
}
142+
143+
@Override
144+
public void onReceivedError(@NonNull WebView view, @NonNull WebResourceRequest request,
145+
@NonNull WebResourceErrorCompat error) {
146+
if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_RESOURCE_ERROR_GET_CODE)) {
147+
this.onReceivedError(request.getUrl().toString(), error.getErrorCode());
148+
}
149+
}
118150
});
119151
this.webView.setWebChromeClient(new WebChromeClient() {
120152
@Override

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,14 @@ public AndroidacyWebAPI(AndroidacyActivity activity, boolean allowInstall) {
3232
@JavascriptInterface
3333
public void forceQuit(String error) {
3434
Toast.makeText(this.activity, error, Toast.LENGTH_LONG).show();
35-
this.activity.forceBackPressed();
35+
this.activity.runOnUiThread(
36+
this.activity::forceBackPressed);
3637
}
3738

3839
@JavascriptInterface
3940
public void cancel() {
40-
this.activity.forceBackPressed();
41+
this.activity.runOnUiThread(
42+
this.activity::forceBackPressed);
4143
}
4244

4345
/**

app/src/main/java/com/fox2code/mmm/compat/CompatActivity.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import android.content.ContextWrapper;
77
import android.content.Intent;
88
import android.content.res.Resources;
9+
import android.os.Build;
910
import android.os.Bundle;
1011
import android.util.Log;
1112
import android.view.Menu;
@@ -17,6 +18,7 @@
1718
import androidx.annotation.DrawableRes;
1819
import androidx.annotation.Nullable;
1920
import androidx.annotation.Px;
21+
import androidx.annotation.StringRes;
2022
import androidx.annotation.StyleRes;
2123
import androidx.appcompat.app.AppCompatActivity;
2224
import androidx.core.view.WindowInsetsCompat;
@@ -50,6 +52,7 @@ public boolean onBackPressed(CompatActivity compatActivity) {
5052
private CompatActivity.OnActivityResultCallback onActivityResultCallback;
5153
private CompatActivity.OnBackPressedCallback onBackPressedCallback;
5254
private MenuItem.OnMenuItemClickListener menuClickListener;
55+
private CharSequence menuContentDescription;
5356
@StyleRes private int setThemeDynamic = 0;
5457
private boolean onCreateCalled = false;
5558
private boolean isRefreshUi = false;
@@ -195,11 +198,29 @@ public int getNavigationBarHeight() { // How to improve this?
195198

196199
public void setActionBarExtraMenuButton(@DrawableRes int drawableResId,
197200
MenuItem.OnMenuItemClickListener menuClickListener) {
201+
this.setActionBarExtraMenuButton(drawableResId,
202+
menuClickListener, null);
203+
}
204+
205+
public void setActionBarExtraMenuButton(@DrawableRes int drawableResId,
206+
MenuItem.OnMenuItemClickListener menuClickListener,
207+
@StringRes int menuContentDescription) {
208+
this.setActionBarExtraMenuButton(drawableResId,
209+
menuClickListener, this.getString(menuContentDescription));
210+
}
211+
212+
public void setActionBarExtraMenuButton(@DrawableRes int drawableResId,
213+
MenuItem.OnMenuItemClickListener menuClickListener,
214+
CharSequence menuContentDescription) {
198215
Objects.requireNonNull(menuClickListener);
199216
this.drawableResId = drawableResId;
200217
this.menuClickListener = menuClickListener;
218+
this.menuContentDescription = menuContentDescription;
201219
if (this.menuItem != null) {
202220
this.menuItem.setOnMenuItemClickListener(this.menuClickListener);
221+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
222+
this.menuItem.setContentDescription(this.menuContentDescription);
223+
}
203224
this.menuItem.setIcon(this.drawableResId);
204225
this.menuItem.setEnabled(true);
205226
this.menuItem.setVisible(true);
@@ -209,8 +230,12 @@ public void setActionBarExtraMenuButton(@DrawableRes int drawableResId,
209230
public void removeActionBarExtraMenuButton() {
210231
this.drawableResId = 0;
211232
this.menuClickListener = null;
233+
this.menuContentDescription = null;
212234
if (this.menuItem != null) {
213235
this.menuItem.setOnMenuItemClickListener(null);
236+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
237+
this.menuItem.setContentDescription(null);
238+
}
214239
this.menuItem.setIcon(null);
215240
this.menuItem.setEnabled(false);
216241
this.menuItem.setVisible(false);

0 commit comments

Comments
 (0)