Fix up inheritance so it works.

This commit is contained in:
clienthax 2020-12-25 23:51:17 +00:00
parent 3efcb96735
commit 018c188299
41 changed files with 564 additions and 126 deletions

View File

@ -1,8 +1,9 @@
package com.discord.app; package com.discord.app;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexEdit @DexIgnore
public class App { public class App {

View File

@ -0,0 +1,11 @@
package com.discord.app;
import lanchon.dexpatcher.annotation.DexIgnore;
import rx.subjects.Subject;
@DexIgnore
public interface AppComponent {
@DexIgnore
Subject<Void, Void> getUnsubscribeSignal();
}

View File

@ -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<Void, Void> getUnsubscribeSignal() {
return null;
}
@DexIgnore
public void requestMicrophone(Function0<Unit> function0) {
}
@DexIgnore
public void requestVideoCallPermissions(Function0<Unit> function0) {
}
@DexIgnore
public File getImageFile() {
return null;
}
}

View File

@ -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<Unit> function0);
@DexIgnore
void requestVideoCallPermissions(Function0<Unit> function0);
}
}

View File

@ -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;
}

View File

@ -1,7 +1,10 @@
package com.discord.models.domain; package com.discord.models.domain;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class ModelAllowedMentions { public class ModelAllowedMentions {
} }

View File

@ -1,7 +1,10 @@
package com.discord.models.domain; package com.discord.models.domain;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class ModelApplication { public class ModelApplication {
} }

View File

