/* * Copyright (C) 2008-2020, Juick * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.juick.www.api; import com.juick.model.Message; import com.juick.model.User; import java.util.Collections; import java.util.List; import javax.annotation.Nonnull; public class SystemActivity { private SystemActivity(ActivityType type) { this.type = type; } public static SystemActivity like(User from, Message message, List<User> subscribers) { var like = new SystemActivity(ActivityType.like); like.setFrom(from); like.setMessage(message); like.setTo(subscribers); return like; } public static SystemActivity message(User from, Message message, List<User> subscribers) { var msg = new SystemActivity(ActivityType.message); msg.setFrom(from); msg.setMessage(message); msg.setTo(subscribers); return msg; } @Nonnull public static SystemActivity read(User from, Message message) { var read = new SystemActivity(ActivityType.message); read.setFrom(from); read.setTo(Collections.emptyList()); var msg = new Message(); msg.setMid(message.getMid()); msg.setUser(from); msg.setService(true); msg.setUnread(false); read.setMessage(msg); return read; } public static SystemActivity follow(User from, List<User> to) { var follow = new SystemActivity(ActivityType.follow); follow.setFrom(from); follow.setTo(to); return follow; } public enum ActivityType { message, like, follow } private ActivityType type; private User from; private List<User> to; private Message message; public ActivityType getType() { return type; } public User getFrom() { return from; } public void setFrom(User from) { this.from = from; } public List<User> getTo() { return to; } public void setTo(List<User> to) { this.to = to; } public Message getMessage() { return message; } public void setMessage(Message message) { this.message = message; } }