import net.pterodactylus.sone.data.PostReply;
import net.pterodactylus.sone.data.Profile;
import net.pterodactylus.sone.data.Profile.Field;
-import net.pterodactylus.sone.data.Reply;
+import net.pterodactylus.sone.data.Reply.Modifier.ReplyUpdated;
import net.pterodactylus.sone.data.Sone;
import net.pterodactylus.sone.data.Sone.ShowCustomAvatars;
import net.pterodactylus.sone.data.Sone.SoneStatus;
import net.pterodactylus.sone.database.PostBuilder.PostCreated;
import net.pterodactylus.sone.database.PostReplyBuilder;
import net.pterodactylus.sone.database.PostReplyBuilder.PostReplyCreated;
-import net.pterodactylus.sone.database.PostReplyProvider;
import net.pterodactylus.sone.database.SoneProvider;
import net.pterodactylus.sone.fcp.FcpInterface;
import net.pterodactylus.sone.fcp.FcpInterface.FullAccessRequired;
*
* @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
*/
-public class Core extends AbstractService implements SoneProvider, PostReplyProvider {
+public class Core extends AbstractService implements SoneProvider {
/** The logger. */
private static final Logger logger = Logging.getLogger(Core.class);
}
}
- @Override
- public Optional<PostReply> getPostReply(String replyId) {
- return database.getPostReply(replyId);
- }
-
- @Override
- public List<PostReply> getReplies(final String postId) {
- return database.getReplies(postId);
- }
-
/**
* Returns all Sones that have liked the given post.
*
}
for (PostReply reply : followedSone.get().getReplies()) {
if (reply.getTime() < now) {
- markReplyKnown(reply);
+ reply.modify().setKnown().update(Optional.<ReplyUpdated<PostReply>>absent());
}
}
}
continue;
}
if (reply.getTime() < getSoneFollowingTime(sone)) {
- reply.setKnown(true);
+ reply.modify().setKnown().update(Optional.<ReplyUpdated<PostReply>>absent());
} else if (!reply.isKnown()) {
eventBus.post(new NewPostReplyFoundEvent(reply));
}
}
database.storePostReplies(sone, replies);
for (PostReply reply : replies) {
- reply.setKnown(true);
+ reply.modify().setKnown().update(Optional.<ReplyUpdated<PostReply>>absent());
}
logger.info(String.format("Sone loaded successfully: %s", sone));
post.setKnown(true);
eventBus.post(new MarkPostKnownEvent(post));
touchConfiguration();
- for (PostReply reply : getReplies(post.getId())) {
- markReplyKnown(reply);
+ for (PostReply reply : post.getReplies()) {
+ reply.modify().setKnown().update(postReplyUpdated());
}
}
logger.log(Level.FINE, String.format("Tried to delete non-local reply: %s", reply));
return;
}
+ postReplyUpdated().get().replyUpdated(reply);
database.removePostReply(reply);
- markReplyKnown(reply);
- sone.removeReply(reply);
touchConfiguration();
}
/**
- * Marks the given reply as known, if it is currently not a known reply
- * (according to {@link Reply#isKnown()}).
- *
- * @param reply
- * The reply to mark as known
- */
- public void markReplyKnown(PostReply reply) {
- boolean previouslyKnown = reply.isKnown();
- reply.setKnown(true);
- eventBus.post(new MarkPostReplyKnownEvent(reply));
- if (!previouslyKnown) {
- touchConfiguration();
- }
- }
-
- /**
* Creates a new image.
*
* @param sone
*/
@Override
public void run() {
- markReplyKnown(postReply);
+ postReplyUpdated().get().replyUpdated(postReply);
}
}, 10, TimeUnit.SECONDS);
}
});
}
+ public Optional<ReplyUpdated<PostReply>> postReplyUpdated() {
+ return Optional.<ReplyUpdated<PostReply>>of(new ReplyUpdated<PostReply>() {
+ @Override
+ public void replyUpdated(PostReply reply) {
+ eventBus.post(new MarkPostReplyKnownEvent(reply));
+ }
+ });
+ }
+
public Optional<ImageCreated> imageCreated() {
return Optional.<ImageCreated>of(new ImageCreated() {
@Override