diff options
Diffstat (limited to 'src/main/java/com/juick/server')
4 files changed, 27 insertions, 6 deletions
diff --git a/src/main/java/com/juick/server/ActivityPubManager.java b/src/main/java/com/juick/server/ActivityPubManager.java index 4601f7d1..dddb4344 100644 --- a/src/main/java/com/juick/server/ActivityPubManager.java +++ b/src/main/java/com/juick/server/ActivityPubManager.java @@ -26,6 +26,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; +import org.springframework.web.util.UriComponents; import org.springframework.web.util.UriComponentsBuilder; import javax.annotation.Nonnull; @@ -212,6 +213,11 @@ public class ActivityPubManager implements ActivityListener, NotificationListene return uri.replacePath(String.format("/t/%s", tag.getName())).toUriString(); } + public String postId(String messageUri) { + UriComponents uri = UriComponentsBuilder.fromUriString(messageUri).build(); + return uri.getPath().substring(uri.getPath().lastIndexOf('/') + 1).replace("-", "/"); + } + public Note makeNote(Message msg) { Note note = new Note(); note.setId(messageUri(msg)); diff --git a/src/main/java/com/juick/server/CommandsManager.java b/src/main/java/com/juick/server/CommandsManager.java index 3257304b..fa3c5537 100644 --- a/src/main/java/com/juick/server/CommandsManager.java +++ b/src/main/java/com/juick/server/CommandsManager.java @@ -299,7 +299,7 @@ public class CommandsManager { if (msg.get().getUser() == user) { return CommandResult.fromString("You can't recommend your own messages."); } - MessagesService.RecommendStatus status = messagesService.recommendMessage(mid, user.getUid()); + MessagesService.RecommendStatus status = messagesService.recommendMessage(mid, user.getUid(), user.getUri().toASCIIString()); switch (status) { case Added: applicationEventPublisher.publishEvent(new LikeEvent(this, user, msg.get(), diff --git a/src/main/java/com/juick/server/TelegramBotManager.java b/src/main/java/com/juick/server/TelegramBotManager.java index bf2f5a84..1836ffa9 100644 --- a/src/main/java/com/juick/server/TelegramBotManager.java +++ b/src/main/java/com/juick/server/TelegramBotManager.java @@ -18,13 +18,19 @@ package com.juick.server; import com.juick.User; -import com.juick.service.component.*; import com.juick.model.AnonymousUser; import com.juick.model.CommandResult; import com.juick.server.util.HttpUtils; import com.juick.service.MessagesService; import com.juick.service.TelegramService; import com.juick.service.UserService; +import com.juick.service.component.LikeEvent; +import com.juick.service.component.MessageEvent; +import com.juick.service.component.MessageReadEvent; +import com.juick.service.component.NotificationListener; +import com.juick.service.component.PingEvent; +import com.juick.service.component.SubscribeEvent; +import com.juick.service.component.TopEvent; import com.juick.util.MessageUtils; import com.pengrad.telegrambot.Callback; import com.pengrad.telegrambot.TelegramBot; diff --git a/src/main/java/com/juick/server/api/activity/Profile.java b/src/main/java/com/juick/server/api/activity/Profile.java index d8a8fd90..5a2a766e 100644 --- a/src/main/java/com/juick/server/api/activity/Profile.java +++ b/src/main/java/com/juick/server/api/activity/Profile.java @@ -14,6 +14,7 @@ import com.juick.server.api.activity.model.activities.Announce; import com.juick.server.api.activity.model.activities.Create; import com.juick.server.api.activity.model.activities.Delete; import com.juick.server.api.activity.model.activities.Follow; +import com.juick.server.api.activity.model.activities.Like; import com.juick.server.api.activity.model.activities.Undo; import com.juick.server.api.activity.model.objects.Image; import com.juick.server.api.activity.model.objects.Key; @@ -304,8 +305,7 @@ public class Profile { String inReplyTo = (String) note.get("inReplyTo"); if (StringUtils.isNotBlank(inReplyTo)) { if (inReplyTo.startsWith(baseUri)) { - UriComponents uri = UriComponentsBuilder.fromUriString(inReplyTo).build(); - String postId = uri.getPath().substring(uri.getPath().lastIndexOf('/') + 1).replace("-", "/"); + String postId = activityPubManager.postId(inReplyTo); User user = new User(); user.setUri(URI.create(activity.getActor())); String attachment = StringUtils.EMPTY; @@ -355,8 +355,17 @@ public class Profile { return new ResponseEntity<>(HttpStatus.OK); } } - if (activity instanceof Announce) { - logger.info("Announce: {}", jsonMapper.writeValueAsString(activity)); + if (activity instanceof Like || activity instanceof Announce) { + String msgUri = (String)activity.getObject(); + User user = new User(); + user.setUri(URI.create(activity.getActor())); + Person person = (Person) signatureManager.getContext(user.getUri()).get(); + user.setName(person.getPreferredUsername()); + String[] ids = msgUri.split("\\/", 2); + if (ids.length == 1) { + // only messages + commandsManager.processCommand(user, String.format("! #%s", ids[0]), URI.create(StringUtils.EMPTY)); + } return new ResponseEntity<>(HttpStatus.OK); } logger.warn("Unknown activity: {}", jsonMapper.writeValueAsString(activity)); |