refactor(Tumblr): Use a common filter patch (#479)

Co-authored-by: oSumAtrIX <johan.melkonyan1@web.de>
This commit is contained in:
Temm 2023-10-01 05:12:00 +02:00 committed by GitHub
parent c992289d59
commit 1689bf4125
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,32 @@
package app.revanced.tumblr.patches;
import com.tumblr.rumblr.model.TimelineObject;
import com.tumblr.rumblr.model.Timelineable;
import java.util.HashSet;
import java.util.List;
public final class TimelineFilterPatch {
private static final HashSet<String> blockedObjectTypes = new HashSet<>();
static {
// This dummy gets removed by the TimelineFilterPatch and in its place,
// equivalent instructions with a different constant string
// will be inserted for each Timeline object type filter.
// Modifying this line may break the patch.
blockedObjectTypes.add("BLOCKED_OBJECT_DUMMY");
}
// Calls to this method are injected where the list of Timeline objects is first received.
// We modify the list filter out elements that we want to hide.
public static void filterTimeline(final List<TimelineObject<? extends Timelineable>> timelineObjects) {
final var iterator = timelineObjects.iterator();
while (iterator.hasNext()) {
var timelineElement = iterator.next();
if (timelineElement == null) continue;
String elementType = timelineElement.getData().getTimelineObjectType().toString();
if (blockedObjectTypes.contains(elementType)) iterator.remove();
}
}
}

View File

@ -0,0 +1,8 @@
package com.tumblr.rumblr.model;
public class TimelineObject<T extends Timelineable> {
public final T getData() {
throw new UnsupportedOperationException("Stub");
}
}

View File

@ -0,0 +1,4 @@
package com.tumblr.rumblr.model;
public enum TimelineObjectType {
}

View File

@ -0,0 +1,5 @@
package com.tumblr.rumblr.model;
public interface Timelineable {
TimelineObjectType getTimelineObjectType();
}