aboutsummaryrefslogtreecommitdiff
path: root/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'juick-server/src/main/java/com/juick/server/ActivityPubManager.java')
-rw-r--r--juick-server/src/main/java/com/juick/server/ActivityPubManager.java17
1 files changed, 15 insertions, 2 deletions
diff --git a/juick-server/src/main/java/com/juick/server/ActivityPubManager.java b/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
index 223d28fd..17522423 100644
--- a/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
+++ b/juick-server/src/main/java/com/juick/server/ActivityPubManager.java
@@ -8,7 +8,9 @@ import com.juick.server.api.activity.model.Person;
import com.juick.server.api.activity.model.activities.Accept;
import com.juick.server.api.activity.model.activities.Create;
import com.juick.service.SocialService;
+import com.juick.service.activities.ActivityListener;
import com.juick.service.activities.FollowEvent;
+import com.juick.service.activities.UndoFollowEvent;
import com.juick.service.component.*;
import com.juick.util.MessageUtils;
import org.apache.commons.lang3.StringUtils;
@@ -27,7 +29,7 @@ import java.net.URI;
import java.util.Collections;
@Component
-public class ActivityPubManager implements ApplicationListener<FollowEvent>, NotificationListener {
+public class ActivityPubManager implements ActivityListener, NotificationListener {
private static final Logger logger = LoggerFactory.getLogger(ActivityPubManager.class);
@Inject
SignatureManager signatureManager;
@@ -46,7 +48,7 @@ public class ActivityPubManager implements ApplicationListener<FollowEvent>, Not
}
@Override
- public void onApplicationEvent(@Nonnull FollowEvent followEvent) {
+ public void processFollowEvent(@Nonnull FollowEvent followEvent) {
String acct = (String)followEvent.getRequest().getObject();
logger.info("received follower request to {}", acct);
User followedUser = socialService.getUserByAccountUri(acct);
@@ -68,6 +70,17 @@ public class ActivityPubManager implements ApplicationListener<FollowEvent>, Not
}
@Override
+ public void undoFollowEvent(UndoFollowEvent event) {
+ String actor = event.getActor();
+ String me = (String)event.getFollowRequest().getObject();
+ logger.info("{} stopping to follow {}", actor, me);
+ User followedUser = socialService.getUserByAccountUri(me);
+ if (!followedUser.isAnonymous()) {
+ socialService.removeFollower(followedUser, actor);
+ }
+ }
+
+ @Override
public void processMessageEvent(MessageEvent messageEvent) {
Message msg = messageEvent.getMessage();
User user = msg.getUser();