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;
import lanchon.dexpatcher.annotation.DexEdit;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexEdit
@DexIgnore
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;
import java.io.IOException;
import lanchon.dexpatcher.annotation.DexIgnore;
@DexIgnore
public class ModelAllowedMentions {
}

View File

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

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

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

View File

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

View File

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

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 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<MessageResult> 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();
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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 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() {
}
}

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;
@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;
import lanchon.dexpatcher.annotation.DexIgnore;
import rx.functions.Action1;
@DexIgnore
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();
}