mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-10-27 13:29:40 +00:00
Rename callbackevents to topic/subscribers
This commit is contained in:
@@ -1,68 +0,0 @@
|
||||
package com.topjohnwu.magisk.utils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class CallbackEvent {
|
||||
|
||||
public boolean isTriggered = false;
|
||||
private List<WeakReference<Listener>> listeners;
|
||||
|
||||
public void register(Listener l) {
|
||||
if (listeners == null) {
|
||||
listeners = new LinkedList<>();
|
||||
}
|
||||
listeners.add(new WeakReference<>(l));
|
||||
}
|
||||
|
||||
public void unregister() {
|
||||
listeners = null;
|
||||
}
|
||||
|
||||
public void unregister(Listener l) {
|
||||
for (Iterator<WeakReference<Listener>> i = listeners.iterator(); i.hasNext();) {
|
||||
WeakReference<Listener> listener = i.next();
|
||||
if (listener.get() == null || listener.get() == l) {
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void trigger() {
|
||||
trigger(true);
|
||||
}
|
||||
|
||||
public void trigger(boolean b) {
|
||||
isTriggered = b;
|
||||
if (listeners != null) {
|
||||
for (WeakReference<Listener> listener : listeners) {
|
||||
if (listener.get() != null)
|
||||
listener.get().onTrigger(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface Listener {
|
||||
default void registerEvents() {
|
||||
for (CallbackEvent event : getRegisterEvents()) {
|
||||
if (event.isTriggered) {
|
||||
onTrigger(event);
|
||||
}
|
||||
event.register(this);
|
||||
}
|
||||
}
|
||||
default void unregisterEvents() {
|
||||
for (CallbackEvent event : getRegisterEvents()) {
|
||||
event.unregister(this);
|
||||
}
|
||||
}
|
||||
default void onTrigger() {
|
||||
onTrigger(null);
|
||||
}
|
||||
void onTrigger(CallbackEvent event);
|
||||
CallbackEvent[] getRegisterEvents();
|
||||
}
|
||||
}
|
||||
68
app/src/main/java/com/topjohnwu/magisk/utils/Topic.java
Normal file
68
app/src/main/java/com/topjohnwu/magisk/utils/Topic.java
Normal file
@@ -0,0 +1,68 @@
|
||||
package com.topjohnwu.magisk.utils;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class Topic {
|
||||
|
||||
public boolean hasPublished = false;
|
||||
private List<WeakReference<Subscriber>> subscribers;
|
||||
|
||||
public void subscribe(Subscriber sub) {
|
||||
if (subscribers == null) {
|
||||
subscribers = new LinkedList<>();
|
||||
}
|
||||
subscribers.add(new WeakReference<>(sub));
|
||||
}
|
||||
|
||||
public void unsubscribe() {
|
||||
subscribers = null;
|
||||
}
|
||||
|
||||
public void unsubscribe(Subscriber sub) {
|
||||
for (Iterator<WeakReference<Subscriber>> i = subscribers.iterator(); i.hasNext();) {
|
||||
WeakReference<Subscriber> subscriber = i.next();
|
||||
if (subscriber.get() == null || subscriber.get() == sub) {
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void publish() {
|
||||
publish(true);
|
||||
}
|
||||
|
||||
public void publish(boolean b) {
|
||||
hasPublished = b;
|
||||
if (subscribers != null) {
|
||||
for (WeakReference<Subscriber> subscriber : subscribers) {
|
||||
if (subscriber.get() != null)
|
||||
subscriber.get().onTopicPublished(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface Subscriber {
|
||||
default void subscribeTopics() {
|
||||
for (Topic topic : getSubscription()) {
|
||||
if (topic.hasPublished) {
|
||||
onTopicPublished(topic);
|
||||
}
|
||||
topic.subscribe(this);
|
||||
}
|
||||
}
|
||||
default void unsubscribeTopics() {
|
||||
for (Topic event : getSubscription()) {
|
||||
event.unsubscribe(this);
|
||||
}
|
||||
}
|
||||
default void onTopicPublished() {
|
||||
onTopicPublished(null);
|
||||
}
|
||||
void onTopicPublished(Topic topic);
|
||||
Topic[] getSubscription();
|
||||
}
|
||||
}
|
||||
@@ -140,7 +140,7 @@ public class Utils {
|
||||
@Override
|
||||
public void handleResults(Result result) {
|
||||
getMagiskManager(mActivity).SNCheckResult = result;
|
||||
getMagiskManager(mActivity).safetyNetDone.trigger();
|
||||
getMagiskManager(mActivity).safetyNetDone.publish();
|
||||
}
|
||||
}.requestTest();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user