diff --git a/.idea/modules.xml b/.idea/modules.xml index e6f8c11..cf1b1e8 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,8 +2,8 @@ - + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index da62ebf..e136a3e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,6 +28,7 @@ dependencies { compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'de.hdodenhof:circleimageview:2.2.0' compile 'com.google.firebase:firebase-database:11.4.2' //Firebase database + compile 'com.github.nkzawa:socket.io-client:0.3.0' //Socket.io testCompile 'junit:junit:4.12' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1e9787f..9d03100 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + feedList = new ArrayList(); - for (DataSnapshot feedSnapshot : dataSnapshot.getChildren()) { - FeedItem feedItem = feedSnapshot.getValue(ConversationFeedItem.class); - feedList.add(feedItem); - } - System.out.println("Feed list: " + feedList); - initializeFeed(feedList); + public void onChildAdded(DataSnapshot dataSnapshot, String s) { + FeedItem feedItem = dataSnapshot.getValue(ConversationFeedItem.class); + feedLayout.addView(feedItem.getView(context, feedLayout), 0); } @Override + public void onChildChanged(DataSnapshot dataSnapshot, String s) {} + @Override + public void onChildRemoved(DataSnapshot dataSnapshot) {} + @Override + public void onChildMoved(DataSnapshot dataSnapshot, String s) {} + @Override public void onCancelled(DatabaseError databaseError) {} }); @@ -102,6 +103,9 @@ public void startChat(View v) { Intent i = new Intent(this, ChatActivity.class); i.putExtra("partner_name", "Jason"); startActivity(i); + + Network.wantToTalk(); + System.out.println("want to talk"); } diff --git a/app/src/main/java/com/example/isaacwang/wholesomeapp/Network.java b/app/src/main/java/com/example/isaacwang/wholesomeapp/Network.java index 2da57d4..6e8cdf5 100644 --- a/app/src/main/java/com/example/isaacwang/wholesomeapp/Network.java +++ b/app/src/main/java/com/example/isaacwang/wholesomeapp/Network.java @@ -1,11 +1,20 @@ package com.example.isaacwang.wholesomeapp; +import android.app.Activity; + +import com.github.nkzawa.emitter.Emitter; +import com.github.nkzawa.socketio.client.IO; +import com.github.nkzawa.socketio.client.Socket; import com.google.firebase.database.DataSnapshot; import com.google.firebase.database.DatabaseError; import com.google.firebase.database.DatabaseReference; import com.google.firebase.database.FirebaseDatabase; import com.google.firebase.database.ValueEventListener; +import org.json.JSONException; +import org.json.JSONObject; + +import java.net.URISyntaxException; import java.util.ArrayList; /** @@ -37,4 +46,47 @@ public static void addToFeed(FeedItem feedItem) { System.out.println("FEED ITEM: " + feedItem); feedDatabase.push().setValue(feedItem); } + + public static Socket chatSocket; + + public static void wantToTalk() { + try { + chatSocket = IO.socket("http://10.0.2.2:3000"); + chatSocket.connect(); + chatSocket.emit("want_to_talk", "MY_ID"); + } catch(URISyntaxException e) {System.out.println("Failed to connect to socket");} + } + + public static void downToListen(Emitter.Listener listener) { + try { + chatSocket = IO.socket("10.0.2.2:3000"); + chatSocket.connect(); + chatSocket.emit("down_to_listen", "MY_ID"); + +// Emitter.Listener onNewTalker = new Emitter.Listener() { +// @Override +// public void call(final Object... args) { +// activity.runOnUiThread(new Runnable() { +// @Override +// public void run() { +// JSONObject data = (JSONObject) args[0]; +// String username; +// String message; +// try { +// username = data.getString("username"); +// message = data.getString("message"); +// } catch (JSONException e) { +// return; +// } +// +// // add the message to view +// addMessage(username, message); +// } +// }); +// } +// }; + chatSocket.on("want_to_listen", listener); + } catch(URISyntaxException e) {} + } + }