package com.mapps.seproject; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import com.android.volley.Cache; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.VolleyLog; import com.android.volley.toolbox.JsonObjectRequest; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.mapps.seproject.adapter.FeedListAdapter; import com.mapps.seproject.app.AppController; import com.mapps.seproject.data.FeedItem; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import static android.content.ContentValues.TAG; public class UserActivityFragment extends Fragment { Button bSignOut; FirebaseUser user; FirebaseAuth firebaseAuth; private ListView listView; private FeedListAdapter listAdapter; private List<FeedItem> feedItems; private String URL_FEED = "https://se-project-4a6c6.firebaseapp.com/feeds/feeds.json"; View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment view = inflater.inflate(R.layout.fragment_user_activity, container, false); firebaseAuth = FirebaseAuth.getInstance(); if(firebaseAuth.getCurrentUser() == null) { // Incase the user hasnt logged in getActivity().finish(); startActivity(new Intent(getActivity().getApplicationContext(),LoginActivity.class)); // Go back to login activity } user = firebaseAuth.getCurrentUser(); bSignOut = (Button) view.findViewById(R.id.bSignOut); bSignOut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Log.i("Singout","Clicked"); firebaseAuth.signOut(); getActivity().finish(); startActivity(new Intent(getActivity().getApplicationContext(),LoginActivity.class)); } }); listView = (ListView) view.findViewById(R.id.lists); feedItems = new ArrayList<FeedItem>(); listAdapter = new FeedListAdapter(getActivity(), feedItems); listView.setAdapter(listAdapter); // These two lines not needed, // just to get the look of facebook (changing background color & hiding the icon) // We first check for cached request Cache cache = AppController.getInstance().getRequestQueue().getCache(); Cache.Entry entry = cache.get(URL_FEED); if (entry != null) { // fetch the data from cache try { String data = new String(entry.data, "UTF-8"); try { parseJsonFeed(new JSONObject(data)); } catch (JSONException e) { e.printStackTrace(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } else { // making fresh volley request and getting json JsonObjectRequest jsonReq = new JsonObjectRequest(Request.Method.GET, URL_FEED, null, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { VolleyLog.d(TAG, "Response: " + response.toString()); if (response != null) { parseJsonFeed(response); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d(TAG, "Error: " + error.getMessage()); } }); // Adding request to volley request queue AppController.getInstance().addToRequestQueue(jsonReq); } return view; } @Override public void onViewCreated(View view,Bundle savedInstanceState){ super.onViewCreated(view,savedInstanceState); getActivity().setTitle("Welcome "+ user.getEmail()); } private void parseJsonFeed(JSONObject response) { try { JSONArray feedArray = response.getJSONArray("feed"); for (int i = 0; i < feedArray.length(); i++) { JSONObject feedObj = (JSONObject) feedArray.get(i); FeedItem item = new FeedItem(); item.setId(feedObj.getInt("id")); item.setName(feedObj.getString("name")); String image = feedObj.isNull("image") ? null : feedObj .getString("image"); item.setImge(image); item.setStatus(feedObj.getString("status")); item.setProfilePic(feedObj.getString("profilePic")); item.setTimeStamp(feedObj.getString("timeStamp")); String feedUrl = feedObj.isNull("url") ? null : feedObj .getString("url"); item.setUrl(feedUrl); feedItems.add(item); } listAdapter.notifyDataSetChanged(); } catch (JSONException e) { e.printStackTrace(); } } }