diff --git a/app/src/main/java/com/discord/app/App.java b/app/src/main/java/com/discord/app/App.java index 680b7e8..9221002 100644 --- a/app/src/main/java/com/discord/app/App.java +++ b/app/src/main/java/com/discord/app/App.java @@ -1,8 +1,9 @@ package com.discord.app; import lanchon.dexpatcher.annotation.DexEdit; +import lanchon.dexpatcher.annotation.DexIgnore; -@DexEdit +@DexIgnore public class App { diff --git a/app/src/main/java/com/discord/app/AppComponent.java b/app/src/main/java/com/discord/app/AppComponent.java new file mode 100644 index 0000000..bec2d6a --- /dev/null +++ b/app/src/main/java/com/discord/app/AppComponent.java @@ -0,0 +1,11 @@ +package com.discord.app; + +import lanchon.dexpatcher.annotation.DexIgnore; +import rx.subjects.Subject; + + +@DexIgnore +public interface AppComponent { + @DexIgnore + Subject getUnsubscribeSignal(); +} diff --git a/app/src/main/java/com/discord/app/AppFragment.java b/app/src/main/java/com/discord/app/AppFragment.java new file mode 100644 index 0000000..641a0df --- /dev/null +++ b/app/src/main/java/com/discord/app/AppFragment.java @@ -0,0 +1,36 @@ +package com.discord.app; + +import android.app.Fragment; + +import com.miguelgaeta.media_picker.MediaPicker; + +import java.io.File; + +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import lanchon.dexpatcher.annotation.DexIgnore; +import rx.subjects.Subject; + +@DexIgnore +public class AppFragment extends Fragment implements AppComponent, AppPermissions.Requests, MediaPicker.Provider { + + @DexIgnore + public Subject getUnsubscribeSignal() { + return null; + } + + @DexIgnore + public void requestMicrophone(Function0 function0) { + + } + + @DexIgnore + public void requestVideoCallPermissions(Function0 function0) { + + } + + @DexIgnore + public File getImageFile() { + return null; + } +} diff --git a/app/src/main/java/com/discord/app/AppPermissions.java b/app/src/main/java/com/discord/app/AppPermissions.java new file mode 100644 index 0000000..863c042 --- /dev/null +++ b/app/src/main/java/com/discord/app/AppPermissions.java @@ -0,0 +1,19 @@ +package com.discord.app; + +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public final class AppPermissions { + + @DexIgnore + public interface Requests { + @DexIgnore + void requestMicrophone(Function0 function0); + + @DexIgnore + void requestVideoCallPermissions(Function0 function0); + } + +} diff --git a/app/src/main/java/com/discord/models/domain/Model.java b/app/src/main/java/com/discord/models/domain/Model.java new file mode 100644 index 0000000..f7081a7 --- /dev/null +++ b/app/src/main/java/com/discord/models/domain/Model.java @@ -0,0 +1,25 @@ +package com.discord.models.domain; + +import java.io.Closeable; +import java.io.IOException; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface Model { + + @DexIgnore + public static class JsonReader implements Closeable { + + @DexIgnore + @Override + public void close() throws IOException { + + } + + } + + @DexIgnore + void assignField(JsonReader jsonReader) throws IOException; + +} diff --git a/app/src/main/java/com/discord/models/domain/ModelAllowedMentions.java b/app/src/main/java/com/discord/models/domain/ModelAllowedMentions.java index dfeef09..c8d08ed 100644 --- a/app/src/main/java/com/discord/models/domain/ModelAllowedMentions.java +++ b/app/src/main/java/com/discord/models/domain/ModelAllowedMentions.java @@ -1,7 +1,10 @@ package com.discord.models.domain; +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore public class ModelAllowedMentions { + } diff --git a/app/src/main/java/com/discord/models/domain/ModelApplication.java b/app/src/main/java/com/discord/models/domain/ModelApplication.java index f584542..e14a629 100644 --- a/app/src/main/java/com/discord/models/domain/ModelApplication.java +++ b/app/src/main/java/com/discord/models/domain/ModelApplication.java @@ -1,7 +1,10 @@ package com.discord.models.domain; +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore public class ModelApplication { + } diff --git a/app/src/main/java/com/discord/models/domain/ModelChannel.java b/app/src/main/java/com/discord/models/domain/ModelChannel.java index eaee0fc..051bae0 100644 --- a/app/src/main/java/com/discord/models/domain/ModelChannel.java +++ b/app/src/main/java/com/discord/models/domain/ModelChannel.java @@ -1,9 +1,17 @@ package com.discord.models.domain; +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore -public class ModelChannel { +public class ModelChannel implements Model { + + @DexIgnore + @Override + public void assignField(JsonReader jsonReader) throws IOException { + + } @DexIgnore public static class RecipientNick { diff --git a/app/src/main/java/com/discord/models/domain/ModelGuildMember.java b/app/src/main/java/com/discord/models/domain/ModelGuildMember.java index 43e37e4..923e225 100644 --- a/app/src/main/java/com/discord/models/domain/ModelGuildMember.java +++ b/app/src/main/java/com/discord/models/domain/ModelGuildMember.java @@ -1,9 +1,17 @@ package com.discord.models.domain; +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore -public class ModelGuildMember { +public class ModelGuildMember implements Model { + + @DexIgnore + @Override + public void assignField(JsonReader jsonReader) throws IOException { + + } @DexIgnore public static class Computed { diff --git a/app/src/main/java/com/discord/models/domain/ModelMessage.java b/app/src/main/java/com/discord/models/domain/ModelMessage.java index e61ec9b..c94df8c 100644 --- a/app/src/main/java/com/discord/models/domain/ModelMessage.java +++ b/app/src/main/java/com/discord/models/domain/ModelMessage.java @@ -1,9 +1,17 @@ package com.discord.models.domain; +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore -public class ModelMessage { +public class ModelMessage implements Model { + + @DexIgnore + @Override + public void assignField(JsonReader jsonReader) throws IOException { + + } @DexIgnore public static class MessageReference { diff --git a/app/src/main/java/com/discord/models/domain/ModelMessageEmbed.java b/app/src/main/java/com/discord/models/domain/ModelMessageEmbed.java index 0e0e337..512210a 100644 --- a/app/src/main/java/com/discord/models/domain/ModelMessageEmbed.java +++ b/app/src/main/java/com/discord/models/domain/ModelMessageEmbed.java @@ -3,11 +3,14 @@ package com.discord.models.domain; import com.PatchConfig; import com.discordtest.BuildConfig; +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexEdit; +import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexWrap; @DexEdit -public class ModelMessageEmbed { +public class ModelMessageEmbed implements Model { // nospoiler patch @@ -21,4 +24,9 @@ public class ModelMessageEmbed { return false; } + @DexIgnore + @Override + public void assignField(JsonReader jsonReader) throws IOException { + + } } diff --git a/app/src/main/java/com/discord/models/domain/ModelUser.java b/app/src/main/java/com/discord/models/domain/ModelUser.java index f8bf1ad..b598269 100644 --- a/app/src/main/java/com/discord/models/domain/ModelUser.java +++ b/app/src/main/java/com/discord/models/domain/ModelUser.java @@ -3,6 +3,7 @@ package com.discord.models.domain; import com.PatchConfig; import com.discordtest.BuildConfig; +import java.io.IOException; import java.util.Map; import lanchon.dexpatcher.annotation.DexEdit; @@ -10,7 +11,7 @@ import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexWrap; @DexEdit -public class ModelUser { +public class ModelUser implements Model { // showtag patch @@ -31,4 +32,11 @@ public class ModelUser { return null; } + //end of showtag patch + + @DexIgnore + @Override + public void assignField(JsonReader jsonReader) throws IOException { + + } } \ No newline at end of file diff --git a/app/src/main/java/com/discord/models/domain/activity/ModelActivity.java b/app/src/main/java/com/discord/models/domain/activity/ModelActivity.java index 17384be..e940b40 100644 --- a/app/src/main/java/com/discord/models/domain/activity/ModelActivity.java +++ b/app/src/main/java/com/discord/models/domain/activity/ModelActivity.java @@ -1,7 +1,18 @@ package com.discord.models.domain.activity; +import com.discord.models.domain.Model; + +import java.io.IOException; + import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore -public class ModelActivity { +public class ModelActivity implements Model { + + @DexIgnore + @Override + public void assignField(JsonReader jsonReader) throws IOException { + + } + } diff --git a/app/src/main/java/com/discord/simpleast/core/node/Node.java b/app/src/main/java/com/discord/simpleast/core/node/Node.java new file mode 100644 index 0000000..9a71983 --- /dev/null +++ b/app/src/main/java/com/discord/simpleast/core/node/Node.java @@ -0,0 +1,8 @@ +package com.discord.simpleast.core.node; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public class Node { + +} diff --git a/app/src/main/java/com/discord/stores/StoreMessages.java b/app/src/main/java/com/discord/stores/StoreMessages.java index 24c16ec..3114098 100644 --- a/app/src/main/java/com/discord/stores/StoreMessages.java +++ b/app/src/main/java/com/discord/stores/StoreMessages.java @@ -17,13 +17,15 @@ import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexWrap; import rx.Observable; - @DexEdit -public final class StoreMessages { +public final class StoreMessages extends Store { + + // TODO extra patch that allows @ user selection window to appear when entering a slash command // slashmessages patch // Wrap edit function to check for commands + @SuppressWarnings("InfiniteRecursion") // Wrapped method @DexWrap public final void editMessage(long j, long j2, String str) { if (!PatchConfig.SLASH_COMMANDS_ENABLED) { @@ -37,6 +39,7 @@ public final class StoreMessages { } // Wrap send function to check for commands + @SuppressWarnings("InfiniteRecursion") // Wrapped method @DexWrap public final Observable sendMessage(long j, ModelUser modelUser, @@ -64,84 +67,105 @@ public final class StoreMessages { // Add in helper functions @DexAdd - public static final String interceptEditMessage(String str) { + public static String interceptEditMessage(String str) { return str.startsWith("/") ? slashCommands(str) : str; } @DexAdd - public static final String interceptSendMessage(String str) { + public static String interceptSendMessage(String str) { StoreStream.getUserSettings().setImageSpoiler(false); return str.startsWith("/") ? slashCommands(str) : str; } @DexAdd + public static String slashCommands(String str) { + String msg = str.trim(); - public static final String slashCommands(String str) { - String trim = str.trim(); - if (trim.startsWith("/upper ")) { - trim = slashUpper(trim); - } else if (trim.startsWith("/lower ")) { - trim = slashLower(trim); - } else if (trim.startsWith("/bold ")) { - trim = slashBold(trim); - } else if (trim.startsWith("/spoiler ")) { - trim = slashSpoiler(trim); - } else if (trim.startsWith("/me ")) { - trim = slashMe(trim); - } else if (trim.startsWith("/st ")) { - trim = slashSt(trim); - } else if (trim.startsWith("/lenny")) { - trim = slashLenny(trim); - } else if (trim.startsWith("/fw ")) { - trim = slashFw(trim); - } else if (trim.startsWith("/small ")) { - trim = slashSmall(trim); - } else if (trim.startsWith("/smaller ")) { - trim = slashSmaller(trim); - } else if (trim.startsWith("/flip ")) { - trim = slashFlip(trim); - } else if (trim.startsWith("/clap ")) { - trim = slashClap(trim); - } else if (trim.startsWith("/owo ")) { - trim = slashOwo(trim); - } else if (trim.startsWith("/morse ")) { - trim = slashMorse(trim); - } else if (trim.startsWith("/spoilerimg")) { - trim = slashSpoilerImg(trim); - } else if (trim.startsWith("/gordon ")) { - trim = slashGordon(trim); + String command = ""; + String remaining = ""; + + int spacePos = str.indexOf(" "); + if (spacePos == -1) { + // Assume entire input is command + command = str.substring(1); + } else { + // Split command and remaining + command = str.substring(0, spacePos); + remaining = str.substring(spacePos + 1); } - return trim.trim(); + + + if (msg.startsWith("/upper ")) { + msg = slashUpper(remaining); + } else if (msg.startsWith("/lower ")) { + msg = slashLower(remaining); + } else if (msg.startsWith("/bold ")) { + msg = slashBold(remaining); + } else if (msg.startsWith("/spoiler ")) { + msg = slashSpoiler(remaining); + } else if (msg.startsWith("/me ")) { + msg = slashMe(remaining); + } else if (msg.startsWith("/st ")) { + msg = slashSt(remaining); + } else if (msg.startsWith("/lenny")) { + msg = slashLenny(remaining); + } else if (msg.startsWith("/fw ")) { + msg = slashFw(remaining); + } else if (msg.startsWith("/small ")) { + msg = slashSmall(remaining); + } else if (msg.startsWith("/smaller ")) { + msg = slashSmaller(remaining); + } else if (msg.startsWith("/flip ")) { + msg = slashFlip(remaining); + } else if (msg.startsWith("/clap ")) { + msg = slashClap(remaining); + } else if (msg.startsWith("/owo ")) { + msg = slashOwo(remaining); + } else if (msg.startsWith("/morse ")) { + msg = slashMorse(remaining); + } else if (msg.startsWith("/spoilerimg")) { + msg = slashSpoilerImg(remaining); + } else if (msg.startsWith("/gordon ")) { + msg = slashGordon(remaining); + } else if (msg.startsWith("/slap ")) { + msg = slashSlap(remaining); + } + return msg.trim(); } @DexAdd - public static final String slashBold(String str) { - String substring = str.substring(6); - return "**" + substring + "**"; + public static String slashSlap(String remaining) { + return "*Slaps "+remaining+" around a bit with a large trout.*"; } @DexAdd - public static final String slashClap(String str) { - return str.substring(6).replace(" ", " :clap: "); + public static String slashBold(String remaining) { + return "**" + remaining + "**"; } @DexAdd - public static final String slashCtc(String str) { - String substring = str.substring(5); - if (substring.startsWith("channelleak ")) { - StoreStream.getUserSettings().setLeakChannels(substring.substring(12).startsWith("false")); + public static String slashClap(String remaining) { + return remaining.replace(" ", " :clap: "); + } + + @DexAdd + public static String slashCtc(String remaining) { + String subcommand = remaining.substring(5); + + if (subcommand.startsWith("channelleak ")) { + StoreStream.getUserSettings().setLeakChannels(subcommand.substring(12).startsWith("false")); return "CTC: Successfully set channelleak state."; - } else if (substring.startsWith("showtyping ")) { - StoreStream.getUserSettings().setShowTyping(substring.substring(11).startsWith("true")); + } else if (subcommand.startsWith("showtyping ")) { + StoreStream.getUserSettings().setShowTyping(subcommand.substring(11).startsWith("true")); return "CTC: Successfully set showtyping state."; - } else if (substring.startsWith("token ")) { - StoreStream.getUserSettings().setStoredToken(substring.substring(6)); + } else if (subcommand.startsWith("token ")) { + StoreStream.getUserSettings().setStoredToken(subcommand.substring(6)); return "CTC: Successfully changed token. Please restart application."; - } else if (substring.startsWith("token")) { + } else if (subcommand.startsWith("token")) { return StoreStream.getUserSettings().getStoredToken(); } else { - if (substring.startsWith("account ")) { - String trim = substring.substring(8).trim(); + if (subcommand.startsWith("account ")) { + String trim = subcommand.substring(8).trim(); StoreUserSettings userSettings = StoreStream.getUserSettings(); String accountToken = userSettings.getAccountToken(trim); if (accountToken.startsWith("none")) { @@ -149,8 +173,8 @@ public final class StoreMessages { } userSettings.setStoredToken(accountToken); return "CTC: Successfully changed accounts. Please restart application."; - } else if (substring.startsWith("addaccount ")) { - String substring2 = substring.substring(11); + } else if (subcommand.startsWith("addaccount ")) { + String substring2 = subcommand.substring(11); String substring3 = substring2.substring(substring2.indexOf(" ")); String trim2 = substring2.replace(substring3, "").trim(); String trim3 = substring3.trim(); @@ -160,21 +184,21 @@ public final class StoreMessages { } userSettings2.setAccountToken(trim2, trim3); return "CTC: Added account."; - } else if (substring.startsWith("nodelete ")) { - StoreStream.getUserSettings().setNoDelete(substring.substring(9).startsWith("true")); + } else if (subcommand.startsWith("nodelete ")) { + StoreStream.getUserSettings().setNoDelete(subcommand.substring(9).startsWith("true")); return "CTC: Successfully set nodelete state."; - } else if (!substring.startsWith("gifautoplay ")) { + } else if (!subcommand.startsWith("gifautoplay ")) { return "CTC: No known command supplied. (available: token, showtyping, channelleak, addaccount, account, nodelete, gifautoplay. Everything except specified token needs to be lowercase)"; } else { - StoreStream.getUserSettings().setAutoplayGifs(substring.substring(12).startsWith("true")); + StoreStream.getUserSettings().setAutoplayGifs(subcommand.substring(12).startsWith("true")); return "CTC: Successfully set gifautoplay state."; } } } @DexAdd - public static String slashFlip(String str) { - StringBuilder sb = new StringBuilder(str.substring(6).toLowerCase()); + public static String slashFlip(String remaining) { + StringBuilder sb = new StringBuilder(remaining.toLowerCase()); sb.reverse(); return sb.toString().replace("a", "ɐ") .replace("b", "q") @@ -205,8 +229,8 @@ public final class StoreMessages { } @DexAdd - public static String slashFw(String str) { - return str.substring(4).replace(" ", " ") + public static String slashFw(String remaining) { + return remaining.replace(" ", " ") .replace("!", "!") .replace("#", "#") .replace("$", "$") @@ -302,8 +326,8 @@ public final class StoreMessages { } @DexAdd - public static String slashGordon(String str) { - return str.substring(8).replace("a", "𝗮") + public static String slashGordon(String remaining) { + return remaining.replace("a", "𝗮") .replace("b", "𝗯") .replace("c", "𝗰") .replace("d", "𝗱") @@ -368,24 +392,23 @@ public final class StoreMessages { } @DexAdd - public static String slashLenny(String str) { - return str.substring(6) + " ( ͡° ͜ʖ ͡°)"; + public static String slashLenny(String remaining) { + return remaining + " ( ͡° ͜ʖ ͡°)"; } @DexAdd - public static String slashLower(String str) { - return str.substring(7).toLowerCase(); + public static String slashLower(String remaining) { + return remaining.toLowerCase(); } @DexAdd - public static String slashMe(String str) { - String substring = str.substring(4); - return "*" + substring + "*"; + public static String slashMe(String remaining) { + return "*" + remaining + "*"; } @DexAdd - public static String slashMorse(String str) { - return str.substring(7).toUpperCase().replace(" ", "/ ") + public static String slashMorse(String remaining) { + return remaining.toUpperCase().replace(" ", "/ ") .replace(".", ".-.-.- ") .replace(",", "--..-- ") .replace(":", "---... ") @@ -434,8 +457,8 @@ public final class StoreMessages { } @DexAdd - public static String slashOwo(String str) { - return str.substring(5).replaceAll("(?:r|l)", "w") + public static String slashOwo(String remaining) { + return remaining.replaceAll("(?:r|l)", "w") .replaceAll("(?:R|L)", "W") .replaceAll("n([aeiou])", "ny$1") .replaceAll("N([aeiou])", "Ny$1") @@ -444,37 +467,34 @@ public final class StoreMessages { } @DexAdd - public static String slashSmall(String str) { - return str.substring(7).toLowerCase().replace("a", "ᴀ").replace("b", "ʙ").replace("c", "ᴄ").replace("d", "ᴅ").replace("e", "ᴇ").replace("f", "ꜰ").replace("g", "ɢ").replace("h", "ʜ").replace("i", "ɪ").replace("j", "ᴊ").replace("k", "ᴋ").replace("l", "ʟ").replace("m", "ᴍ").replace("n", "ɴ").replace("o", "ᴏ").replace("p", "ᴘ").replace("q", "ǫ").replace("r", "ʀ").replace("s", "s").replace("t", "ᴛ").replace("u", "ᴜ").replace("v", "ᴠ").replace("w", "ᴡ").replace("y", "ʏ").replace("z", "ᴢ"); + public static String slashSmall(String remaining) { + return remaining.toLowerCase().replace("a", "ᴀ").replace("b", "ʙ").replace("c", "ᴄ").replace("d", "ᴅ").replace("e", "ᴇ").replace("f", "ꜰ").replace("g", "ɢ").replace("h", "ʜ").replace("i", "ɪ").replace("j", "ᴊ").replace("k", "ᴋ").replace("l", "ʟ").replace("m", "ᴍ").replace("n", "ɴ").replace("o", "ᴏ").replace("p", "ᴘ").replace("q", "ǫ").replace("r", "ʀ").replace("s", "s").replace("t", "ᴛ").replace("u", "ᴜ").replace("v", "ᴠ").replace("w", "ᴡ").replace("y", "ʏ").replace("z", "ᴢ"); } @DexAdd - public static String slashSmaller(String str) { - return str.substring(9).toLowerCase().replace("a", "ᵃ").replace("b", "ᵇ").replace("c", "ᶜ").replace("d", "ᵈ").replace("e", "ᵉ").replace("f", "ᶠ").replace("g", "ᵍ").replace("h", "ʰ").replace("i", "ᶦ").replace("j", "ʲ").replace("k", "ᵏ").replace("l", "ˡ").replace("m", "ᵐ").replace("n", "ⁿ").replace("o", "ᵒ").replace("p", "ᵖ").replace("q", "ᑫ").replace("r", "ʳ").replace("s", "ˢ").replace("t", "ᵗ").replace("u", "ᵘ").replace("v", "ᵛ").replace("w", "ʷ").replace("x", "ˣ").replace("y", "ʸ").replace("z", "ᶻ"); + public static String slashSmaller(String remaining) { + return remaining.toLowerCase().replace("a", "ᵃ").replace("b", "ᵇ").replace("c", "ᶜ").replace("d", "ᵈ").replace("e", "ᵉ").replace("f", "ᶠ").replace("g", "ᵍ").replace("h", "ʰ").replace("i", "ᶦ").replace("j", "ʲ").replace("k", "ᵏ").replace("l", "ˡ").replace("m", "ᵐ").replace("n", "ⁿ").replace("o", "ᵒ").replace("p", "ᵖ").replace("q", "ᑫ").replace("r", "ʳ").replace("s", "ˢ").replace("t", "ᵗ").replace("u", "ᵘ").replace("v", "ᵛ").replace("w", "ʷ").replace("x", "ˣ").replace("y", "ʸ").replace("z", "ᶻ"); } @DexAdd - public static String slashSpoiler(String str) { - String substring = str.substring(9); - return "||" + substring + "||"; + public static String slashSpoiler(String remaining) { + return "||" + remaining + "||"; } @DexAdd - public static String slashSpoilerImg(String str) { - String substring = str.substring(11); + public static String slashSpoilerImg(String remaining) { StoreStream.getUserSettings().setImageSpoiler(true); - return substring; + return remaining; } @DexAdd - public static String slashSt(String str) { - String substring = str.substring(4); - return "~~" + substring + "~~"; + public static String slashSt(String remaining) { + return "~~" + remaining + "~~"; } @DexAdd - public static String slashUpper(String str) { - return str.substring(7).toUpperCase(); + public static String slashUpper(String remaining) { + return remaining.toUpperCase(); } } diff --git a/app/src/main/java/com/discord/utilities/analytics/AdjustConfig.java b/app/src/main/java/com/discord/utilities/analytics/AdjustConfig.java index bbf5503..d6d5b89 100644 --- a/app/src/main/java/com/discord/utilities/analytics/AdjustConfig.java +++ b/app/src/main/java/com/discord/utilities/analytics/AdjustConfig.java @@ -1,6 +1,11 @@ package com.discord.utilities.analytics; import android.app.Activity; +import android.app.Application; +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import com.PatchConfig; @@ -10,7 +15,7 @@ import lanchon.dexpatcher.annotation.DexReplace; import lanchon.dexpatcher.annotation.DexWrap; @DexEdit -public class AdjustConfig { +public final class AdjustConfig { // notrack patches @@ -18,7 +23,7 @@ public class AdjustConfig { private static final String ADJUST_APP_TOKEN = "aaaaaaaaaaaa"; // TODO toggle @DexEdit - public static final class AdjustLifecycleListener { + public static final class AdjustLifecycleListener implements Application.ActivityLifecycleCallbacks { @DexWrap public void onActivityPaused(Activity activity) { @@ -38,6 +43,35 @@ public class AdjustConfig { } } + @DexIgnore + @Override + public void onActivityStopped(@NonNull Activity activity) { + + } + + @DexIgnore + @Override + public void onActivitySaveInstanceState(@NonNull Activity activity, @NonNull Bundle outState) { + + } + + @DexIgnore + @Override + public void onActivityDestroyed(@NonNull Activity activity) { + + } + + @DexIgnore + @Override + public void onActivityCreated(@NonNull Activity activity, @Nullable Bundle savedInstanceState) { + + } + + @DexIgnore + @Override + public void onActivityStarted(@NonNull Activity activity) { + + } } diff --git a/app/src/main/java/com/discord/utilities/analytics/AnalyticsUtils.java b/app/src/main/java/com/discord/utilities/analytics/AnalyticsUtils.java index 1c6f9cd..345c11a 100644 --- a/app/src/main/java/com/discord/utilities/analytics/AnalyticsUtils.java +++ b/app/src/main/java/com/discord/utilities/analytics/AnalyticsUtils.java @@ -1,12 +1,14 @@ package com.discord.utilities.analytics; import com.PatchConfig; +import com.discord.simpleast.core.node.Node; import java.util.Map; import kotlin.Pair; import kotlin.jvm.functions.Function0; import lanchon.dexpatcher.annotation.DexEdit; +import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexWrap; @DexEdit @@ -29,7 +31,7 @@ public class AnalyticsUtils { @SuppressWarnings("UnnecessaryReturnStatement") @DexWrap - public final synchronized void setTrackingData$default(Tracker tracker, String str, boolean z, int i, Object obj) { + public static final synchronized void setTrackingData$default(Tracker tracker, String str, boolean z, int i, Object obj) { if (!PatchConfig.NOTRACK_ENABLED) { // Patch not enabled setTrackingData$default(tracker, str, z, i, obj); @@ -39,7 +41,7 @@ public class AnalyticsUtils { @SuppressWarnings("UnnecessaryReturnStatement") @DexWrap - public final synchronized void track$default(Tracker tracker, String str, Map map, int i, Object obj) { + public static final synchronized void track$default(Tracker tracker, String str, Map map, int i, Object obj) { if (!PatchConfig.NOTRACK_ENABLED) { // Patch not enabled track$default(tracker, str, map, i, obj); diff --git a/app/src/main/java/com/discord/utilities/textprocessing/MessagePreprocessor.java b/app/src/main/java/com/discord/utilities/textprocessing/MessagePreprocessor.java index ba4fca9..c35baef 100644 --- a/app/src/main/java/com/discord/utilities/textprocessing/MessagePreprocessor.java +++ b/app/src/main/java/com/discord/utilities/textprocessing/MessagePreprocessor.java @@ -1,16 +1,24 @@ package com.discord.utilities.textprocessing; import com.PatchConfig; -import com.discordtest.BuildConfig; +import com.discord.simpleast.core.node.Node; import java.util.Collection; import lanchon.dexpatcher.annotation.DexEdit; -import lanchon.dexpatcher.annotation.DexReplace; +import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexWrap; @DexEdit -public class MessagePreprocessor { +public class MessagePreprocessor implements f.a.k.b.c.a { + + // Interfaces + @DexIgnore + @Override + public void processNode(Node node) { + + } + // end of interfaces // embedlinks patch @DexWrap diff --git a/app/src/main/java/com/discord/utilities/textprocessing/Rules.java b/app/src/main/java/com/discord/utilities/textprocessing/Rules.java index 1fe5d51..5338421 100644 --- a/app/src/main/java/com/discord/utilities/textprocessing/Rules.java +++ b/app/src/main/java/com/discord/utilities/textprocessing/Rules.java @@ -6,8 +6,9 @@ import java.util.regex.Pattern; import lanchon.dexpatcher.annotation.DexAdd; import lanchon.dexpatcher.annotation.DexEdit; +import lanchon.dexpatcher.annotation.DexIgnore; -@DexEdit +@DexIgnore//TODO public class Rules { // pseudonitro-viewer patch diff --git a/app/src/main/java/com/discord/utilities/textprocessing/node/SpoilerNode.java b/app/src/main/java/com/discord/utilities/textprocessing/node/SpoilerNode.java index dfcc78e..629fb74 100644 --- a/app/src/main/java/com/discord/utilities/textprocessing/node/SpoilerNode.java +++ b/app/src/main/java/com/discord/utilities/textprocessing/node/SpoilerNode.java @@ -7,7 +7,7 @@ import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexWrap; -@DexEdit +@DexIgnore//TODO public class SpoilerNode { // nospoiler patch diff --git a/app/src/main/java/com/discord/view/extensions/ViewExtensions.java b/app/src/main/java/com/discord/utilities/view/extensions/ViewExtensions.java similarity index 85% rename from app/src/main/java/com/discord/view/extensions/ViewExtensions.java rename to app/src/main/java/com/discord/utilities/view/extensions/ViewExtensions.java index 5dc2e6c..77d48ae 100644 --- a/app/src/main/java/com/discord/view/extensions/ViewExtensions.java +++ b/app/src/main/java/com/discord/utilities/view/extensions/ViewExtensions.java @@ -1,4 +1,4 @@ -package com.discord.view.extensions; +package com.discord.utilities.view.extensions; import com.google.android.material.textfield.TextInputLayout; diff --git a/app/src/main/java/com/discord/widgets/auth/WidgetAuthLogin.java b/app/src/main/java/com/discord/widgets/auth/WidgetAuthLogin.java index b0d0a7d..a2e3beb 100644 --- a/app/src/main/java/com/discord/widgets/auth/WidgetAuthLogin.java +++ b/app/src/main/java/com/discord/widgets/auth/WidgetAuthLogin.java @@ -1,17 +1,25 @@ package com.discord.widgets.auth; import com.PatchConfig; +import com.discord.app.AppFragment; import com.discord.stores.StoreStream; -import com.discord.view.extensions.ViewExtensions; +import com.discord.utilities.view.extensions.ViewExtensions; import com.discord.views.phone.PhoneOrEmailInputView; import com.google.android.material.textfield.TextInputLayout; +import kotlin.properties.ReadOnlyProperty; +import kotlin.reflect.KProperty; import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexIgnore; +import lanchon.dexpatcher.annotation.DexReplace; import lanchon.dexpatcher.annotation.DexWrap; @DexEdit -public class WidgetAuthLogin { +@SuppressWarnings({"rawtypes", "unchecked", "ConstantConditions", "FinalPrivateMethod"}) +public class WidgetAuthLogin extends AppFragment { + + @DexIgnore + public WidgetAuthLogin() {} @DexWrap private final void login(String str, boolean z) { @@ -31,14 +39,27 @@ public class WidgetAuthLogin { login(str, z); } + @SuppressWarnings("rawtypes") @DexIgnore - public final PhoneOrEmailInputView getLoginWrap() { - return null; + private final ReadOnlyProperty loginWrap$delegate = null; + + @SuppressWarnings("rawtypes") + @DexIgnore + private final ReadOnlyProperty passwordWrap$delegate = null; + + @SuppressWarnings("rawtypes") + @DexIgnore + public static KProperty[] $$delegatedProperties; + + + @DexReplace(target = "getLoginWrap") + private final PhoneOrEmailInputView getLoginWrap() { + return (PhoneOrEmailInputView) this.loginWrap$delegate.getValue(this, $$delegatedProperties[1]); } - @DexIgnore - public final TextInputLayout getPasswordWrap() { - return null; + @DexReplace(target = "getPasswordWrap") + private final TextInputLayout getPasswordWrap() { + return (TextInputLayout) this.passwordWrap$delegate.getValue(this, $$delegatedProperties[2]); } } diff --git a/app/src/main/java/com/discord/widgets/chat/input/emoji/EmojiPickerViewModel.java b/app/src/main/java/com/discord/widgets/chat/input/emoji/EmojiPickerViewModel.java index fe0fa0e..95272e0 100644 --- a/app/src/main/java/com/discord/widgets/chat/input/emoji/EmojiPickerViewModel.java +++ b/app/src/main/java/com/discord/widgets/chat/input/emoji/EmojiPickerViewModel.java @@ -9,9 +9,10 @@ import java.util.ArrayList; import java.util.List; import lanchon.dexpatcher.annotation.DexEdit; +import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexWrap; -@DexEdit +@DexIgnore//TODO public class EmojiPickerViewModel { @DexEdit diff --git a/app/src/main/java/com/discord/widgets/chat/list/WidgetChatList$1.java b/app/src/main/java/com/discord/widgets/chat/list/WidgetChatList$1.java index fdbed31..0eace98 100644 --- a/app/src/main/java/com/discord/widgets/chat/list/WidgetChatList$1.java +++ b/app/src/main/java/com/discord/widgets/chat/list/WidgetChatList$1.java @@ -10,12 +10,11 @@ import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexReplace; import lanchon.dexpatcher.annotation.DexWrap; -@DexEdit(target = "WidgetChatList$1") -public class WidgetChatList$1 { +// Lambda class made in WidgetChatList.createAdapter +@DexEdit +public class WidgetChatList$1 implements com.discord.widgets.chat.list.WidgetChatListAdapter.EventHandler { // start of profilemention patch - - // TODO verify patched correctly @DexWrap public void onMessageAuthorAvatarClicked(@NonNull ModelMessage modelMessage, long j) { if (!PatchConfig.PROFILEMENTION_ENABLED) { @@ -27,11 +26,11 @@ public class WidgetChatList$1 { onMessageAuthorNameClicked(modelMessage, j); } - // end of profilemention patch - @DexIgnore public void onMessageAuthorNameClicked(@NonNull ModelMessage modelMessage, long j) { } + // end of profilemention patch + } diff --git a/app/src/main/java/com/discord/widgets/chat/list/WidgetChatListAdapter.java b/app/src/main/java/com/discord/widgets/chat/list/WidgetChatListAdapter.java new file mode 100644 index 0000000..4e8a192 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/chat/list/WidgetChatListAdapter.java @@ -0,0 +1,13 @@ +package com.discord.widgets.chat.list; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public class WidgetChatListAdapter { + + @DexIgnore + public interface EventHandler { + + } + +} diff --git a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java index f6da4b7..0192e95 100644 --- a/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java +++ b/app/src/main/java/com/discord/widgets/settings/WidgetSettings.java @@ -4,6 +4,8 @@ import android.view.View; import android.widget.TextView; import com.PatchConfig; +import com.discord.app.AppFragment; +import com.discord.widgets.tabs.OnTabSelectedListener; import com.discordtest.BuildConfig; import lanchon.dexpatcher.annotation.DexAppend; @@ -11,7 +13,7 @@ import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexIgnore; @DexEdit -public class WidgetSettings { +public class WidgetSettings extends AppFragment implements OnTabSelectedListener { // customversion patch @@ -34,4 +36,11 @@ public class WidgetSettings { return null; } + @DexIgnore + @Override + public void onTabSelected() { + + } + + } diff --git a/app/src/main/java/com/discord/widgets/tabs/OnTabSelectedListener.java b/app/src/main/java/com/discord/widgets/tabs/OnTabSelectedListener.java new file mode 100644 index 0000000..29e2457 --- /dev/null +++ b/app/src/main/java/com/discord/widgets/tabs/OnTabSelectedListener.java @@ -0,0 +1,9 @@ +package com.discord.widgets.tabs; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface OnTabSelectedListener { + @DexIgnore + void onTabSelected(); +} diff --git a/app/src/main/java/com/miguelgaeta/media_picker/MediaPicker.java b/app/src/main/java/com/miguelgaeta/media_picker/MediaPicker.java new file mode 100644 index 0000000..129538d --- /dev/null +++ b/app/src/main/java/com/miguelgaeta/media_picker/MediaPicker.java @@ -0,0 +1,25 @@ +package com.miguelgaeta.media_picker; + +import android.content.Context; +import android.content.Intent; + +import java.io.File; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public class MediaPicker { + + @DexIgnore + public interface Provider { + @DexIgnore + Context getContext(); + + @DexIgnore + File getImageFile(); + + @DexIgnore + void startActivityForResult(Intent intent, int i); + } + +} diff --git a/app/src/main/java/f/a/k/b/c/a.java b/app/src/main/java/f/a/k/b/c/a.java new file mode 100644 index 0000000..2845108 --- /dev/null +++ b/app/src/main/java/f/a/k/b/c/a.java @@ -0,0 +1,13 @@ +package f.a.k.b.c; + +import com.discord.simpleast.core.node.Node; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface a { + + @DexIgnore + void processNode(Node node); + +} diff --git a/app/src/main/java/g0/g.java b/app/src/main/java/g0/g.java new file mode 100644 index 0000000..1dc486e --- /dev/null +++ b/app/src/main/java/g0/g.java @@ -0,0 +1,15 @@ +package g0; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface g { + @DexIgnore + void onCompleted(); + + @DexIgnore + void onError(Throwable th); + + @DexIgnore + void onNext(T t); +} diff --git a/app/src/main/java/kotlin/Unit.java b/app/src/main/java/kotlin/Unit.java new file mode 100644 index 0000000..0e8bc8f --- /dev/null +++ b/app/src/main/java/kotlin/Unit.java @@ -0,0 +1,16 @@ +package kotlin; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public final class Unit { + + @DexIgnore + public static final Unit a = new Unit(); + + @DexIgnore + public String toString() { + return "kotlin.Unit"; + } + +} diff --git a/app/src/main/java/kotlin/jvm/functions/Function0.java b/app/src/main/java/kotlin/jvm/functions/Function0.java index 0dace88..5c2d862 100644 --- a/app/src/main/java/kotlin/jvm/functions/Function0.java +++ b/app/src/main/java/kotlin/jvm/functions/Function0.java @@ -3,5 +3,7 @@ package kotlin.jvm.functions; import lanchon.dexpatcher.annotation.DexIgnore; @DexIgnore -public class Function0 { +public interface Function0 { + @DexIgnore + R invoke(); } diff --git a/app/src/main/java/kotlin/properties/ReadOnlyProperty.java b/app/src/main/java/kotlin/properties/ReadOnlyProperty.java new file mode 100644 index 0000000..1d9f66d --- /dev/null +++ b/app/src/main/java/kotlin/properties/ReadOnlyProperty.java @@ -0,0 +1,10 @@ +package kotlin.properties; + +import kotlin.reflect.KProperty; +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface ReadOnlyProperty { + @DexIgnore + V getValue(T t, KProperty kProperty); +} diff --git a/app/src/main/java/kotlin/reflect/KCallable.java b/app/src/main/java/kotlin/reflect/KCallable.java new file mode 100644 index 0000000..e63bfa8 --- /dev/null +++ b/app/src/main/java/kotlin/reflect/KCallable.java @@ -0,0 +1,9 @@ +package kotlin.reflect; + +import lanchon.dexpatcher.annotation.DexIgnore; +import x.q.a; + +@DexIgnore +public interface KCallable extends a { + +} diff --git a/app/src/main/java/kotlin/reflect/KProperty.java b/app/src/main/java/kotlin/reflect/KProperty.java new file mode 100644 index 0000000..ad49bff --- /dev/null +++ b/app/src/main/java/kotlin/reflect/KProperty.java @@ -0,0 +1,13 @@ +package kotlin.reflect; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface KProperty extends KCallable { + + @DexIgnore + boolean isConst(); + + @DexIgnore + boolean isLateinit(); +} diff --git a/app/src/main/java/rx/Observable.java b/app/src/main/java/rx/Observable.java index 43c95bc..04ae49c 100644 --- a/app/src/main/java/rx/Observable.java +++ b/app/src/main/java/rx/Observable.java @@ -1,8 +1,13 @@ package rx; import lanchon.dexpatcher.annotation.DexIgnore; +import rx.functions.Action1; @DexIgnore public class Observable { + @DexIgnore + public interface a extends Action1> { + } + } diff --git a/app/src/main/java/rx/Subscriber.java b/app/src/main/java/rx/Subscriber.java new file mode 100644 index 0000000..24f9864 --- /dev/null +++ b/app/src/main/java/rx/Subscriber.java @@ -0,0 +1,9 @@ +package rx; + +import g0.g; +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public abstract class Subscriber implements g, Subscription { + +} diff --git a/app/src/main/java/rx/Subscription.java b/app/src/main/java/rx/Subscription.java new file mode 100644 index 0000000..24d04ac --- /dev/null +++ b/app/src/main/java/rx/Subscription.java @@ -0,0 +1,12 @@ +package rx; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface Subscription { + @DexIgnore + boolean isUnsubscribed(); + + @DexIgnore + void unsubscribe(); +} diff --git a/app/src/main/java/rx/functions/Action1.java b/app/src/main/java/rx/functions/Action1.java new file mode 100644 index 0000000..472c36c --- /dev/null +++ b/app/src/main/java/rx/functions/Action1.java @@ -0,0 +1,9 @@ +package rx.functions; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface Action1 { + @DexIgnore + void call(T t); +} diff --git a/app/src/main/java/rx/subjects/Subject.java b/app/src/main/java/rx/subjects/Subject.java new file mode 100644 index 0000000..8782aa5 --- /dev/null +++ b/app/src/main/java/rx/subjects/Subject.java @@ -0,0 +1,14 @@ +package rx.subjects; + +import lanchon.dexpatcher.annotation.DexIgnore; +import g0.g; +import rx.Observable; + +@DexIgnore +public abstract class Subject extends Observable implements g { + + @DexIgnore + public Subject(Observable.a aVar) { + } + +} diff --git a/app/src/main/java/x/q/a.java b/app/src/main/java/x/q/a.java new file mode 100644 index 0000000..f7a39c5 --- /dev/null +++ b/app/src/main/java/x/q/a.java @@ -0,0 +1,12 @@ +package x.q; + +import java.lang.annotation.Annotation; +import java.util.List; + +import lanchon.dexpatcher.annotation.DexIgnore; + +@DexIgnore +public interface a { + @DexIgnore + List getAnnotations(); +}