diff --git a/build-logic/src/main/kotlin/com/aliucord/gradle/repo/Authors.kt b/build-logic/src/main/kotlin/com/aliucord/gradle/repo/Authors.kt index 72acdb6..919d99b 100644 --- a/build-logic/src/main/kotlin/com/aliucord/gradle/repo/Authors.kt +++ b/build-logic/src/main/kotlin/com/aliucord/gradle/repo/Authors.kt @@ -56,6 +56,7 @@ object Authors { val Wing = Author("Wing", 298295889720770563L) val ArjixWasTaken = Author("ArjixWasTaken", 674710789138939916L) val PikachuGabe = Author("pikachugabe", 701095070870274139L) + val Clienthax = Author("Clienthax", 98355277182566400L) val catsoft = Author("catsoft", 532967505438965780L) } diff --git a/plugins/NoUpsideDown/build.gradle.kts b/plugins/NoUpsideDown/build.gradle.kts new file mode 100755 index 0000000..c49fb28 --- /dev/null +++ b/plugins/NoUpsideDown/build.gradle.kts @@ -0,0 +1,13 @@ +import com.aliucord.gradle.repo.Authors +import com.aliucord.gradle.repo.author + +plugins { + id("com.aliucord.plugins-repo") +} + +version = "1.0.1" +description = "Disable upside down screen rotation" + +aliucord { + author(Authors.Clienthax) +} diff --git a/plugins/NoUpsideDown/src/main/java/uk/co/haxyshideout/aliuplugins/noupsidedown/NoUpsideDown.java b/plugins/NoUpsideDown/src/main/java/uk/co/haxyshideout/aliuplugins/noupsidedown/NoUpsideDown.java new file mode 100755 index 0000000..a48bf73 --- /dev/null +++ b/plugins/NoUpsideDown/src/main/java/uk/co/haxyshideout/aliuplugins/noupsidedown/NoUpsideDown.java @@ -0,0 +1,34 @@ +package uk.co.haxyshideout.aliuplugins.noupsidedown; + +import android.content.Context; +import android.content.pm.ActivityInfo; +import android.os.Bundle; + +import com.aliucord.Utils; +import com.aliucord.annotations.AliucordPlugin; +import com.aliucord.entities.Plugin; +import com.aliucord.patcher.Hook; +import com.aliucord.patcher.PreHook; +import com.discord.app.AppActivity; + +@AliucordPlugin(requiresRestart = true) +public class NoUpsideDown extends Plugin { + + @Override + public void start(Context context) throws Throwable { + patcher.patch( + AppActivity.class.getDeclaredMethod("onCreate", Bundle.class), + new Hook(param -> { + AppActivity activity = (AppActivity) param.thisObject; + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + }) + ); + + } + + @Override + public void stop(Context context) { + patcher.unpatchAll(); + } + +} diff --git a/plugins/TenorGifFix/build.gradle.kts b/plugins/TenorGifFix/build.gradle.kts new file mode 100755 index 0000000..5c5225d --- /dev/null +++ b/plugins/TenorGifFix/build.gradle.kts @@ -0,0 +1,13 @@ +import com.aliucord.gradle.repo.Authors +import com.aliucord.gradle.repo.author + +plugins { + id("com.aliucord.plugins-repo") +} + +version = "1.0.0" +description = "Make gifs download from tenor instead of mp4s" + +aliucord { + author(Authors.Clienthax) +} diff --git a/plugins/TenorGifFix/src/main/java/uk/co/haxyshideout/aliuplugins/tenorgif/TenorGifFix.java b/plugins/TenorGifFix/src/main/java/uk/co/haxyshideout/aliuplugins/tenorgif/TenorGifFix.java new file mode 100755 index 0000000..bc97a8e --- /dev/null +++ b/plugins/TenorGifFix/src/main/java/uk/co/haxyshideout/aliuplugins/tenorgif/TenorGifFix.java @@ -0,0 +1,67 @@ +package uk.co.haxyshideout.aliuplugins.tenorgif; + +import android.content.Context; +import android.net.Uri; + +import com.aliucord.annotations.AliucordPlugin; +import com.aliucord.entities.Plugin; +import com.aliucord.patcher.PreHook; +import com.discord.utilities.io.NetworkUtils; + +import java.util.List; + +import kotlin.jvm.functions.Function1; + +@AliucordPlugin +public class TenorGifFix extends Plugin { + + @Override + public void start(Context context) throws Throwable { + + patcher.patch( + NetworkUtils.class.getDeclaredMethod("downloadFile", Context.class, Uri.class, String.class, String.class, Function1.class, Function1.class), + new PreHook(param -> { + Uri uri = (Uri) param.args[1]; + + if (!uri.getPath().contains(".tenor.com")) { + return; + } + + List pathSegments = uri.getPathSegments(); + int startSegment = 0; + for (int i = 0; i < pathSegments.size(); i++) { + if (pathSegments.get(i).contains(".tenor.com")) { + startSegment = i; + break; + } + } + + String hostname = pathSegments.get(startSegment); + String tenorID = pathSegments.get(startSegment+1); + String fileName = pathSegments.get(startSegment+2); + if (tenorID.endsWith("AC")) { + return; + } + + tenorID = tenorID.substring(0, tenorID.length()-2) + "AC"; + fileName = fileName.replace(".mp4", ".gif"); + String newUri = "https://"+hostname+"/"+tenorID+"/"+fileName; + try { + uri = Uri.parse(newUri); + } catch (Exception e) { + logger.error(e); + } + + param.args[1] = uri; + }) + ); + + } + + @Override + public void stop(Context context) { + patcher.unpatchAll(); + } + + +}