package com.juick.command; import com.juick.Message; import com.juick.User; import com.juick.formatters.PlainTextFormatter; import com.juick.server.protocol.ProtocolListener; import com.juick.service.MessagesService; import lombok.Getter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; /** * @author ma1uta */ @Component @Getter public class MyFeeds extends MultiArgsCommand { private static final Pattern PATTERN = Pattern.compile("^(#+)$", Pattern.CASE_INSENSITIVE); private final MessagesService messagesService; @Autowired public MyFeeds(MessagesService messagesService) { this.messagesService = messagesService; } @Override public Pattern pattern() { return PATTERN; } @Override public String help() { return "# - Show last messages from your feed (## - second page, ...)"; } @Override protected String execute(User sender, ProtocolListener protocolListener, String... arguments) { // number of # is the page count int page = arguments[0].length() - 1; List mids = getMessagesService().getMyFeed(sender.getUid(), page, false); List messages = getMessagesService().getMessages(mids); // TODO: add instructions for empty feed return "Your feed: \n" + String.join("\n", messages.stream().map(PlainTextFormatter::formatPost).collect(Collectors.toList())); } }