various fixes

Signed-off-by: androidacy-user <opensource@androidacy.com>
master
androidacy-user 1 year ago
parent 4111b91fe2
commit c46b50e1ef

@ -46,6 +46,7 @@ import com.fox2code.mmm.manager.ModuleManager;
import com.fox2code.mmm.module.ModuleViewAdapter;
import com.fox2code.mmm.module.ModuleViewListBuilder;
import com.fox2code.mmm.repo.RepoManager;
import com.fox2code.mmm.repo.RepoModule;
import com.fox2code.mmm.settings.SettingsActivity;
import com.fox2code.mmm.utils.ExternalHelper;
import com.fox2code.mmm.utils.io.net.Http;
@ -58,6 +59,8 @@ import com.google.android.material.snackbar.Snackbar;
import org.matomo.sdk.extra.TrackHelper;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import io.realm.Realm;
@ -84,6 +87,8 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe
private CardView searchCard;
private SearchView searchView;
private boolean initMode;
public static List<LocalModuleInfo> localModuleInfoList = new ArrayList<>();
public static List<RepoModule> onlineModuleInfoList = new ArrayList<>();
public MainActivity() {
this.moduleViewListBuilder = new ModuleViewListBuilder(this);
@ -365,6 +370,8 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe
}
if (BuildConfig.DEBUG) Timber.i("Apply");
RepoManager.getINSTANCE().runAfterUpdate(moduleViewListBuilderOnline::appendRemoteModules);
moduleViewListBuilder.applyTo(moduleList, moduleViewAdapter);
moduleViewListBuilder.applyTo(moduleListOnline, moduleViewAdapterOnline);
moduleViewListBuilderOnline.applyTo(moduleListOnline, moduleViewAdapterOnline);
// if moduleViewListBuilderOnline has the upgradeable notification, show a badge on the online repo nav item
if (MainApplication.getINSTANCE().modulesHaveUpdates) {
@ -589,8 +596,8 @@ public class MainActivity extends FoxActivity implements SwipeRefreshLayout.OnRe
NotificationType.NEED_CAPTCHA_ANDROIDACY.autoAdd(moduleViewListBuilder);
RepoManager.getINSTANCE().updateEnabledStates();
RepoManager.getINSTANCE().runAfterUpdate(moduleViewListBuilderOnline::appendRemoteModules);
this.moduleViewListBuilderOnline.applyTo(moduleListOnline, moduleViewAdapterOnline);
this.moduleViewListBuilder.applyTo(moduleList, moduleViewAdapter);
this.moduleViewListBuilderOnline.applyTo(moduleListOnline, moduleViewAdapterOnline);
}, "Repo update thread").start();
}

@ -27,6 +27,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.matomo.sdk.extra.TrackHelper;
import java.util.Objects;
import io.noties.markwon.Markwon;
import timber.log.Timber;
@ -66,20 +68,24 @@ public enum ActionButtonType {
}, UPDATE_INSTALL() {
@Override
public void update(Chip button, ModuleHolder moduleHolder) {
int icon = moduleHolder.hasUpdate() ? R.drawable.ic_baseline_update_24 : R.drawable.ic_baseline_system_update_24;
button.setChipIcon(button.getContext().getDrawable(icon));
int icon;
if (moduleHolder.hasUpdate()) {
icon = R.drawable.ic_baseline_update_24;
button.setText(R.string.update);
} else if (moduleHolder.moduleInfo != null) {
icon = R.drawable.ic_baseline_refresh_24;
button.setText(R.string.reinstall);
} else {
icon = R.drawable.ic_baseline_system_update_24;
button.setText(R.string.install);
}
button.setChipIcon(button.getContext().getDrawable(icon));
}
@Override
public void doAction(Chip button, ModuleHolder moduleHolder) {
ModuleInfo moduleInfo = moduleHolder.getMainModuleInfo();
if (moduleInfo == null)
return;
if (moduleInfo == null) return;
String name;
if (moduleHolder.moduleInfo != null) {
@ -89,8 +95,7 @@ public enum ActionButtonType {
}
TrackHelper.track().event("view_update_install", name).with(MainApplication.getINSTANCE().getTracker());
String updateZipUrl = moduleHolder.getUpdateZipUrl();
if (updateZipUrl == null)
return;
if (updateZipUrl == null) return;
// Androidacy manage the selection between download and install
if (AndroidacyUtil.isAndroidacyLink(updateZipUrl)) {
IntentHelper.openUrlAndroidacy(button.getContext(), updateZipUrl, true, moduleInfo.name, moduleInfo.config);
@ -132,7 +137,7 @@ public enum ActionButtonType {
}
}
if (markwon != null) {
TextView messageView = alertDialog.getWindow().findViewById(android.R.id.message);
TextView messageView = Objects.requireNonNull(alertDialog.getWindow()).findViewById(android.R.id.message);
markwon.setParsedMarkdown(messageView, (Spanned) desc);
}
}
@ -197,8 +202,7 @@ public enum ActionButtonType {
@Override
public void doAction(Chip button, ModuleHolder moduleHolder) {
String config = moduleHolder.getMainModuleConfig();
if (config == null)
return;
if (config == null) return;
String name;
if (moduleHolder.moduleInfo != null) {

@ -32,6 +32,7 @@ public final class ModuleHolder implements Comparable<ModuleHolder> {
public final Type separator;
public int footerPx;
public View.OnClickListener onClickListener;
public LocalModuleInfo moduleInfo;
public RepoModule repoModule;
public int filterLevel;

@ -8,6 +8,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.fox2code.mmm.AppUpdateManager;
import com.fox2code.mmm.BuildConfig;
import com.fox2code.mmm.MainActivity;
import com.fox2code.mmm.MainApplication;
import com.fox2code.mmm.NotificationType;
import com.fox2code.mmm.installer.InstallerInitializer;
@ -84,6 +85,8 @@ public class ModuleViewListBuilder {
moduleManager.runAfterScan(() -> {
Timber.i("A1: %s", moduleManager.getModules().size());
for (LocalModuleInfo moduleInfo : moduleManager.getModules().values()) {
// add the local module to the list in MainActivity
MainActivity.localModuleInfoList.add(moduleInfo);
ModuleHolder moduleHolder = this.mappedModuleHolders.get(moduleInfo.id);
if (moduleHolder == null) {
this.mappedModuleHolders.put(moduleInfo.id,
@ -109,6 +112,8 @@ public class ModuleViewListBuilder {
Timber.i("A2: %s", repoManager.getModules().size());
boolean no32bitSupport = Build.SUPPORTED_32_BIT_ABIS.length == 0;
for (RepoModule repoModule : repoManager.getModules().values()) {
// add the remote module to the list in MainActivity
MainActivity.onlineModuleInfoList.add(repoModule);
// if repoData is null, something is wrong
if (repoModule.repoData == null) {
Timber.w("RepoData is null for module %s", repoModule.id);
@ -138,6 +143,14 @@ public class ModuleViewListBuilder {
moduleHolder = new ModuleHolder(repoModule.id));
}
moduleHolder.repoModule = repoModule;
// check if local module is installed
// iterate over MainActivity.localModuleInfoList until we hit the module with the same id
for (LocalModuleInfo localModuleInfo : MainActivity.localModuleInfoList) {
if (localModuleInfo.id.equals(repoModule.id)) {
moduleHolder.moduleInfo = localModuleInfo;
break;
}
}
}
});
}
@ -174,7 +187,7 @@ public class ModuleViewListBuilder {
return false;
}
public void applyTo(final RecyclerView moduleList,final ModuleViewAdapter moduleViewAdapter) {
public void applyTo(final RecyclerView moduleList, final ModuleViewAdapter moduleViewAdapter) {
if (this.updating) return;
this.updating = true;
ModuleManager.getINSTANCE().afterScan();

@ -15,6 +15,8 @@
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:actionBarStyle">@style/Theme.Design.NoActionBar</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<style name="Widget.Material3.Chip.Choice.Light" parent="Widget.Material3.Chip.Assist">
@ -36,6 +38,8 @@
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:actionBarStyle">@style/Theme.Design.NoActionBar</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<!-- Black monet theme, which is just dark monet theme with black background -->
@ -63,6 +67,8 @@
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:actionBarStyle">@style/Theme.Design.NoActionBar</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<style name="Widget.Material3.Chip.Choice.Dark" parent="Widget.Material3.Chip.Assist">

@ -412,4 +412,5 @@
<string name="donate_androidacy_sum">Buy a premium subscription to Androidacy to support the app and the repo.</string>
<string name="promo_code_copied">Use the copied code for half off your first month!</string>
<string name="warning_pls_restart">Please note that some settings may not take effect until you restart the app.</string>
<string name="reinstall">Reinstall</string>
</resources>

@ -35,6 +35,7 @@
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
</style>
<style name="Widget.Material3.Chip.Choice.Light" parent="Widget.Material3.Chip.Assist">
@ -68,6 +69,8 @@
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<style name="Theme.MagiskModuleManager.Dark" parent="Theme.Material3.Dark">
@ -104,6 +107,8 @@
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<!-- Black theme, which is just a dark theme with a black background -->
@ -118,7 +123,6 @@
<item name="colorPrimaryVariant">@color/orange_700</item>
<item name="colorSecondary">@color/orange_500</item>
<item name="colorSecondaryVariant">@color/orange_700</item>
<!-- Fix some unthemed dialogs -->
<item name="android:colorAccent">@color/orange_200</item>
<item name="android:colorBackground">@color/black</item>
<item name="android:colorForeground">@color/white</item>
@ -133,6 +137,8 @@
<item name="windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<style name="Widget.Material.Chip.Choice.Dark" parent="Widget.MaterialComponents.Chip.Action">
@ -159,6 +165,8 @@
<!-- fonts -->
<item name="android:fontFamily">@font/inter</item>
<item name="font">@font/inter</item>
<item name="cornerRadius">@dimen/card_corner_radius</item>
<item name="alertDialogTheme">@style/Theme.MagiskModuleManager.AlertDialog</item>
</style>
<style name="Theme.MagiskModuleManager" parent="Theme.MagiskModuleManager.Light" />
@ -173,4 +181,13 @@
<style name="Theme.MagiskModuleManager.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="Theme.MagiskModuleManager.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<style name="Theme.MagiskModuleManager.AlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
<item name="dialogCornerRadius">28dp</item>
<item name="cornerFamily">rounded</item>
<item name="android:colorBackground">?attr/colorSurface</item>
<item name="android:layout" tools:ignore="PrivateResource">@layout/m3_alert_dialog</item>
</style>
</resources>
Loading…
Cancel
Save