Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion client/src/app/main/fav.message.directive.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,14 @@ class FavController {
$scope.message.fav = !$scope.message.fav;
if($scope.message.fav == true){
$scope.message.fav_count += 1;
$scope.$parent.main.postFav($scope.message);
}else{
$scope.message.fav_count -= 1;
$scope.$parent.main.postRmFav($scope.message);
}
$scope.$parent.$apply();
$log.info("fav clicked");
$scope.$parent.main.postFav($scope.message);

}
}
}
4 changes: 4 additions & 0 deletions client/src/app/main/main.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,9 @@ export class MainController {
postFav(message){
this.robochat.postFav(message);
}

postRmFav(message){
this.robochat.postRmFav(message);
}

}
2 changes: 1 addition & 1 deletion client/src/app/main/main.jade
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ div
header
span.member(data-ng-bind="message.member")
span.timestamp(data-ng-bind="message.ts | date:'HH:mm:ss'")
div(fav-message='0') test
div(fav-message)
div(data-ng-bind="message.text")
footer
footer
Expand Down
8 changes: 6 additions & 2 deletions client/src/app/main/robochat.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,13 @@ export class RoboChat {
}
postFav(message){
message.type = "fav";
//message.fav = false;

//this.ws.send(JSON.stringify({ text: message.text, fav_count: message.fav_count, member: message.member }));
this.ws.send(JSON.stringify(message));
}

postRmFav(message){
message.type = "del_fav";
//this.ws.send(JSON.stringify({ text: message.text, fav_count: message.fav_count, member: message.member }));
this.ws.send(JSON.stringify(message));
}
}
41 changes: 34 additions & 7 deletions server/src/main/java/com/woorea/robochat/RoboChat.java
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
package com.woorea.robochat;

import com.woorea.robochat.model.Message;
import io.vertx.core.Vertx;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.ServerWebSocket;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Expand Down Expand Up @@ -38,6 +36,7 @@ public static void main( String[] args ) {
HttpServer server = vertx.createHttpServer();

Router router = Router.router(vertx);
final ArrayList<Message> messages = new ArrayList<>();

//onopen
router.route("/realtime").handler(routingContext -> {
Expand All @@ -64,6 +63,8 @@ public static void main( String[] args ) {
input.put("text", "name changed!");

}
final Message msg = new Message(input);
messages.add(msg);

sockets.forEach(socket -> {
vertx.eventBus().send(socket, input.toString());
Expand All @@ -72,10 +73,30 @@ public static void main( String[] args ) {
break;
case "fav":

sockets.forEach(socket -> {
vertx.eventBus().send(socket, input.toString());
});
Message msgCache = getMessageCache(messages,input.getString("text"));
if(msgCache != null){
String member = members.get(ws.textHandlerID());
if( msgCache.addFav(member)){

sockets.forEach(socket -> {
vertx.eventBus().send(socket, msgCache.toFavString());
});

}
}
break;
case "del_fav":

Message msgDelCache = getMessageCache(messages,input.getString("text"));
if(msgDelCache != null) {
String member = members.get(ws.textHandlerID());
if (msgDelCache.deleteFav(member)) {

sockets.forEach(socket -> {
vertx.eventBus().send(socket, msgDelCache.toFavString());
});
}
}
break;
default:
ws.writeFinalTextFrame(DEFAULT_MESSAGE);
Expand All @@ -99,5 +120,11 @@ public static void main( String[] args ) {
server.requestHandler(router::accept).listen(8080);

}
public static Message getMessageCache(final List<Message> messages, final String text){
for(Message message : messages){
if(message.getMessage().equals(text)) return message;
}
return null;
}

}
93 changes: 93 additions & 0 deletions server/src/main/java/com/woorea/robochat/model/Message.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package com.woorea.robochat.model;

import com.fasterxml.jackson.databind.util.JSONPObject;
import io.vertx.core.json.JsonObject;

import java.util.ArrayList;
import java.util.List;

/**
* Created by lempere on 11/4/2015.
*/
public class Message {

public String message;
public int fav_count;
public String creator;
public List<String> users;
public long time;

public Message(String message) {
this.message = message;
fav_count = 0;
users = new ArrayList<>();
}

public Message(JsonObject input) {
this.message = input.getString("text");
this.creator = input.getString("member");
fav_count = 0;
time = input.getLong("ts");
users = new ArrayList<>();
}

public boolean addFav(final String user_ask){
for(String user : users ){
if( user.equals(user_ask) ){
return false;
}
}
users.add(user_ask);
fav_count++;
return true;
}
public boolean deleteFav(final String user_ask){
for(String user : users ){
if( user.equals(user_ask) ){
users.remove(user);
fav_count--;
if(fav_count<0) fav_count=0;
return true;
}
}
return false;

}

public String getMessage() {
return message;
}

public void setMessage(String message) {
this.message = message;
}

public int getFav_count() {
return fav_count;
}

public void setFav_count(int fav_count) {
this.fav_count = fav_count;
}

public String getCreator() {
return creator;
}

public void setCreator(String creator) {
this.creator = creator;
}

public long getTime() {
return time;
}

public void setTime(long time) {
this.time = time;
}

public String toFavString() {
return "{\"text\":\""+getMessage()+"\",\"type\":\"fav\",\"fav_count\":"+getFav_count()+
" ,\"member\":\""+getCreator()+"\",\"ts\":"+getTime()+"}";
}
}