@ -1,9 +1,17 @@
package com.discord.models.domain; package com.discord.models.domain;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class ModelChannel { public class ModelChannel implements Model {
@DexIgnore
@Override
public void assignField(JsonReader jsonReader) throws IOException {
}
@DexIgnore @DexIgnore
public static class RecipientNick { public static class RecipientNick {

View File

@ -1,9 +1,17 @@
package com.discord.models.domain; package com.discord.models.domain;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class ModelGuildMember { public class ModelGuildMember implements Model {
@DexIgnore
@Override
public void assignField(JsonReader jsonReader) throws IOException {
}
@DexIgnore @DexIgnore
public static class Computed { public static class Computed {

View File

@ -1,9 +1,17 @@
package com.discord.models.domain; package com.discord.models.domain;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class ModelMessage { public class ModelMessage implements Model {
@DexIgnore
@Override
public void assignField(JsonReader jsonReader) throws IOException {
}
@DexIgnore @DexIgnore
public static class MessageReference { public static class MessageReference {

View File

@ -3,11 +3,14 @@ package com.discord.models.domain;
import com.PatchConfig; import com.PatchConfig;
import com.discordtest.BuildConfig; import com.discordtest.BuildConfig;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexEdit
public class ModelMessageEmbed { public class ModelMessageEmbed implements Model {
// nospoiler patch // nospoiler patch
@ -21,4 +24,9 @@ public class ModelMessageEmbed {
return false; return false;
} }
@DexIgnore
@Override
public void assignField(JsonReader jsonReader) throws IOException {
}
} }

View File

@ -3,6 +3,7 @@ package com.discord.models.domain;
import com.PatchConfig; import com.PatchConfig;
import com.discordtest.BuildConfig; import com.discordtest.BuildConfig;
import java.io.IOException;
import java.util.Map; import java.util.Map;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
@ -10,7 +11,7 @@ import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexEdit
public class ModelUser { public class ModelUser implements Model {
// showtag patch // showtag patch
@ -31,4 +32,11 @@ public class ModelUser {
return null; return null;
} }
//end of showtag patch
@DexIgnore
@Override
public void assignField(JsonReader jsonReader) throws IOException {
}
} }

View File

@ -1,7 +1,18 @@
package com.discord.models.domain.activity; package com.discord.models.domain.activity;
import com.discord.models.domain.Model;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class ModelActivity { public class ModelActivity implements Model {
@DexIgnore
@Override
public void assignField(JsonReader jsonReader) throws IOException {
}
} }

View File

@ -0,0 +1,8 @@
package com.discord.simpleast.core.node;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public class Node<R> {
}

View File

@ -17,13 +17,15 @@ import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
import rx.Observable; import rx.Observable;
@DexEdit @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 // slashmessages patch
// Wrap edit function to check for commands // Wrap edit function to check for commands
@SuppressWarnings("InfiniteRecursion") // Wrapped method
@DexWrap @DexWrap
public final void editMessage(long j, long j2, String str) { public final void editMessage(long j, long j2, String str) {
if (!PatchConfig.SLASH_COMMANDS_ENABLED) { if (!PatchConfig.SLASH_COMMANDS_ENABLED) {
@ -37,6 +39,7 @@ public final class StoreMessages {
} }
// Wrap send function to check for commands // Wrap send function to check for commands
@SuppressWarnings("InfiniteRecursion") // Wrapped method
@DexWrap @DexWrap
public final Observable<MessageResult> sendMessage(long j, public final Observable<MessageResult> sendMessage(long j,
ModelUser modelUser, ModelUser modelUser,
@ -64,84 +67,105 @@ public final class StoreMessages {
// Add in helper functions // Add in helper functions
@DexAdd @DexAdd
public static final String interceptEditMessage(String str) { public static String interceptEditMessage(String str) {
return str.startsWith("/") ? slashCommands(str) : str; return str.startsWith("/") ? slashCommands(str) : str;
} }
@DexAdd @DexAdd
public static final String interceptSendMessage(String str) { public static String interceptSendMessage(String str) {
StoreStream.getUserSettings().setImageSpoiler(false); StoreStream.getUserSettings().setImageSpoiler(false);
return str.startsWith("/") ? slashCommands(str) : str; return str.startsWith("/") ? slashCommands(str) : str;
} }
@DexAdd @DexAdd
public static String slashCommands(String str) {
String msg = str.trim();
public static final String slashCommands(String str) { String command = "";
String trim = str.trim(); String remaining = "";
if (trim.startsWith("/upper ")) {
trim = slashUpper(trim); int spacePos = str.indexOf(" ");
} else if (trim.startsWith("/lower ")) { if (spacePos == -1) {
trim = slashLower(trim); // Assume entire input is command
} else if (trim.startsWith("/bold ")) { command = str.substring(1);
trim = slashBold(trim); } else {
} else if (trim.startsWith("/spoiler ")) { // Split command and remaining
trim = slashSpoiler(trim); command = str.substring(0, spacePos);
} else if (trim.startsWith("/me ")) { remaining = str.substring(spacePos + 1);
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);
} }
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 @DexAdd
public static final String slashBold(String str) { public static String slashSlap(String remaining) {
String substring = str.substring(6); return "*Slaps "+remaining+" around a bit with a large trout.*";
return "**" + substring + "**";
} }
@DexAdd @DexAdd
public static final String slashClap(String str) { public static String slashBold(String remaining) {
return str.substring(6).replace(" ", " :clap: "); return "**" + remaining + "**";
} }
@DexAdd @DexAdd
public static final String slashCtc(String str) { public static String slashClap(String remaining) {
String substring = str.substring(5); return remaining.replace(" ", " :clap: ");
if (substring.startsWith("channelleak ")) { }
StoreStream.getUserSettings().setLeakChannels(substring.substring(12).startsWith("false"));
@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."; return "CTC: Successfully set channelleak state.";
} else if (substring.startsWith("showtyping ")) { } else if (subcommand.startsWith("showtyping ")) {
StoreStream.getUserSettings().setShowTyping(substring.substring(11).startsWith("true")); StoreStream.getUserSettings().setShowTyping(subcommand.substring(11).startsWith("true"));
return "CTC: Successfully set showtyping state."; return "CTC: Successfully set showtyping state.";
} else if (substring.startsWith("token ")) { } else if (subcommand.startsWith("token ")) {
StoreStream.getUserSettings().setStoredToken(substring.substring(6)); StoreStream.getUserSettings().setStoredToken(subcommand.substring(6));
return "CTC: Successfully changed token. Please restart application."; return "CTC: Successfully changed token. Please restart application.";
} else if (substring.startsWith("token")) { } else if (subcommand.startsWith("token")) {
return StoreStream.getUserSettings().getStoredToken(); return StoreStream.getUserSettings().getStoredToken();
} else { } else {
if (substring.startsWith("account ")) { if (subcommand.startsWith("account ")) {
String trim = substring.substring(8).trim(); String trim = subcommand.substring(8).trim();
StoreUserSettings userSettings = StoreStream.getUserSettings(); StoreUserSettings userSettings = StoreStream.getUserSettings();
String accountToken = userSettings.getAccountToken(trim); String accountToken = userSettings.getAccountToken(trim);
if (accountToken.startsWith("none")) { if (accountToken.startsWith("none")) {
@ -149,8 +173,8 @@ public final class StoreMessages {
} }
userSettings.setStoredToken(accountToken); userSettings.setStoredToken(accountToken);
return "CTC: Successfully changed accounts. Please restart application."; return "CTC: Successfully changed accounts. Please restart application.";
} else if (substring.startsWith("addaccount ")) { } else if (subcommand.startsWith("addaccount ")) {
String substring2 = substring.substring(11); String substring2 = subcommand.substring(11);
String substring3 = substring2.substring(substring2.indexOf(" ")); String substring3 = substring2.substring(substring2.indexOf(" "));
String trim2 = substring2.replace(substring3, "").trim(); String trim2 = substring2.replace(substring3, "").trim();
String trim3 = substring3.trim(); String trim3 = substring3.trim();
@ -160,21 +184,21 @@ public final class StoreMessages {
} }
userSettings2.setAccountToken(trim2, trim3); userSettings2.setAccountToken(trim2, trim3);
return "CTC: Added account."; return "CTC: Added account.";
} else if (substring.startsWith("nodelete ")) { } else if (subcommand.startsWith("nodelete ")) {
StoreStream.getUserSettings().setNoDelete(substring.substring(9).startsWith("true")); StoreStream.getUserSettings().setNoDelete(subcommand.substring(9).startsWith("true"));
return "CTC: Successfully set nodelete state."; 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)"; return "CTC: No known command supplied. (available: token, showtyping, channelleak, addaccount, account, nodelete, gifautoplay. Everything except specified token needs to be lowercase)";
} else { } else {
StoreStream.getUserSettings().setAutoplayGifs(substring.substring(12).startsWith("true")); StoreStream.getUserSettings().setAutoplayGifs(subcommand.substring(12).startsWith("true"));
return "CTC: Successfully set gifautoplay state."; return "CTC: Successfully set gifautoplay state.";
} }
} }
} }
@DexAdd @DexAdd
public static String slashFlip(String str) { public static String slashFlip(String remaining) {
StringBuilder sb = new StringBuilder(str.substring(6).toLowerCase()); StringBuilder sb = new StringBuilder(remaining.toLowerCase());
sb.reverse(); sb.reverse();
return sb.toString().replace("a", "ɐ") return sb.toString().replace("a", "ɐ")
.replace("b", "q") .replace("b", "q")
@ -205,8 +229,8 @@ public final class StoreMessages {
} }
@DexAdd @DexAdd
public static String slashFw(String str) { public static String slashFw(String remaining) {
return str.substring(4).replace(" ", " ") return remaining.replace(" ", " ")
.replace("!", "") .replace("!", "")
.replace("#", "") .replace("#", "")
.replace("$", "") .replace("$", "")
@ -302,8 +326,8 @@ public final class StoreMessages {
} }
@DexAdd @DexAdd
public static String slashGordon(String str) { public static String slashGordon(String remaining) {
return str.substring(8).replace("a", "𝗮") return remaining.replace("a", "𝗮")
.replace("b", "𝗯") .replace("b", "𝗯")
.replace("c", "𝗰") .replace("c", "𝗰")
.replace("d", "𝗱") .replace("d", "𝗱")
@ -368,24 +392,23 @@ public final class StoreMessages {
} }
@DexAdd @DexAdd
public static String slashLenny(String str) { public static String slashLenny(String remaining) {
return str.substring(6) + " ( ͡° ͜ʖ ͡°)"; return remaining + " ( ͡° ͜ʖ ͡°)";
} }
@DexAdd @DexAdd
public static String slashLower(String str) { public static String slashLower(String remaining) {
return str.substring(7).toLowerCase(); return remaining.toLowerCase();
} }
@DexAdd @DexAdd
public static String slashMe(String str) { public static String slashMe(String remaining) {
String substring = str.substring(4); return "*" + remaining + "*";
return "*" + substring + "*";
} }
@DexAdd @DexAdd
public static String slashMorse(String str) { public static String slashMorse(String remaining) {
return str.substring(7).toUpperCase().replace(" ", "/ ") return remaining.toUpperCase().replace(" ", "/ ")
.replace(".", ".-.-.- ") .replace(".", ".-.-.- ")
.replace(",", "--..-- ") .replace(",", "--..-- ")
.replace(":", "---... ") .replace(":", "---... ")
@ -434,8 +457,8 @@ public final class StoreMessages {
} }
@DexAdd @DexAdd
public static String slashOwo(String str) { public static String slashOwo(String remaining) {
return str.substring(5).replaceAll("(?:r|l)", "w") return remaining.replaceAll("(?:r|l)", "w")
.replaceAll("(?:R|L)", "W") .replaceAll("(?:R|L)", "W")
.replaceAll("n([aeiou])", "ny$1") .replaceAll("n([aeiou])", "ny$1")
.replaceAll("N([aeiou])", "Ny$1") .replaceAll("N([aeiou])", "Ny$1")
@ -444,37 +467,34 @@ public final class StoreMessages {
} }
@DexAdd @DexAdd
public static String slashSmall(String str) { public static String slashSmall(String remaining) {
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", ""); 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 @DexAdd
public static String slashSmaller(String str) { public static String slashSmaller(String remaining) {
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", ""); 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 @DexAdd
public static String slashSpoiler(String str) { public static String slashSpoiler(String remaining) {
String substring = str.substring(9); return "||" + remaining + "||";
return "||" + substring + "||";
} }
@DexAdd @DexAdd
public static String slashSpoilerImg(String str) { public static String slashSpoilerImg(String remaining) {
String substring = str.substring(11);
StoreStream.getUserSettings().setImageSpoiler(true); StoreStream.getUserSettings().setImageSpoiler(true);
return substring; return remaining;
} }
@DexAdd @DexAdd
public static String slashSt(String str) { public static String slashSt(String remaining) {
String substring = str.substring(4); return "~~" + remaining + "~~";
return "~~" + substring + "~~";
} }
@DexAdd @DexAdd
public static String slashUpper(String str) { public static String slashUpper(String remaining) {
return str.substring(7).toUpperCase(); return remaining.toUpperCase();
} }
} }

View File

@ -1,6 +1,11 @@
package com.discord.utilities.analytics; package com.discord.utilities.analytics;
import android.app.Activity; import android.app.Activity;
import android.app.Application;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.PatchConfig; import com.PatchConfig;
@ -10,7 +15,7 @@ import lanchon.dexpatcher.annotation.DexReplace;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexEdit
public class AdjustConfig { public final class AdjustConfig {
// notrack patches // notrack patches
@ -18,7 +23,7 @@ public class AdjustConfig {
private static final String ADJUST_APP_TOKEN = "aaaaaaaaaaaa"; // TODO toggle private static final String ADJUST_APP_TOKEN = "aaaaaaaaaaaa"; // TODO toggle
@DexEdit @DexEdit
public static final class AdjustLifecycleListener { public static final class AdjustLifecycleListener implements Application.ActivityLifecycleCallbacks {
@DexWrap @DexWrap
public void onActivityPaused(Activity activity) { 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) {
}
} }

View File

@ -1,12 +1,14 @@
package com.discord.utilities.analytics; package com.discord.utilities.analytics;
import com.PatchConfig; import com.PatchConfig;
import com.discord.simpleast.core.node.Node;
import java.util.Map; import java.util.Map;
import kotlin.Pair; import kotlin.Pair;
import kotlin.jvm.functions.Function0; import kotlin.jvm.functions.Function0;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexEdit
@ -29,7 +31,7 @@ public class AnalyticsUtils {
@SuppressWarnings("UnnecessaryReturnStatement") @SuppressWarnings("UnnecessaryReturnStatement")
@DexWrap @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) { if (!PatchConfig.NOTRACK_ENABLED) {
// Patch not enabled // Patch not enabled
setTrackingData$default(tracker, str, z, i, obj); setTrackingData$default(tracker, str, z, i, obj);
@ -39,7 +41,7 @@ public class AnalyticsUtils {
@SuppressWarnings("UnnecessaryReturnStatement") @SuppressWarnings("UnnecessaryReturnStatement")
@DexWrap @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) { if (!PatchConfig.NOTRACK_ENABLED) {
// Patch not enabled // Patch not enabled
track$default(tracker, str, map, i, obj); track$default(tracker, str, map, i, obj);

View File

@ -1,16 +1,24 @@
package com.discord.utilities.textprocessing; package com.discord.utilities.textprocessing;
import com.PatchConfig; import com.PatchConfig;
import com.discordtest.BuildConfig; import com.discord.simpleast.core.node.Node;
import java.util.Collection; import java.util.Collection;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexReplace; import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @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 // embedlinks patch
@DexWrap @DexWrap

View File

@ -6,8 +6,9 @@ import java.util.regex.Pattern;
import lanchon.dexpatcher.annotation.DexAdd; import lanchon.dexpatcher.annotation.DexAdd;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexEdit @DexIgnore//TODO
public class Rules { public class Rules {
// pseudonitro-viewer patch // pseudonitro-viewer patch

View File

@ -7,7 +7,7 @@ import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexIgnore//TODO
public class SpoilerNode { public class SpoilerNode {
// nospoiler patch // nospoiler patch

View File

@ -1,4 +1,4 @@
package com.discord.view.extensions; package com.discord.utilities.view.extensions;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;

View File

@ -1,17 +1,25 @@
package com.discord.widgets.auth; package com.discord.widgets.auth;
import com.PatchConfig; import com.PatchConfig;
import com.discord.app.AppFragment;
import com.discord.stores.StoreStream; 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.discord.views.phone.PhoneOrEmailInputView;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
import kotlin.properties.ReadOnlyProperty;
import kotlin.reflect.KProperty;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexReplace;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexEdit
public class WidgetAuthLogin { @SuppressWarnings({"rawtypes", "unchecked", "ConstantConditions", "FinalPrivateMethod"})
public class WidgetAuthLogin extends AppFragment {
@DexIgnore
public WidgetAuthLogin() {}
@DexWrap @DexWrap
private final void login(String str, boolean z) { private final void login(String str, boolean z) {
@ -31,14 +39,27 @@ public class WidgetAuthLogin {
login(str, z); login(str, z);
} }
@SuppressWarnings("rawtypes")
@DexIgnore @DexIgnore
public final PhoneOrEmailInputView getLoginWrap() { private final ReadOnlyProperty loginWrap$delegate = null;
return 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 @DexReplace(target = "getPasswordWrap")
public final TextInputLayout getPasswordWrap() { private final TextInputLayout getPasswordWrap() {
return null; return (TextInputLayout) this.passwordWrap$delegate.getValue(this, $$delegatedProperties[2]);
} }
} }

View File

@ -9,9 +9,10 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import lanchon.dexpatcher.annotation.DexEdit; import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit @DexIgnore//TODO
public class EmojiPickerViewModel { public class EmojiPickerViewModel {
@DexEdit @DexEdit

View File

@ -10,12 +10,11 @@ import lanchon.dexpatcher.annotation.DexIgnore;
import lanchon.dexpatcher.annotation.DexReplace; import lanchon.dexpatcher.annotation.DexReplace;
import lanchon.dexpatcher.annotation.DexWrap; import lanchon.dexpatcher.annotation.DexWrap;
@DexEdit(target = "WidgetChatList$1") // Lambda class made in WidgetChatList.createAdapter
public class WidgetChatList$1 { @DexEdit
public class WidgetChatList$1 implements com.discord.widgets.chat.list.WidgetChatListAdapter.EventHandler {
// start of profilemention patch // start of profilemention patch
// TODO verify patched correctly
@DexWrap @DexWrap
public void onMessageAuthorAvatarClicked(@NonNull ModelMessage modelMessage, long j) { public void onMessageAuthorAvatarClicked(@NonNull ModelMessage modelMessage, long j) {
if (!PatchConfig.PROFILEMENTION_ENABLED) { if (!PatchConfig.PROFILEMENTION_ENABLED) {
@ -27,11 +26,11 @@ public class WidgetChatList$1 {
onMessageAuthorNameClicked(modelMessage, j); onMessageAuthorNameClicked(modelMessage, j);
} }
// end of profilemention patch
@DexIgnore @DexIgnore
public void onMessageAuthorNameClicked(@NonNull ModelMessage modelMessage, long j) { public void onMessageAuthorNameClicked(@NonNull ModelMessage modelMessage, long j) {
} }
// end of profilemention patch
} }

View File

@ -0,0 +1,13 @@
package com.discord.widgets.chat.list;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public class WidgetChatListAdapter {
@DexIgnore
public interface EventHandler {
}
}

View File

@ -4,6 +4,8 @@ import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import com.PatchConfig; import com.PatchConfig;
import com.discord.app.AppFragment;
import com.discord.widgets.tabs.OnTabSelectedListener;
import com.discordtest.BuildConfig; import com.discordtest.BuildConfig;
import lanchon.dexpatcher.annotation.DexAppend; import lanchon.dexpatcher.annotation.DexAppend;
@ -11,7 +13,7 @@ import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexEdit @DexEdit
public class WidgetSettings { public class WidgetSettings extends AppFragment implements OnTabSelectedListener {
// customversion patch // customversion patch
@ -34,4 +36,11 @@ public class WidgetSettings {
return null; return null;
} }
@DexIgnore
@Override
public void onTabSelected() {
}
} }

View File

@ -0,0 +1,9 @@
package com.discord.widgets.tabs;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public interface OnTabSelectedListener {
@DexIgnore
void onTabSelected();
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -0,0 +1,15 @@
package g0;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public interface g<T> {
@DexIgnore
void onCompleted();
@DexIgnore
void onError(Throwable th);
@DexIgnore
void onNext(T t);
}

View File

@ -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";
}
}

View File

@ -3,5 +3,7 @@ package kotlin.jvm.functions;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore @DexIgnore
public class Function0 { public interface Function0<R> {
@DexIgnore
R invoke();
} }

View File

@ -0,0 +1,10 @@
package kotlin.properties;
import kotlin.reflect.KProperty;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public interface ReadOnlyProperty<T, V> {
@DexIgnore
V getValue(T t, KProperty<?> kProperty);
}

View File

@ -0,0 +1,9 @@
package kotlin.reflect;
import lanchon.dexpatcher.annotation.DexIgnore;
import x.q.a;
@DexIgnore
public interface KCallable<R> extends a {
}

View File

@ -0,0 +1,13 @@
package kotlin.reflect;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public interface KProperty<V> extends KCallable<V> {
@DexIgnore
boolean isConst();
@DexIgnore
boolean isLateinit();
}

View File

@ -1,8 +1,13 @@
package rx; package rx;
import lanchon.dexpatcher.annotation.DexIgnore; import lanchon.dexpatcher.annotation.DexIgnore;
import rx.functions.Action1;
@DexIgnore @DexIgnore
public class Observable<T> { public class Observable<T> {
@DexIgnore
public interface a<T> extends Action1<Subscriber<? super T>> {
}
} }

View File

@ -0,0 +1,9 @@
package rx;
import g0.g;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public abstract class Subscriber<T> implements g<T>, Subscription {
}

View File

@ -0,0 +1,12 @@
package rx;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public interface Subscription {
@DexIgnore
boolean isUnsubscribed();
@DexIgnore
void unsubscribe();
}

View File

@ -0,0 +1,9 @@
package rx.functions;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public interface Action1<T> {
@DexIgnore
void call(T t);
}

View File

@ -0,0 +1,14 @@
package rx.subjects;
import lanchon.dexpatcher.annotation.DexIgnore;
import g0.g;
import rx.Observable;
@DexIgnore
public abstract class Subject<T, R> extends Observable<R> implements g<T> {
@DexIgnore
public Subject(Observable.a<R> aVar) {
}
}

View File

@ -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<Annotation> getAnnotations();
}