Added support for unlike feature
git-svn-id: http://svn.research-infrastructures.eu/public/d4science/gcube/trunk/portlets/user/news-feed@94597 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
77258468d4
commit
aedf4cb81c
|
@ -1,7 +1,8 @@
|
||||||
<ReleaseNotes>
|
<ReleaseNotes>
|
||||||
<Changeset component="org.gcube.portlets.user.NewsFeed.1-6-4"
|
<Changeset component="org.gcube.portlets.user.NewsFeed.1-6-4"
|
||||||
date="2014-04-03">
|
date="2014-04-08">
|
||||||
<Change>Implemented the automatic scroll back in time for feeds (in VRE scope)</Change>
|
<Change>Implemented the automatic scroll back in time for feeds (in VRE scope)</Change>
|
||||||
|
<Change>Added possibility to unlike alread liked posts</Change>
|
||||||
<Change>Fixed double notifications for post owner who commented his post</Change>
|
<Change>Fixed double notifications for post owner who commented his post</Change>
|
||||||
<Change>Fixed double notifications for post owner who liked his post</Change>
|
<Change>Fixed double notifications for post owner who liked his post</Change>
|
||||||
<Change>Fixed user referral problem when post was deleted </Change>
|
<Change>Fixed user referral problem when post was deleted </Change>
|
||||||
|
|
|
@ -29,6 +29,8 @@ public interface NewsService extends RemoteService {
|
||||||
|
|
||||||
boolean like(String feedid, String feedText, String feedOwnerId);
|
boolean like(String feedid, String feedText, String feedOwnerId);
|
||||||
|
|
||||||
|
boolean unlike(String feedid, String feedText, String feedOwnerId);
|
||||||
|
|
||||||
boolean deleteComment(String commentid, String feedid);
|
boolean deleteComment(String commentid, String feedid);
|
||||||
|
|
||||||
boolean deleteFeed(String feedid);
|
boolean deleteFeed(String feedid);
|
||||||
|
|
|
@ -50,5 +50,8 @@ public interface NewsServiceAsync {
|
||||||
|
|
||||||
void getMoreFeeds(int from, int quantity,
|
void getMoreFeeds(int from, int quantity,
|
||||||
AsyncCallback<MoreFeedsBean> callback);
|
AsyncCallback<MoreFeedsBean> callback);
|
||||||
|
|
||||||
|
void unlike(String feedid, String feedText, String feedOwnerId,
|
||||||
|
AsyncCallback<Boolean> callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
package org.gcube.portlets.user.newsfeed.client.event;
|
||||||
|
|
||||||
|
import org.gcube.portlets.user.newsfeed.client.templates.TweetTemplate;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.GwtEvent;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public class UnLikeEvent extends GwtEvent<UnLikeEventHandler> {
|
||||||
|
public static Type<UnLikeEventHandler> TYPE = new Type<UnLikeEventHandler>();
|
||||||
|
private TweetTemplate owner;
|
||||||
|
private final String feedid;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public UnLikeEvent(TweetTemplate owner, String feedid) {
|
||||||
|
this.feedid = feedid;
|
||||||
|
this.owner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getFeedId() {
|
||||||
|
return feedid;
|
||||||
|
}
|
||||||
|
public TweetTemplate getOwner() {
|
||||||
|
return owner;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public Type<UnLikeEventHandler> getAssociatedType() {
|
||||||
|
return TYPE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void dispatch(UnLikeEventHandler handler) {
|
||||||
|
handler.onUnLike(this);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
package org.gcube.portlets.user.newsfeed.client.event;
|
||||||
|
|
||||||
|
import com.google.gwt.event.shared.EventHandler;
|
||||||
|
|
||||||
|
public interface UnLikeEventHandler extends EventHandler {
|
||||||
|
void onUnLike(UnLikeEvent event);
|
||||||
|
}
|
|
@ -35,6 +35,8 @@ import org.gcube.portlets.user.newsfeed.client.event.ShowMoreUpdatesEvent;
|
||||||
import org.gcube.portlets.user.newsfeed.client.event.ShowMoreUpdatesEventHandler;
|
import org.gcube.portlets.user.newsfeed.client.event.ShowMoreUpdatesEventHandler;
|
||||||
import org.gcube.portlets.user.newsfeed.client.event.ShowNewUpdatesEvent;
|
import org.gcube.portlets.user.newsfeed.client.event.ShowNewUpdatesEvent;
|
||||||
import org.gcube.portlets.user.newsfeed.client.event.ShowNewUpdatesEventHandler;
|
import org.gcube.portlets.user.newsfeed.client.event.ShowNewUpdatesEventHandler;
|
||||||
|
import org.gcube.portlets.user.newsfeed.client.event.UnLikeEvent;
|
||||||
|
import org.gcube.portlets.user.newsfeed.client.event.UnLikeEventHandler;
|
||||||
import org.gcube.portlets.user.newsfeed.client.templates.FilterPanel;
|
import org.gcube.portlets.user.newsfeed.client.templates.FilterPanel;
|
||||||
import org.gcube.portlets.user.newsfeed.client.templates.NewFeedsAvailable;
|
import org.gcube.portlets.user.newsfeed.client.templates.NewFeedsAvailable;
|
||||||
import org.gcube.portlets.user.newsfeed.client.templates.ShowMoreFeeds;
|
import org.gcube.portlets.user.newsfeed.client.templates.ShowMoreFeeds;
|
||||||
|
@ -42,6 +44,7 @@ import org.gcube.portlets.user.newsfeed.client.templates.SingleComment;
|
||||||
import org.gcube.portlets.user.newsfeed.client.templates.TweetTemplate;
|
import org.gcube.portlets.user.newsfeed.client.templates.TweetTemplate;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
||||||
|
import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
||||||
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
|
import org.gcube.portlets.widgets.sessionchecker.client.CheckSession;
|
||||||
import org.gcube.portlets.widgets.userselection.client.UserSelectionDialog;
|
import org.gcube.portlets.widgets.userselection.client.UserSelectionDialog;
|
||||||
|
@ -114,7 +117,6 @@ public class NewsFeedPanel extends Composite {
|
||||||
|
|
||||||
private boolean isFirstTweet = false;
|
private boolean isFirstTweet = false;
|
||||||
|
|
||||||
private static final int feedsNoPerCategory = 10;
|
|
||||||
|
|
||||||
private Image loadingImage;
|
private Image loadingImage;
|
||||||
private UserInfo myUserInfo;
|
private UserInfo myUserInfo;
|
||||||
|
@ -153,6 +155,13 @@ public class NewsFeedPanel extends Composite {
|
||||||
doAddLike( event.getOwner(), event.getFeedId());
|
doAddLike( event.getOwner(), event.getFeedId());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
eventBus.addHandler(UnLikeEvent.TYPE, new UnLikeEventHandler() {
|
||||||
|
@Override
|
||||||
|
public void onUnLike(UnLikeEvent event) {
|
||||||
|
doUnLike(event.getOwner(), event.getFeedId());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
eventBus.addHandler(AddCommentEvent.TYPE, new AddCommentEventHandler() {
|
eventBus.addHandler(AddCommentEvent.TYPE, new AddCommentEventHandler() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -378,7 +387,7 @@ public class NewsFeedPanel extends Composite {
|
||||||
* is open at infra level the first tab stops checking for updates
|
* is open at infra level the first tab stops checking for updates
|
||||||
*/
|
*/
|
||||||
if (result.getCurrentScope().compareTo(currentScope) == 0) {
|
if (result.getCurrentScope().compareTo(currentScope) == 0) {
|
||||||
newsService.getAllUpdateUserFeeds(feedsNoPerCategory, new AsyncCallback<ArrayList<EnhancedFeed>>() {
|
newsService.getAllUpdateUserFeeds(NewsConstants.FEEDS_NO_PER_CATEGORY, new AsyncCallback<ArrayList<EnhancedFeed>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ArrayList<EnhancedFeed> feeds) {
|
public void onSuccess(ArrayList<EnhancedFeed> feeds) {
|
||||||
if (feeds != null && allUpdates.size() > 0) {
|
if (feeds != null && allUpdates.size() > 0) {
|
||||||
|
@ -493,7 +502,7 @@ public class NewsFeedPanel extends Composite {
|
||||||
*/
|
*/
|
||||||
public void showAllUpdatesFeeds() {
|
public void showAllUpdatesFeeds() {
|
||||||
showLoader();
|
showLoader();
|
||||||
newsService.getAllUpdateUserFeeds(feedsNoPerCategory, new AsyncCallback<ArrayList<EnhancedFeed>>() {
|
newsService.getAllUpdateUserFeeds(NewsConstants.FEEDS_NO_PER_CATEGORY, new AsyncCallback<ArrayList<EnhancedFeed>>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(ArrayList<EnhancedFeed> feeds) {
|
public void onSuccess(ArrayList<EnhancedFeed> feeds) {
|
||||||
newsPanel.clear();
|
newsPanel.clear();
|
||||||
|
@ -522,9 +531,9 @@ public class NewsFeedPanel extends Composite {
|
||||||
if (feeds.size() < 5) {
|
if (feeds.size() < 5) {
|
||||||
newsPanel.add(new Image(spacer));
|
newsPanel.add(new Image(spacer));
|
||||||
}
|
}
|
||||||
//if you are showing more than feedsNoPerCategory*3-1 feeds there is probably more
|
//if you are showing more than feedsMaxPerCategory-1 feeds there is probably more
|
||||||
if (feeds.size() >= feedsNoPerCategory*3-1 && (!isInfrastructure)) {
|
if (feeds.size() >= NewsConstants.FEEDS_MAX_PER_CATEGORY-1 && (!isInfrastructure)) {
|
||||||
GWT.log("Show MORE " + feedsNoPerCategory);
|
GWT.log("Show MORE " + NewsConstants.FEEDS_NO_PER_CATEGORY);
|
||||||
showMoreUpdatesPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
|
showMoreUpdatesPanel.setHorizontalAlignment(HasAlignment.ALIGN_CENTER);
|
||||||
showMoreWidget = new ShowMoreFeeds(eventBus);
|
showMoreWidget = new ShowMoreFeeds(eventBus);
|
||||||
showMoreUpdatesPanel.add(showMoreWidget);
|
showMoreUpdatesPanel.add(showMoreWidget);
|
||||||
|
@ -757,6 +766,16 @@ public class NewsFeedPanel extends Composite {
|
||||||
public void onSuccess(Boolean result) { }
|
public void onSuccess(Boolean result) { }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void doUnLike(TweetTemplate owner, String feedId) {
|
||||||
|
newsService.unlike(feedId, owner.getMyFeedText(), owner.getMyFeedUserId(), new AsyncCallback<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void onFailure(Throwable caught) {}
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Boolean result) { }
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void doShowSessionExpired() {
|
private void doShowSessionExpired() {
|
||||||
GWT.runAsync(UserSelectionDialog.class, new RunAsyncCallback() {
|
GWT.runAsync(UserSelectionDialog.class, new RunAsyncCallback() {
|
||||||
|
|
|
@ -16,6 +16,7 @@ import org.gcube.portlets.user.newsfeed.client.event.DeleteFeedEvent;
|
||||||
import org.gcube.portlets.user.newsfeed.client.event.OpenFeedEvent;
|
import org.gcube.portlets.user.newsfeed.client.event.OpenFeedEvent;
|
||||||
import org.gcube.portlets.user.newsfeed.client.event.SeeCommentsEvent;
|
import org.gcube.portlets.user.newsfeed.client.event.SeeCommentsEvent;
|
||||||
import org.gcube.portlets.user.newsfeed.client.event.SeeLikesEvent;
|
import org.gcube.portlets.user.newsfeed.client.event.SeeLikesEvent;
|
||||||
|
import org.gcube.portlets.user.newsfeed.client.event.UnLikeEvent;
|
||||||
import org.gcube.portlets.user.newsfeed.client.panels.NewsFeedPanel;
|
import org.gcube.portlets.user.newsfeed.client.panels.NewsFeedPanel;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.widgets.wsmail.client.forms.MailForm;
|
import org.gcube.portlets.widgets.wsmail.client.forms.MailForm;
|
||||||
|
@ -137,14 +138,9 @@ public class TweetTemplate extends Composite {
|
||||||
|
|
||||||
openImage.setStyleName("openImage");
|
openImage.setStyleName("openImage");
|
||||||
openImage.setTitle("Open this feed separately");
|
openImage.setTitle("Open this feed separately");
|
||||||
//show if the user has already liked this
|
//show if the user has already liked this or not
|
||||||
if (myFeed.isLiked()) {
|
setFavoritedUI(myFeed.isLiked());
|
||||||
likeArea.setHTML(NewsFeedPanel.LIKED_LABEL);
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
likeArea.setHTML("<a>" + NewsFeedPanel.LIKE_LABEL + "</a>");
|
|
||||||
|
|
||||||
commentArea.setHTML("<a>" + NewsFeedPanel.COMMENT_LABEL + "</a>");
|
commentArea.setHTML("<a>" + NewsFeedPanel.COMMENT_LABEL + "</a>");
|
||||||
|
|
||||||
String feedText = feed.getDescription();
|
String feedText = feed.getDescription();
|
||||||
|
@ -277,10 +273,21 @@ public class TweetTemplate extends Composite {
|
||||||
seeMore.setHTML("");
|
seeMore.setHTML("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void setFavoritedUI(boolean favorited) {
|
||||||
|
if (favorited) {
|
||||||
|
likeArea.setHTML("<a style=\"color:#6E8CCC;\">" + NewsFeedPanel.LIKED_LABEL + "</a>");
|
||||||
|
likeArea.setTitle("Unfavorite this");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
likeArea.setHTML("<a>" + NewsFeedPanel.LIKE_LABEL + "</a>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@UiHandler("likeArea")
|
@UiHandler("likeArea")
|
||||||
void onLikeClick(ClickEvent e) {
|
void onLikeClick(ClickEvent e) {
|
||||||
|
//if is not liked
|
||||||
if (!likeArea.getText().equals(NewsFeedPanel.LIKED_LABEL)) {
|
if (!likeArea.getText().equals(NewsFeedPanel.LIKED_LABEL)) {
|
||||||
try {
|
try {
|
||||||
int cur = Integer.parseInt(myFeed.getFeed().getLikesNo());
|
int cur = Integer.parseInt(myFeed.getFeed().getLikesNo());
|
||||||
|
@ -295,11 +302,26 @@ public class TweetTemplate extends Composite {
|
||||||
likesNo.setHTML(""+cur);
|
likesNo.setHTML(""+cur);
|
||||||
}
|
}
|
||||||
eventBus.fireEvent(new AddLikeEvent(this, myFeed.getFeed().getKey()));
|
eventBus.fireEvent(new AddLikeEvent(this, myFeed.getFeed().getKey()));
|
||||||
likeArea.setHTML(NewsFeedPanel.LIKED_LABEL);
|
setFavoritedUI(true);
|
||||||
}
|
}
|
||||||
catch (NumberFormatException ex) {
|
catch (NumberFormatException ex) {
|
||||||
likeArea.setHTML("Error on the server");
|
likeArea.setHTML("Error on the server");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
//it is liked
|
||||||
|
int cur = Integer.parseInt(myFeed.getFeed().getLikesNo());
|
||||||
|
cur--;
|
||||||
|
if (cur == 0) {
|
||||||
|
myFeed.getFeed().setLikesNo("0");
|
||||||
|
likesNo.setHTML("");
|
||||||
|
likesNo.removeStyleName("likes-number");
|
||||||
|
likesNo.setTitle("");
|
||||||
|
} else {
|
||||||
|
myFeed.getFeed().setLikesNo(""+cur);
|
||||||
|
likesNo.setHTML(""+cur);
|
||||||
|
}
|
||||||
|
eventBus.fireEvent(new UnLikeEvent(this, myFeed.getFeed().getKey()));
|
||||||
|
setFavoritedUI(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,10 +33,12 @@ import org.gcube.portal.databook.shared.UserInfo;
|
||||||
import org.gcube.portal.databook.shared.ex.ColumnNameNotFoundException;
|
import org.gcube.portal.databook.shared.ex.ColumnNameNotFoundException;
|
||||||
import org.gcube.portal.databook.shared.ex.FeedIDNotFoundException;
|
import org.gcube.portal.databook.shared.ex.FeedIDNotFoundException;
|
||||||
import org.gcube.portal.databook.shared.ex.FeedTypeNotFoundException;
|
import org.gcube.portal.databook.shared.ex.FeedTypeNotFoundException;
|
||||||
|
import org.gcube.portal.databook.shared.ex.LikeIDNotFoundException;
|
||||||
import org.gcube.portal.databook.shared.ex.PrivacyLevelTypeNotFoundException;
|
import org.gcube.portal.databook.shared.ex.PrivacyLevelTypeNotFoundException;
|
||||||
import org.gcube.portlets.user.newsfeed.client.NewsService;
|
import org.gcube.portlets.user.newsfeed.client.NewsService;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
import org.gcube.portlets.user.newsfeed.shared.EnhancedFeed;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
import org.gcube.portlets.user.newsfeed.shared.MoreFeedsBean;
|
||||||
|
import org.gcube.portlets.user.newsfeed.shared.NewsConstants;
|
||||||
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
import org.gcube.portlets.user.newsfeed.shared.UserSettings;
|
||||||
import org.gcube.vomanagement.usermanagement.GroupManager;
|
import org.gcube.vomanagement.usermanagement.GroupManager;
|
||||||
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager;
|
import org.gcube.vomanagement.usermanagement.impl.liferay.LiferayGroupManager;
|
||||||
|
@ -223,7 +225,7 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
else {
|
else {
|
||||||
String vreid = getASLSession().getScopeName();
|
String vreid = getASLSession().getScopeName();
|
||||||
_log.trace("News Feed in VRE, Reading feeds for VRE: " + vreid);
|
_log.trace("News Feed in VRE, Reading feeds for VRE: " + vreid);
|
||||||
ArrayList<Feed> OrganizationFeeds = (ArrayList<Feed>) store.getRecentFeedsByVRE(vreid, (feedsNoPerCategory*3));
|
ArrayList<Feed> OrganizationFeeds = (ArrayList<Feed>) store.getRecentFeedsByVRE(vreid, (NewsConstants.FEEDS_MAX_PER_CATEGORY));
|
||||||
for (Feed feed : OrganizationFeeds) {
|
for (Feed feed : OrganizationFeeds) {
|
||||||
feedsMap.put(feed.getKey(), feed);
|
feedsMap.put(feed.getKey(), feed);
|
||||||
}
|
}
|
||||||
|
@ -270,13 +272,13 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
String userName = getASLSession().getUsername();
|
String userName = getASLSession().getUsername();
|
||||||
try {
|
try {
|
||||||
if (! withinPortal) {
|
if (! withinPortal) {
|
||||||
return getEclipseResult(userName, 10, true);
|
return getEclipseResult(userName, NewsConstants.FEEDS_NO_PER_CATEGORY, true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//UserFriends Feeds
|
//UserFriends Feeds
|
||||||
ArrayList<String> userFriendsIds = (ArrayList<String>)store.getFriends(userName);
|
ArrayList<String> userFriendsIds = (ArrayList<String>)store.getFriends(userName);
|
||||||
for (String userid : userFriendsIds) {
|
for (String userid : userFriendsIds) {
|
||||||
for (Feed feed : store.getRecentFeedsByUser(userid, 10)) {
|
for (Feed feed : store.getRecentFeedsByUser(userid, NewsConstants.FEEDS_NO_PER_CATEGORY)) {
|
||||||
feedsMap.put(feed.getKey(), feed);
|
feedsMap.put(feed.getKey(), feed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -463,6 +465,25 @@ public class NewsServiceImpl extends RemoteServiceServlet implements NewsService
|
||||||
}
|
}
|
||||||
return likeCommitResult;
|
return likeCommitResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean unlike(String feedid, String feedText, String feedOwnerId) {
|
||||||
|
UserInfo user = getUserSettings().getUserInfo();
|
||||||
|
try {
|
||||||
|
for (Like like : store.getAllLikesByFeed(feedid)) {
|
||||||
|
if (like.getUserid().compareTo(user.getUsername()) == 0) {
|
||||||
|
_log.trace("Trying unlike of " + feedText + " for " + user.getFullName());
|
||||||
|
store.unlike(user.getUsername(), like.getKey(), feedid);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (FeedIDNotFoundException | PrivacyLevelTypeNotFoundException | FeedTypeNotFoundException | ColumnNameNotFoundException | LikeIDNotFoundException e) {
|
||||||
|
_log.error("Either Feed or Like not Found " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @param feedid the id of the commented feed
|
* @param feedid the id of the commented feed
|
||||||
* @param commentText the comment text
|
* @param commentText the comment text
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
package org.gcube.portlets.user.newsfeed.shared;
|
||||||
|
|
||||||
|
public class NewsConstants {
|
||||||
|
/**
|
||||||
|
* Feeds Number to who per VRE/Category
|
||||||
|
*/
|
||||||
|
public static final int FEEDS_NO_PER_CATEGORY = 10;
|
||||||
|
|
||||||
|
public static final int FEEDS_MAX_PER_CATEGORY = 30;
|
||||||
|
}
|
Loading…
Reference in New Issue