Commit 346eb890 authored by Sajal Narang's avatar Sajal Narang

Implement Fetch Events API

parent 61cc9621
...@@ -29,7 +29,7 @@ ext { ...@@ -29,7 +29,7 @@ ext {
retrofitVersion = '2.1.0' retrofitVersion = '2.1.0'
okhttpVersion = '3.4.1' okhttpVersion = '3.4.1'
picassoVersion = '2.5.0' picassoVersion = '2.5.0'
archRoomVersion = "1.0.0-alpha1" archRoomVersion = "1.1.0-alpha3"
} }
...@@ -53,6 +53,7 @@ dependencies { ...@@ -53,6 +53,7 @@ dependencies {
compile "com.squareup.okhttp3:okhttp:${okhttpVersion}" compile "com.squareup.okhttp3:okhttp:${okhttpVersion}"
compile "com.squareup.okhttp3:logging-interceptor:${okhttpVersion}" compile "com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
compile "com.squareup.picasso:picasso:${picassoVersion}" compile "com.squareup.picasso:picasso:${picassoVersion}"
compile "com.android.support:customtabs:${supportLibVersion}"
compile "android.arch.persistence.room:runtime:${archRoomVersion}" compile "android.arch.persistence.room:runtime:${archRoomVersion}"
annotationProcessor "android.arch.persistence.room:compiler:${archRoomVersion}" annotationProcessor "android.arch.persistence.room:compiler:${archRoomVersion}"
} }
......
...@@ -14,6 +14,7 @@ import java.util.List; ...@@ -14,6 +14,7 @@ import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.ItemClickListener; import in.ac.iitb.gymkhana.iitbapp.ItemClickListener;
import in.ac.iitb.gymkhana.iitbapp.R; import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.data.Event;
public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> { public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
...@@ -47,7 +48,7 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> { ...@@ -47,7 +48,7 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
Event currentEvent = posts.get(i); Event currentEvent = posts.get(i);
viewHolder.eventTitle.setText(currentEvent.getEventName()); viewHolder.eventTitle.setText(currentEvent.getEventName());
viewHolder.eventDetails.setText(currentEvent.getEventDescription()); viewHolder.eventDetails.setText(currentEvent.getEventDescription());
Picasso.with(context).load(currentEvent.getEventImage()).into(viewHolder.eventPicture); Picasso.with(context).load(currentEvent.getEventImageURL()).into(viewHolder.eventPicture);
} }
@Override @Override
......
...@@ -4,13 +4,14 @@ import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateRequest; ...@@ -4,13 +4,14 @@ import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateResponse; import in.ac.iitb.gymkhana.iitbapp.api.model.EventCreateResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest; import in.ac.iitb.gymkhana.iitbapp.api.model.LoginRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse; import in.ac.iitb.gymkhana.iitbapp.api.model.LoginResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse; import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse;
import in.ac.iitb.gymkhana.iitbapp.api.model.NotificationsRequest; import in.ac.iitb.gymkhana.iitbapp.api.model.NotificationsRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.NotificationsResponse; import in.ac.iitb.gymkhana.iitbapp.api.model.NotificationsResponse;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST; import retrofit2.http.POST;
import retrofit2.http.Path;
public interface RetrofitInterface { public interface RetrofitInterface {
@POST("login/") @POST("login/")
...@@ -19,8 +20,8 @@ public interface RetrofitInterface { ...@@ -19,8 +20,8 @@ public interface RetrofitInterface {
@POST("/createEvent/") @POST("/createEvent/")
Call<EventCreateResponse> eventCreate(@Body EventCreateRequest eventCreateRequest); Call<EventCreateResponse> eventCreate(@Body EventCreateRequest eventCreateRequest);
@POST("getNewsFeed/") @GET("users/{uuid}/followed_bodies_events")
Call<NewsFeedResponse> getNewsFeed(@Body NewsFeedRequest newsFeedRequest); Call<NewsFeedResponse> getNewsFeed(@Path("uuid") String uuid);
@POST("getNotifications/") @POST("getNotifications/")
Call<NotificationsResponse> getNotifications(@Body NotificationsRequest notificationsRequest); Call<NotificationsResponse> getNotifications(@Body NotificationsRequest notificationsRequest);
......
...@@ -7,7 +7,7 @@ import retrofit2.converter.gson.GsonConverterFactory; ...@@ -7,7 +7,7 @@ import retrofit2.converter.gson.GsonConverterFactory;
public class ServiceGenerator { public class ServiceGenerator {
//TODO: Change BASE_URL once the server is hosted //TODO: Change BASE_URL once the server is hosted
private static final String BASE_URL = "http://127.0.0.1"; private static final String BASE_URL = "http://temp-iitb.radialapps.com/api/";
private static OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder(); private static OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
private static Retrofit.Builder retrofitBuilder = new Retrofit.Builder() private static Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
.baseUrl(BASE_URL) .baseUrl(BASE_URL)
......
package in.ac.iitb.gymkhana.iitbapp.api.model;
public class NewsFeedRequest {
public static final int FOLLOWED = 0;
public static final int POPULAR = 1;
private int type;
private int from;
private int to;
public NewsFeedRequest(int type, int from, int to) {
this.type = type;
this.from = from;
this.to = to;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getFrom() {
return from;
}
public void setFrom(int from) {
this.from = from;
}
public int getTo() {
return to;
}
public void setTo(int to) {
this.to = to;
}
}
...@@ -4,12 +4,17 @@ import com.google.gson.annotations.SerializedName; ...@@ -4,12 +4,17 @@ import com.google.gson.annotations.SerializedName;
import java.util.List; import java.util.List;
import in.ac.iitb.gymkhana.iitbapp.data.Event;
public class NewsFeedResponse { public class NewsFeedResponse {
@SerializedName("posts") @SerializedName("data")
private List<Event> events; private List<Event> events;
@SerializedName("count")
private int count;
public NewsFeedResponse(List<Event> events) { public NewsFeedResponse(List<Event> events, int count) {
this.events = events; this.events = events;
this.count = count;
} }
public List<Event> getEvents() { public List<Event> getEvents() {
...@@ -19,4 +24,12 @@ public class NewsFeedResponse { ...@@ -19,4 +24,12 @@ public class NewsFeedResponse {
public void setEvents(List<Event> events) { public void setEvents(List<Event> events) {
this.events = events; this.events = events;
} }
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
} }
...@@ -46,4 +46,124 @@ public class Event { ...@@ -46,4 +46,124 @@ public class Event {
@ColumnInfo(name = "going") @ColumnInfo(name = "going")
@SerializedName("going") @SerializedName("going")
List<User> eventGoing; List<User> eventGoing;
public Event(String eventID, String eventName, String eventDescription, String eventImageURL, String eventStartTime, String eventEndTime, boolean allDayEvent, List<Venue> eventVenues, List<Body> eventBodies, int eventInterestedCount, int eventGoingCount, List<User> eventInterested, List<User> eventGoing) {
this.eventID = eventID;
this.eventName = eventName;
this.eventDescription = eventDescription;
this.eventImageURL = eventImageURL;
this.eventStartTime = eventStartTime;
this.eventEndTime = eventEndTime;
this.allDayEvent = allDayEvent;
this.eventVenues = eventVenues;
this.eventBodies = eventBodies;
this.eventInterestedCount = eventInterestedCount;
this.eventGoingCount = eventGoingCount;
this.eventInterested = eventInterested;
this.eventGoing = eventGoing;
}
public String getEventID() {
return eventID;
}
public void setEventID(String eventID) {
this.eventID = eventID;
}
public String getEventName() {
return eventName;
}
public void setEventName(String eventName) {
this.eventName = eventName;
}
public String getEventDescription() {
return eventDescription;
}
public void setEventDescription(String eventDescription) {
this.eventDescription = eventDescription;
}
public String getEventImageURL() {
return eventImageURL;
}
public void setEventImageURL(String eventImageURL) {
this.eventImageURL = eventImageURL;
}
public String getEventStartTime() {
return eventStartTime;
}
public void setEventStartTime(String eventStartTime) {
this.eventStartTime = eventStartTime;
}
public String getEventEndTime() {
return eventEndTime;
}
public void setEventEndTime(String eventEndTime) {
this.eventEndTime = eventEndTime;
}
public boolean isAllDayEvent() {
return allDayEvent;
}
public void setAllDayEvent(boolean allDayEvent) {
this.allDayEvent = allDayEvent;
}
public List<Venue> getEventVenues() {
return eventVenues;
}
public void setEventVenues(List<Venue> eventVenues) {
this.eventVenues = eventVenues;
}
public List<Body> getEventBodies() {
return eventBodies;
}
public void setEventBodies(List<Body> eventBodies) {
this.eventBodies = eventBodies;
}
public int getEventInterestedCount() {
return eventInterestedCount;
}
public void setEventInterestedCount(int eventInterestedCount) {
this.eventInterestedCount = eventInterestedCount;
}
public int getEventGoingCount() {
return eventGoingCount;
}
public void setEventGoingCount(int eventGoingCount) {
this.eventGoingCount = eventGoingCount;
}
public List<User> getEventInterested() {
return eventInterested;
}
public void setEventInterested(List<User> eventInterested) {
this.eventInterested = eventInterested;
}
public List<User> getEventGoing() {
return eventGoing;
}
public void setEventGoing(List<User> eventGoing) {
this.eventGoing = eventGoing;
}
} }
...@@ -14,6 +14,7 @@ import com.squareup.picasso.Picasso; ...@@ -14,6 +14,7 @@ import com.squareup.picasso.Picasso;
import in.ac.iitb.gymkhana.iitbapp.Constants; import in.ac.iitb.gymkhana.iitbapp.Constants;
import in.ac.iitb.gymkhana.iitbapp.R; import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.data.Event;
/** /**
* A simple {@link Fragment} subclass. * A simple {@link Fragment} subclass.
...@@ -49,7 +50,7 @@ public class EventFragment extends Fragment { ...@@ -49,7 +50,7 @@ public class EventFragment extends Fragment {
TextView eventDetails = (TextView) getActivity().findViewById(R.id.event_details_2); TextView eventDetails = (TextView) getActivity().findViewById(R.id.event_details_2);
TextView eventDescription = (TextView) getActivity().findViewById(R.id.event_description_2); TextView eventDescription = (TextView) getActivity().findViewById(R.id.event_description_2);
Picasso.with(getContext()).load(event.getEventImage()).into(eventPicture); Picasso.with(getContext()).load(event.getEventImageURL()).into(eventPicture);
eventTitle.setText(event.getEventName()); eventTitle.setText(event.getEventName());
eventDetails.setText(event.getEventDescription()); eventDetails.setText(event.getEventDescription());
eventDescription.setText(event.getEventDescription()); eventDescription.setText(event.getEventDescription());
......
...@@ -26,9 +26,9 @@ import in.ac.iitb.gymkhana.iitbapp.R; ...@@ -26,9 +26,9 @@ import in.ac.iitb.gymkhana.iitbapp.R;
import in.ac.iitb.gymkhana.iitbapp.adapter.FeedAdapter; import in.ac.iitb.gymkhana.iitbapp.adapter.FeedAdapter;
import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface; import in.ac.iitb.gymkhana.iitbapp.api.RetrofitInterface;
import in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator; import in.ac.iitb.gymkhana.iitbapp.api.ServiceGenerator;
import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedRequest;
import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse; import in.ac.iitb.gymkhana.iitbapp.api.model.NewsFeedResponse;
import in.ac.iitb.gymkhana.iitbapp.data.DatabaseContract; import in.ac.iitb.gymkhana.iitbapp.data.DatabaseContract;
import in.ac.iitb.gymkhana.iitbapp.data.Event;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response; import retrofit2.Response;
...@@ -56,37 +56,37 @@ public class FeedFragment extends Fragment { ...@@ -56,37 +56,37 @@ public class FeedFragment extends Fragment {
@Override @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
Cursor cursor = getContext().getContentResolver().query(DatabaseContract.NewsFeedEntry.CONTENT_URI, null, null, null, null); // Cursor cursor = getContext().getContentResolver().query(DatabaseContract.NewsFeedEntry.CONTENT_URI, null, null, null, null);
if (cursor.getCount() != 0) { // if (cursor.getCount() != 0) {
final List<Event> events = new ArrayList<>(); // final List<Event> events = new ArrayList<>();
while (cursor.moveToNext()) { // while (cursor.moveToNext()) {
Event event = new Event(cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_NAME)), // Event event = new Event(cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_NAME)),
cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_DESCRIPTION)), // cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_DESCRIPTION)),
cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_IMAGE)), // cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_IMAGE)),
cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_CREATOR_NAME)), // cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_CREATOR_NAME)),
cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_CREATOR_ID)), // cursor.getString(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_CREATOR_ID)),
cursor.getInt(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_GOING_STATUS))); // cursor.getInt(cursor.getColumnIndex(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_GOING_STATUS)));
events.add(event); // events.add(event);
} // }
FeedAdapter feedAdapter = new FeedAdapter(events, new ItemClickListener() { // FeedAdapter feedAdapter = new FeedAdapter(events, new ItemClickListener() {
@Override // @Override
public void onItemClick(View v, int position) { // public void onItemClick(View v, int position) {
String eventJson = new Gson().toJson(events.get(position)); // String eventJson = new Gson().toJson(events.get(position));
Bundle bundle = new Bundle(); // Bundle bundle = new Bundle();
bundle.putString(Constants.EVENT_JSON, eventJson); // bundle.putString(Constants.EVENT_JSON, eventJson);
EventFragment eventFragment = new EventFragment(); // EventFragment eventFragment = new EventFragment();
eventFragment.setArguments(bundle); // eventFragment.setArguments(bundle);
FragmentManager manager = getActivity().getSupportFragmentManager(); // FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction(); // FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.framelayout_for_fragment, eventFragment, eventFragment.getTag()); // transaction.replace(R.id.framelayout_for_fragment, eventFragment, eventFragment.getTag());
transaction.commit(); // transaction.commit();
} // }
}); // });
feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view); // feedRecyclerView = (RecyclerView) getActivity().findViewById(R.id.feed_recycler_view);
feedRecyclerView.setAdapter(feedAdapter); // feedRecyclerView.setAdapter(feedAdapter);
feedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); // feedRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
//
} // }
updateFeed(); updateFeed();
...@@ -100,9 +100,10 @@ public class FeedFragment extends Fragment { ...@@ -100,9 +100,10 @@ public class FeedFragment extends Fragment {
} }
private void updateFeed() { private void updateFeed() {
NewsFeedRequest newsFeedRequest = new NewsFeedRequest(NewsFeedRequest.FOLLOWED, 0, 20); //TODO: Fetch userID from SharedPreferences
String userID = "51e04db1-040f-406c-8b6f-0c47a1bdc5a4";
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class); RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
retrofitInterface.getNewsFeed(newsFeedRequest).enqueue(new Callback<NewsFeedResponse>() { retrofitInterface.getNewsFeed(userID).enqueue(new Callback<NewsFeedResponse>() {
@Override @Override
public void onResponse(Call<NewsFeedResponse> call, Response<NewsFeedResponse> response) { public void onResponse(Call<NewsFeedResponse> call, Response<NewsFeedResponse> response) {
if (response.isSuccessful()) { if (response.isSuccessful()) {
...@@ -134,10 +135,7 @@ public class FeedFragment extends Fragment { ...@@ -134,10 +135,7 @@ public class FeedFragment extends Fragment {
ContentValues contentValues1 = new ContentValues(); ContentValues contentValues1 = new ContentValues();
contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_NAME, events.get(i).getEventName()); contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_NAME, events.get(i).getEventName());
contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_DESCRIPTION, events.get(i).getEventDescription()); contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_DESCRIPTION, events.get(i).getEventDescription());
contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_IMAGE, events.get(i).getEventImage()); contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_IMAGE, events.get(i).getEventImageURL());
contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_CREATOR_NAME, events.get(i).getEventCreatorName());
contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_CREATOR_ID, events.get(i).getEventCreatorId());
contentValues1.put(DatabaseContract.NewsFeedEntry.COLUMN_EVENT_GOING_STATUS, events.get(i).getEventEnthu());
contentValues[i] = contentValues1; contentValues[i] = contentValues1;
} }
int insertCount = getContext().getContentResolver().bulkInsert(DatabaseContract.NewsFeedEntry.CONTENT_URI, contentValues); int insertCount = getContext().getContentResolver().bulkInsert(DatabaseContract.NewsFeedEntry.CONTENT_URI, contentValues);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment