Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
8554b47
Update translation
Jul 15, 2022
a55ac59
remove encoding in AcknowledgementsActivity
Jul 15, 2022
94fd94b
Bring back DAPI
Jul 15, 2022
a3a2a64
Fix marks style an position
Jul 15, 2022
90dfca2
.
Jul 15, 2022
2e8cc3b
ViewModule and more has been updated
Jul 16, 2022
adcc145
Use TabWrapper for tabs
Jul 16, 2022
991fdb8
Initial support for mutiple repositories
Jul 16, 2022
399cfc6
Improve custom repos
Jul 16, 2022
360631e
Add native dispatcher
Jul 16, 2022
fa73634
Add message to new repo screen
Jul 16, 2022
4608334
Update translations
Jul 16, 2022
c19115a
Add Googlers Repo as an readonly
Jul 17, 2022
000bad1
Repo changes
Jul 17, 2022
91512eb
Design changes
Jul 17, 2022
b9cc3fd
bump version
Jul 17, 2022
644c35a
Remove some screenshots
Jul 17, 2022
4ad311c
.
Jul 17, 2022
9fa3be3
Update DeviceModule switches and fix md3 switch color
Jul 17, 2022
c66213e
Prevent null strings in repos
Jul 17, 2022
a7c0be6
Fix FAB overlap locale modules
Jul 17, 2022
51f55f7
Add new SharedPreference method
Jul 17, 2022
391e46b
Code improvements and updated translation
Jul 17, 2022
0a9574d
Design improvements
Jul 18, 2022
cc9d40a
Improve search
Jul 18, 2022
d762d5f
!
Jul 18, 2022
88e272f
Prevent reusage in shell
Jul 18, 2022
37d69d4
Improve screens for desktops
Jul 18, 2022
c3ff94b
Limted repo to 5
Jul 18, 2022
3f9dd28
Update modules.json format
Jul 18, 2022
854a459
Improve management
Jul 18, 2022
97d9ac6
.
Jul 18, 2022
87d8611
Better support for native libraries
Jul 18, 2022
8018d48
Add bun 1.2.4
DerGoogler Jul 19, 2022
63d65df
Try change action
DerGoogler Jul 19, 2022
11e2cba
.
Jul 19, 2022
12e3206
Merge branch '1.4.2' of https://github.com/DerGoogler/MMRL into 1.4.2
Jul 19, 2022
66f72db
Update AlertBuilder
Jul 19, 2022
062f5b3
.
Jul 19, 2022
e01114f
use npmjs for licenses link
Jul 19, 2022
b2879f8
Update webpack.yml
DerGoogler Jul 19, 2022
b3ded71
ups
DerGoogler Jul 19, 2022
79c3728
Update README.md
DerGoogler Jul 19, 2022
a048e99
To lazy to give log...
Jul 19, 2022
8ea2e60
Use new constants
Jul 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions .github/workflows/webpack.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Bun with Webpack
name: Build with Webpack

on:
push:
Expand All @@ -16,21 +16,21 @@ jobs:

strategy:
matrix:
bun-version: ["0.1.2"]
node-version: [ 16, 18 ]

steps:
- uses: actions/checkout@v2

- uses: xhyrom/setup-bun@v0.1.0
- uses: actions/setup-node@v3
with:
bun-version: ${{ matrix.bun-version }}
node-version: ${{ matrix.node-version }}

- name: Build Development
run: |
bun install --force
bun run dev
npm install --force
npm run web:dev

- name: Build Production
run: |
bun install --force
bun run prod
npm install --force
npm run web:prod
46 changes: 46 additions & 0 deletions Android/app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
import groovy.json.*
import org.json.*
import com.google.gson.*;

apply plugin: 'com.android.application'
apply plugin: 'com.github.node-gradle.node'

Expand All @@ -23,6 +27,7 @@ android {
minifyEnabled false
multiDexEnabled false
applicationIdSuffix '.debug'
buildConfigField "String", "BASE_URL", "\"leer\""
}
}
compileOptions {
Expand All @@ -48,3 +53,44 @@ dependencies {
implementation "androidx.appcompat:appcompat:1.4.2"
// implementation 'com.google.android.material:material:1.6.0'
}

configurations.implementation.setCanBeResolved(true)

task printDepsTreeInJson {
doLast {
configurations.implementation.incoming.getResolutionResult().getAllDependencies().each { depResult ->
println "{\"from\":\"" + depResult.getFrom() + "\"," + "\"requested\":\"" + depResult.getRequested() + "\"}"
}
}
}

task printSolvedDepsTreeInJson {
doLast {
def jsonOutput = "["
configurations.implementation.resolvedConfiguration.firstLevelModuleDependencies.each { dep ->
def addToJson
addToJson = { resolvedDep ->
jsonOutput += "\n{"
jsonOutput += "\"name\":\"${resolvedDep.module.id.group}:${resolvedDep.module.id.name}\","
jsonOutput += "\"description\":\"${resolvedDep.module.id}\","
jsonOutput += "\"version\":\"${resolvedDep.module.id.version}\","
jsonOutput += "\"license\":\"null\","
jsonOutput += "\"author\":\"null\","
jsonOutput += "\"repository\":\"https://mvnrepository.com/artifact/${resolvedDep.module.id.group}/${resolvedDep.module.id.name}/${resolvedDep.module.id.version}\""
jsonOutput += "},"
}
addToJson(dep)
}
if(jsonOutput[-1] == ','){
jsonOutput = jsonOutput[0..-2]
}
jsonOutput += "]"

// This took me more than two hours to make -_-
def jsonFile =new JsonSlurper().parseText(jsonOutput)
def json = JsonOutput.toJson(jsonFile)
def pretty = JsonOutput.prettyPrint(json)
def myFile = new File('./../Website/src/utils/native-licenses.json')
myFile.write(pretty)
}
}
4 changes: 2 additions & 2 deletions Android/app/release/output-metadata.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 140,
"versionName": "1.4.0@alpha-3",
"versionCode": 141,
"versionName": "1.4.1",
"outputFile": "app-release.apk"
}
],
Expand Down
3 changes: 2 additions & 1 deletion Android/app/src/main/assets/index.html
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="bundle/vendor.bundle.css" />
<link rel="stylesheet" type="text/css" href="bundle/app.bundle.css" />
<meta charset="utf-8" />
</head>
<body>
<app></app>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,13 @@ public void postUrl(@NonNull String url, @NonNull byte[] postData) {

@Override
public void evaluateJavascript(@NonNull String script, @Nullable ValueCallback<String> resultCallback) {
throw new RuntimeException("Stub!");
super.evaluateJavascript(script, resultCallback);
}

public void eventDispatcher(@NonNull String event) {
super.evaluateJavascript(
"(function() { window.dispatchEvent(" + event + "); })();"
, null);
}

public void loadJavascript(String javascript) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,10 +62,6 @@ protected void onCreate(Bundle savedInstanceState) {

@Override
public void onBackPressed() {
if (view.canGoBack()) {
view.goBack();
} else {
super.onBackPressed();
}
view.eventDispatcher("onBackButton");
}
}
2 changes: 1 addition & 1 deletion Android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,4 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
android.useAndroidX=true
android.enableJetifier=true
android.enableJetifier=true
2 changes: 1 addition & 1 deletion Android/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#Sat Jun 11 19:47:22 CEST 2022
#Mon Jul 18 21:46:42 CEST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists
Expand Down
80 changes: 72 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,23 @@

Magisk Module Repo Loader (MMRL). Allows you to load custom repos with an simple UI

[![Build with Webpack](https://github.com/DerGoogler/MMRL/actions/workflows/webpack.yml/badge.svg?branch=master)](https://github.com/DerGoogler/MMRL/actions/workflows/webpack.yml)
[![CodeQL](https://github.com/DerGoogler/MMRL/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/DerGoogler/MMRL/actions/workflows/codeql-analysis.yml)
[![Android CI](https://github.com/DerGoogler/MMRL/actions/workflows/android.yml/badge.svg)](https://github.com/DerGoogler/MMRL/actions/workflows/android.yml)

## How to create custom repo?

Use [this](https://dergoogler.com/repo-generator/) service to create a custom repository.

## What MMRL Supports (Roadmap)

- [x] Custom repo loading
- [x] Custom repo loading (Since 1.4.2 mutiple repositories are supported)
- [x] Translation
- [x] Dark mode
- [ ] Favorite lists

#### Android only

- [x] Custom theming
- [x] View installed modules
- [x] Remove installed modules
- [x] Enable/Disable installed modules
Expand All @@ -27,15 +31,75 @@ Use [this](https://dergoogler.com/repo-generator/) service to create a custom re
<tr>
<td><img src="https://user-images.githubusercontent.com/54764558/170883584-008e135e-09d3-4c5f-9780-9d963b70205f.png"/>
<td><img src="https://user-images.githubusercontent.com/54764558/170883624-b564a344-7f6a-4a94-8494-3ca6b7e6a311.png"/>
<tr>
<td><img src="https://user-images.githubusercontent.com/54764558/170883656-acacbe8e-2f78-48a5-9f85-839cebdf0f82.png"/>
<td><img src="https://user-images.githubusercontent.com/54764558/170883697-ff98c975-74e0-4622-b71c-189576e8c4f7.png"/>
<tr>
<td><img src="https://user-images.githubusercontent.com/54764558/170883716-1b774428-e9dd-4de6-b341-9bc07417e771.png"/>
<td><img src=""/>
<tr>
</table>

## Supported `module.json` syntax

**MMRL** new default

> **Note** > `prop_url` can also used as fallback

```json
{
"last_update": 1658146279000,
"name": "Googlers Magisk Repo",
"website": "https://dergoogler.com/repo",
"support": "https://t.me/The_Googler",
"donate": null,
"submitModule": null,
"modules": [
{
"id": "samsung_a70_raven_prop_overlay",
"last_update": 1654181061000,
"prop_url": "https://.../module.prop",
"zip_url": "https://.../master.zip",
"notes_url": "https://.../README.md",
"props": {
"id": "samsung_a70_raven_prop_overlay",
"name": "Samsung Galaxy A70 Overlay",
"author": "Der_Googler",
"version": "2022-05-22",
"versionCode": "2205-22",
"description": "Spoof your device to RAVEN pixel prop (April 2022) with an generared overlay for Samsung Galaxy A70 (GSI's only). Prop original made by Tesla",
"foxprops": {
"minApi": "31",
"maxApi": "31",
"minMagisk": "18000",
"needRamdisk": null,
"support": null,
"donate": null,
"config": null,
"changeBoot": null
}
}
}
]
}
```

**FoxMMM**

```json
{
"name": "Repo name",
"website": "repo website",
"support": "optional support url",
"donate": "optional support url",
"submitModule": "optional submit module URL",
"last_update": 0,
"modules": [
{
"id": "module id",
"last_update": 0,
"notes_url": "notes url",
"prop_url": "module.prop url",
"zip_url": "module.zip url"
}
]
}
```

## FAQ

### Why does some description reports `404: Not Found`?
Expand Down
Binary file added Website/.gradle/4.4.1/fileChanges/last-build.bin
Binary file not shown.
Binary file added Website/.gradle/4.4.1/fileHashes/fileHashes.lock
Binary file not shown.
Binary file added Website/.gradle/4.4.1/taskHistory/taskHistory.bin
Binary file not shown.
Binary file added Website/.gradle/4.4.1/taskHistory/taskHistory.lock
Binary file not shown.
Binary file not shown.
2 changes: 2 additions & 0 deletions Website/.gradle/buildOutputCleanup/cache.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#Mon Jul 18 21:35:59 CEST 2022
gradle.version=4.4.1
Binary file modified Website/bun.lockb
Binary file not shown.
12 changes: 6 additions & 6 deletions Website/license.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ let outputArray: any = [];
function getObject(name?: any, fallback?: any, options?: any) {
const checkLink = (link?: any) => {
if (options?.isLink) {
return Bota64.encode(link.replace("git+", ""));
return link.replace("git+", "");
} else {
return Bota64.encode(link);
return link;
}
};

Expand All @@ -23,9 +23,9 @@ function getObject(name?: any, fallback?: any, options?: any) {

function getInnerObject(name?: any, rightName?: any) {
if (typeof name == "object") {
return Bota64.encode(rightName);
return rightName;
} else {
return Bota64.encode(name);
return name;
}
}

Expand All @@ -39,10 +39,10 @@ dep.forEach((element?: any) => {
name: getObject(name, "Unknown Module"),
description: getObject(description, "There is no description"),
// Fallback doesn't work here.
author: typeof author == "undefined" ? Bota64.encode("null") : typeof author == "object" ? Bota64.encode(author.name) : Bota64.encode(author), //getObject(getInnerObject(author, author.name), "Unknown"),
author: typeof author == "undefined" ? "null" : typeof author == "object" ? author.name : author, //getObject(getInnerObject(author, author.name), "Unknown"),
version: getObject(version, "null"),
license: getObject(license, "null"),
repository: getObject(getInnerObject(repository, repository.url), "empty", { isLink: true }),
repository: `https://www.npmjs.com/package/${getObject(name, "Unknown Module")}`,
});
});

Expand Down
Loading