Commit b89fe347 authored by Sajal Narang's avatar Sajal Narang Committed by GitHub

Merge pull request #199 from pulsejet/noroom

Swap database for caching
parents 4b48beff c3e18a05
......@@ -23,13 +23,11 @@ android {
}
ext {
supportLibVersion = '27.1.1'
supportLibVersion = '27.1.0'
playServicesVersion = '15.0.1'
butterKnifeVersion = '8.8.1'
retrofitVersion = '2.3.0'
okhttpVersion = '3.11.0'
picassoVersion = '2.71828'
archRoomVersion = '1.1.1'
circleImageViewVersion = '2.2.0'
markwonVersion = '1.0.6'
}
......@@ -37,25 +35,14 @@ ext {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.google.firebase:firebase-messaging:17.1.0'
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
testImplementation "junit:junit:4.12"
implementation "com.android.support:design:${supportLibVersion}"
implementation "com.android.support:support-v4:${supportLibVersion}"
implementation "com.jakewharton:butterknife:${butterKnifeVersion}"
implementation "com.google.android.gms:play-services-gcm:${playServicesVersion}"
implementation "com.google.android.gms:play-services-maps:${playServicesVersion}"
implementation "com.google.android.gms:play-services-location:${playServicesVersion}"
annotationProcessor "com.jakewharton:butterknife-compiler:${butterKnifeVersion}"
implementation "com.squareup.retrofit2:retrofit:${retrofitVersion}"
implementation "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
implementation "com.squareup.okhttp3:okhttp:${okhttpVersion}"
implementation "com.squareup.okhttp3:logging-interceptor:${okhttpVersion}"
implementation "com.squareup.picasso:picasso:${picassoVersion}"
implementation "com.android.support:customtabs:${supportLibVersion}"
implementation "android.arch.persistence.room:runtime:${archRoomVersion}"
annotationProcessor "android.arch.persistence.room:compiler:${archRoomVersion}"
implementation "com.android.support:cardview-v7:${supportLibVersion}"
implementation "de.hdodenhof:circleimageview:${circleImageViewVersion}"
implementation "ru.noties:markwon:${markwonVersion}"
......
......@@ -3,6 +3,7 @@
package="app.insti">
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
......
......@@ -32,4 +32,9 @@ public class Constants {
public static final double MAP_Xn = 19.134417, MAP_Yn = 72.901229, MAP_Zn = 1757, MAP_Zyn = 501;
public static final double[] MAP_WEIGHTS_X = {-11.392001766454612, -36.31634553309953, 73.91269388324432, -24.14021153064087, 3.4508817531539115, -0.1462262375477863, 5.532505074667804, -1.542391995870977, 36.14211738142935};
public static final double[] MAP_WEIGHTS_Y = {0.09738953520399705, -4.519868444089616, 62.38493718381985, 16.664561869057696, -2.168377988768651, 0.0919143297622087, 0.32304266159540823, 0.21688067854428716, -12.81393255320748};
public static final String resizeImageUrl(String url, Integer dim) {
if (url == null) { return url; }
return url.replace("api.insti.app/static/", "img.insti.app/static/" + dim.toString() + "/");
}
}
......@@ -40,6 +40,11 @@ public class LoginActivity extends AppCompatActivity {
private boolean loggingIn = false;
private ProgressDialog progressDialog;
private RetrofitInterface retrofitInterface;
public RetrofitInterface getRetrofitInterface() {
return retrofitInterface;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -63,6 +68,9 @@ public class LoginActivity extends AppCompatActivity {
protected void onStart() {
super.onStart();
ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext());
this.retrofitInterface = serviceGenerator.getRetrofitInterface();
WebView webview = (WebView) findViewById(R.id.login_webview);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
......@@ -80,7 +88,7 @@ public class LoginActivity extends AppCompatActivity {
private void login(final String authorizationCode, final String redirectURL) {
/* This can be null if play services is hung */
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = getRetrofitInterface();
Call<LoginResponse> call;
if (fcmId == null) {
call = retrofitInterface.login(authorizationCode, redirectURL);
......@@ -118,7 +126,7 @@ public class LoginActivity extends AppCompatActivity {
progressDialog.show();
}
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = getRetrofitInterface();
Call<LoginResponse> call;
/* This can be null if play services is hung */
......
......@@ -37,6 +37,7 @@ import com.google.firebase.iid.InstanceIdResult;
import com.google.gson.JsonObject;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.util.List;
import app.insti.Constants;
......@@ -66,6 +67,7 @@ import app.insti.fragment.QuickLinksFragment;
import app.insti.fragment.SettingsFragment;
import app.insti.fragment.TrainingBlogFragment;
import app.insti.notifications.NotificationEventReceiver;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -87,6 +89,11 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
private boolean showNotifications = false;
private BackHandledFragment selectedFragment;
private Menu menu;
private RetrofitInterface retrofitInterface;
public RetrofitInterface getRetrofitInterface() {
return retrofitInterface;
}
public static void hideKeyboard(Activity activity) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
......@@ -107,6 +114,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
} catch (IllegalStateException ignored) {
}
ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext());
this.retrofitInterface = serviceGenerator.getRetrofitInterface();
/* Make notification channel on oreo */
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
createNotificationChannel();
......@@ -140,15 +150,13 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
}
}
fetchNotifications();
checkLatestVersion();
NotificationEventReceiver.setupAlarm(getApplicationContext());
}
private void fetchNotifications() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = getRetrofitInterface();
retrofitInterface.getNotifications(getSessionIDHeader()).enqueue(new Callback<List<Notification>>() {
@Override
public void onResponse(Call<List<Notification>> call, Response<List<Notification>> response) {
......@@ -172,7 +180,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
try {
PackageInfo pInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
final int versionCode = pInfo.versionCode;
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = getRetrofitInterface();
retrofitInterface.getLatestVersion().enqueue(new Callback<JsonObject>() {
@Override
public void onResponse(Call<JsonObject> call, Response<JsonObject> response) {
......@@ -255,7 +263,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
updateFragment(userFragment);
break;
case "event":
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = getRetrofitInterface();
retrofitInterface.getEvent(getSessionIDHeader(), getID(appLinkData)).enqueue(new Callback<Event>() {
@Override
public void onResponse(Call<Event> call, Response<Event> response) {
......@@ -319,7 +327,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
String fcmId = instanceIdResult.getToken();
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = getRetrofitInterface();
retrofitInterface.getUserMe(getSessionIDHeader(), fcmId).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
......@@ -394,8 +402,15 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
this.menu = menu;
fetchNotifications();
getMenuInflater().inflate(R.menu.main, this.menu);
// Fetch notifictions if logged in or hide icon
if (session.isLoggedIn()) {
fetchNotifications();
} else {
this.menu.findItem(R.id.action_notifications).setVisible(false);
}
return true;
}
......@@ -540,8 +555,11 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
public void initPicasso() {
Picasso.Builder builder = new Picasso.Builder(getApplicationContext());
OkHttpClient.Builder client = new OkHttpClient.Builder();
Cache cache = new Cache(new File(getApplicationContext().getCacheDir(), "http-cache"), 100 * 1024 * 1024);
client.cache(cache);
builder.downloader(new com.squareup.picasso.OkHttp3Downloader((
new OkHttpClient.Builder().build()
client.build()
)));
Picasso built = builder.build();
built.setIndicatorsEnabled(false);
......
......@@ -12,6 +12,7 @@ import com.squareup.picasso.Picasso;
import java.util.List;
import app.insti.Constants;
import app.insti.ItemClickListener;
import app.insti.R;
import app.insti.data.Body;
......@@ -51,7 +52,9 @@ public class BodyAdapter extends RecyclerView.Adapter<BodyAdapter.ViewHolder> {
Body body = bodyList.get(position);
holder.name.setText(body.getBodyName());
holder.description.setText(body.getBodyShortDescription());
Picasso.get().load(body.getBodyImageURL()).resize(0, 200).into(holder.image);
Picasso.get().load(
Constants.resizeImageUrl(body.getBodyImageURL(), 200)
).into(holder.image);
}
......
......@@ -17,6 +17,7 @@ import java.util.List;
import java.util.Calendar;
import app.insti.Constants;
import app.insti.ItemClickListener;
import app.insti.R;
import app.insti.data.Event;
......@@ -112,17 +113,14 @@ public class FeedAdapter extends RecyclerView.Adapter<FeedAdapter.ViewHolder> {
getSubtitle(viewHolder, currentEvent);
// Fallback to image of first body if event has no image
if (currentEvent.getEventImageURL() == null) {
currentEvent.setEventImageURL(currentEvent.getEventBodies().get(0).getBodyImageURL());
}
if (currentEvent.isEventBigImage()) {
viewHolder.eventBigPicture.setVisibility(View.VISIBLE);
viewHolder.eventPicture.setVisibility(View.GONE);
Picasso.get().load(currentEvent.getEventImageURL()).into(viewHolder.eventBigPicture);
} else {
Picasso.get().load(currentEvent.getEventImageURL()).into(viewHolder.eventPicture);
Picasso.get().load(
Constants.resizeImageUrl(currentEvent.getEventImageURL(), 200)
).into(viewHolder.eventPicture);
}
}
......
......@@ -13,6 +13,7 @@ import com.squareup.picasso.Picasso;
import java.util.List;
import app.insti.Constants;
import app.insti.ItemClickListener;
import app.insti.R;
import app.insti.data.Event;
......@@ -53,11 +54,15 @@ public class NotificationsAdapter extends RecyclerView.Adapter<NotificationsAdap
viewholder.notificationVerb.setText(appNotification.getNotificationVerb());
if (appNotification.getNotificationActorType().contains("event")) {
Event event = gson.fromJson(gson.toJson(appNotification.getNotificationActor()), Event.class);
Picasso.get().load(event.getEventImageURL()).into(viewholder.notificationPicture);
Picasso.get().load(
Constants.resizeImageUrl(event.getEventImageURL(), 200)
).into(viewholder.notificationPicture);
viewholder.notificationTitle.setText(event.getEventName());
} else if (appNotification.getNotificationActorType().contains("newsentry")) {
NewsArticle article = gson.fromJson(gson.toJson(appNotification.getNotificationActor()), NewsArticle.class);
Picasso.get().load(article.getBody().getBodyImageURL()).into(viewholder.notificationPicture);
Picasso.get().load(
Constants.resizeImageUrl(article.getBody().getBodyImageURL(), 200)
).into(viewholder.notificationPicture);
viewholder.notificationTitle.setText(article.getTitle());
} else if (appNotification.getNotificationActorType().contains("blogentry")) {
PlacementBlogPost post = gson.fromJson(gson.toJson(appNotification.getNotificationActor()), PlacementBlogPost.class);
......
package app.insti.api;
import android.content.Context;
import android.net.NetworkInfo;
import android.util.Log;
import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Cache;
import okhttp3.CacheControl;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.logging.HttpLoggingInterceptor;
import okhttp3.Request;
import okhttp3.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class ServiceGenerator {
public static final String HEADER_CACHE_CONTROL = "Cache-Control";
public static final String HEADER_PRAGMA = "Pragma";
private static final String BASE_URL = "https://api.insti.app/api/";
private Context context;
private Interceptor provideCacheInterceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
CacheControl cacheControl;
if (isConnected()) {
cacheControl = new CacheControl.Builder()
.maxAge(0, TimeUnit.SECONDS)
.build();
} else {
cacheControl = new CacheControl.Builder()
.maxStale(7, TimeUnit.DAYS)
.build();
}
return response.newBuilder()
.removeHeader(HEADER_PRAGMA)
.removeHeader(HEADER_CACHE_CONTROL)
.header(HEADER_CACHE_CONTROL, cacheControl.toString())
.build();
}
};
private Interceptor provideOfflineCacheInterceptor = new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
if (!isConnected()) {
CacheControl cacheControl = new CacheControl.Builder()
.maxStale(7, TimeUnit.DAYS)
.build();
request = request.newBuilder()
.removeHeader(HEADER_PRAGMA)
.removeHeader(HEADER_CACHE_CONTROL)
.cacheControl(cacheControl)
.build();
}
return chain.proceed(request);
}
};
private Cache provideCache() {
Cache cache = null;
try {
cache = new Cache(new File(context.getCacheDir(), "api-cache"),
50 * 1024 * 1024); // 50 MB
} catch (Exception e) {
Log.e("cache", "Could not create Cache!");
}
return cache;
}
public boolean isConnected() {
Log.wtf("cache", "MEOW");
try {
android.net.ConnectivityManager e = (android.net.ConnectivityManager) context.getSystemService(
Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = e.getActiveNetworkInfo();
Log.wtf("cache", Boolean.toString(activeNetwork != null && activeNetwork.isConnectedOrConnecting()));
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
} catch (Exception e) {
Log.w("cache", e.toString());
}
return false;
}
private static OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder();
private static Retrofit.Builder retrofitBuilder = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create());
private static Retrofit retrofit;
public static <S> S createService(Class<S> serviceClass) {
retrofit = retrofitBuilder.client(clientBuilder.build()).build();
return retrofit.create(serviceClass);
private Retrofit retrofit;
public RetrofitInterface retrofitInterface;
public ServiceGenerator(Context mContext) {
context = mContext;
retrofit = retrofitBuilder.client(
clientBuilder
.addInterceptor(provideOfflineCacheInterceptor)
.addNetworkInterceptor(provideCacheInterceptor)
.cache(provideCache())
.build()
).build();
retrofitInterface = retrofit.create(RetrofitInterface.class);
}
public RetrofitInterface getRetrofitInterface() {
return retrofitInterface;
}
}
package app.insti.data;
import android.arch.persistence.room.Database;
import android.arch.persistence.room.Room;
import android.arch.persistence.room.RoomDatabase;
import android.arch.persistence.room.TypeConverters;
import android.content.Context;
@Database(entities = {Event.class, Body.class, Venue.class, User.class, Role.class, PlacementBlogPost.class, TrainingBlogPost.class, HostelMessMenu.class, NewsArticle.class}, version = 2, exportSchema = false)
@TypeConverters({Converters.class})
public abstract class AppDatabase extends RoomDatabase {
private static AppDatabase INSTANCE;
public static AppDatabase getAppDatabase(Context context) {
if (INSTANCE == null) {
INSTANCE =
Room.databaseBuilder(context.getApplicationContext(), AppDatabase.class, "database")
// allow queries on the main thread.
// Don't do this on a real app! See PersistenceBasicSample for an example.
// .allowMainThreadQueries()
.fallbackToDestructiveMigration()
.build();
}
return INSTANCE;
}
public static void destroyInstance() {
INSTANCE = null;
}
public abstract DbDao dbDao();
}
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.Ignore;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.util.List;
@Entity(tableName = "bodies")
public class Body {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
String bodyID;
@ColumnInfo(name = "str_id")
@SerializedName("str_id")
String bodyStrID;
@ColumnInfo(name = "name")
@SerializedName("name")
String bodyName;
@ColumnInfo(name = "short_description")
@SerializedName("short_description")
String bodyShortDescription;
@ColumnInfo(name = "description")
@SerializedName("description")
String bodyDescription;
@ColumnInfo(name = "image_url")
@SerializedName("image_url")
String bodyImageURL;
@ColumnInfo(name = "children")
@SerializedName("children")
List<Body> bodyChildren;
@ColumnInfo(name = "parents")
@SerializedName("parents")
List<Body> bodyParents;
@ColumnInfo(name = "events")
@SerializedName("events")
List<Event> bodyEvents;
@ColumnInfo(name = "followers_count")
@SerializedName("followers_count")
int bodyFollowersCount;
@ColumnInfo(name = "website_url")
@SerializedName("website_url")
String bodyWebsiteURL;
@ColumnInfo(name = "blog_url")
@SerializedName("blog_url")
String bodyBlogURL;
@ColumnInfo(name = "user_follows")
@SerializedName("user_follows")
boolean bodyUserFollows;
@ColumnInfo(name = "roles")
@SerializedName("roles")
List<Role> bodyRoles;
@Ignore
public Body(@NonNull String bodyID) {
this.bodyID = bodyID;
}
......
package app.insti.data;
import android.arch.persistence.room.TypeConverter;
import android.util.Log;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.sql.Timestamp;
import java.util.List;
public class Converters {
@TypeConverter
public static List<Event> eventsfromString(String value) {
Type listType = new TypeToken<List<Event>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromEvents(List<Event> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
@TypeConverter
public static List<User> usersfromString(String value) {
Type listType = new TypeToken<List<User>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromUsers(List<User> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
@TypeConverter
public static List<Venue> venuesfromString(String value) {
Type listType = new TypeToken<List<Venue>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromVenues(List<Venue> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
@TypeConverter
public static List<Body> bodiesfromString(String value) {
Type listType = new TypeToken<List<Body>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromBodies(List<Body> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
@TypeConverter
public static List<Role> rolesfromString(String value) {
Type listType = new TypeToken<List<Role>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromRoles(List<Role> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
@TypeConverter
public static Timestamp timestampfromString(String value) {
try {
return new Gson().fromJson(value, Timestamp.class);
} catch (JsonSyntaxException e) {
Log.d("Converters", "timestampfromString: " + value);
e.printStackTrace();
return null;
}
}
@TypeConverter
public static String stringfromTimestamp(Timestamp timestamp) {
Gson gson = new Gson();
String json = gson.toJson(timestamp);
return json;
}
@TypeConverter
public static Body bodyfromString(String value) {
Type listType = new TypeToken<Body>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromBody(Body body) {
Gson gson = new Gson();
String json = gson.toJson(body);
return json;
}
@TypeConverter
public static Object objectFromString(String value) {
Type listType = new TypeToken<Object>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringFromObject(Object object) {
Gson gson = new Gson();
String json = gson.toJson(object);
return json;
}
@TypeConverter
public static List<String> stringsfromString(String value) {
Type listType = new TypeToken<List<String>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromStrings(List<String> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
@TypeConverter
public static List<MessMenu> messMenusfromString(String value) {
Type listType = new TypeToken<List<MessMenu>>() {
}.getType();
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String stringfromMessMenus(List<MessMenu> list) {
Gson gson = new Gson();
String json = gson.toJson(list);
return json;
}
}
\ No newline at end of file
package app.insti.data;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Delete;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.Query;
import android.arch.persistence.room.Update;
import java.util.List;
@Dao
public interface DbDao {
@Query("SELECT * FROM events")
List<Event> getAllEvents();
@Query("SELECT * FROM events WHERE user_ues <> 0")
List<Event> getFollowingEvents();
@Query("SELECT * FROM bodies")
List<Body> getAllBodies();
@Query("SELECT * FROM venues")
List<Venue> getAllVenues();
@Query("SELECT * FROM users")
List<User> getAllUsers();
@Query("SELECT * FROM roles")
List<Role> getAllRoles();
@Query("SELECT * FROM placementBlogPosts")
List<PlacementBlogPost> getAllPlacementBlogPosts();
@Query("SELECT * FROM trainingBlogPosts")
List<TrainingBlogPost> getAllTrainingBlogPosts();
@Query("SELECT * FROM hostelMessMenus")
List<HostelMessMenu> getAllHostelMessMenus();
@Query("SELECT * FROM news")
List<NewsArticle> getAllNewsArticles();
@Query("SELECT COUNT(*) from events")
int countEvents();
@Query("SELECT * FROM bodies WHERE id == :id")
public Body[] getBody(String id);
@Query("SELECT COUNT(*) from venues")
int countVenues();
@Query("SELECT COUNT(*) from bodies")
int countBodies();
@Query("SELECT COUNT(*) from users")
int countUsers();
@Query("SELECT COUNT(*) from roles")
int countRoles();
@Query("SELECT COUNT(*) from hostelMessMenus")
int countHostelMessMenus();
@Insert
void insertEvents(List<Event> events);
@Insert
void insertEvent(Event event);
@Update
void updateEvent(Event event);
@Insert
void insertBodies(List<Body> bodies);
@Insert
void insertBody(Body body);
@Update
void updateBody(Body body);
@Insert
void insertVenues(List<Venue> venues);
@Insert
void insertVenue(Venue venue);
@Insert
void insertUsers(List<User> users);
@Insert
void insertUser(User user);
@Insert
void insertRoles(List<Role> roles);
@Insert
void insertRole(Role role);
@Insert
void insertPlacementBlogPost(PlacementBlogPost post);
@Insert
void insertPlacementBlogPosts(List<PlacementBlogPost> posts);
@Insert
void insertTrainingBlogPost(TrainingBlogPost post);
@Insert
void insertTrainingBlogPosts(List<TrainingBlogPost> posts);
@Insert
void insertHostelMessMenu(HostelMessMenu hostelMessMenu);
@Insert
void insertHostelMessMenus(List<HostelMessMenu> hostelMessMenus);
@Insert
void insertNewsArticle(NewsArticle newsArticle);
@Insert
void insertNewsArticles(List<NewsArticle> newsArticles);
@Delete
void deleteEvent(Event event);
@Delete
void deleteVenue(Venue venue);
@Delete
void deleteBody(Body body);
@Delete
void deleteUser(User user);
@Delete
void deleteRole(Role role);
@Query("DELETE from events")
void deleteEvents();
@Query("DELETE from venues")
void deleteVenues();
@Query("DELETE from bodies")
void deleteBodies();
@Query("DELETE from users")
void deleteUsers();
@Query("DELETE from roles")
void deleteRoles();
@Query("DELETE from placementBlogPosts")
void deletePlacementBlogPosts();
@Query("DELETE from trainingBlogPosts")
void deleteTrainingBlogPosts();
@Query("DELETE from hostelMessMenus")
void deleteHostelMessMenus();
@Query("DELETE from news")
void deleteNewsArticles();
}
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.Ignore;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.Gson;
......@@ -12,61 +8,56 @@ import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
import java.util.List;
@Entity(tableName = "events")
public class Event {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
String eventID;
@ColumnInfo(name = "str_id")
@SerializedName("str_id")
String eventStrID;
@ColumnInfo(name = "name")
@SerializedName("name")
String eventName;
@ColumnInfo(name = "description")
@SerializedName("description")
String eventDescription;
@ColumnInfo(name = "image_url")
@SerializedName("image_url")
String eventImageURL;
@ColumnInfo(name = "start_time")
@SerializedName("start_time")
Timestamp eventStartTime;
@ColumnInfo(name = "end_time")
@SerializedName("end_time")
Timestamp eventEndTime;
@ColumnInfo(name = "all_day")
@SerializedName("all_day")
boolean allDayEvent;
@ColumnInfo(name = "venues")
@SerializedName("venues")
List<Venue> eventVenues;
@ColumnInfo(name = "bodies")
@SerializedName("bodies")
List<Body> eventBodies;
@ColumnInfo(name = "interested_count")
@SerializedName("interested_count")
int eventInterestedCount;
@ColumnInfo(name = "going_count")
@SerializedName("going_count")
int eventGoingCount;
@ColumnInfo(name = "interested")
@SerializedName("interested")
List<User> eventInterested;
@ColumnInfo(name = "going")
@SerializedName("going")
List<User> eventGoing;
@ColumnInfo(name = "website_url")
@SerializedName("website_url")
String eventWebsiteURL;
@ColumnInfo(name = "user_ues")
@SerializedName("user_ues")
int eventUserUes;
@Ignore
boolean eventBigImage = false;
public Event(String eventID, String eventStrID, String eventName, String eventDescription, String eventImageURL, Timestamp eventStartTime, Timestamp eventEndTime, boolean allDayEvent, List<Venue> eventVenues, List<Body> eventBodies, int eventInterestedCount, int eventGoingCount, List<User> eventInterested, List<User> eventGoing, String eventWebsiteURL, int eventUserUes) {
......@@ -121,6 +112,10 @@ public class Event {
}
public String getEventImageURL() {
// Fallback to body image if event has no image
if (eventImageURL == null) {
return getEventBodies().get(0).getBodyImageURL();
}
return eventImageURL;
}
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.util.List;
@Entity(tableName = "hostelMessMenus")
public class HostelMessMenu {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
private String menuID;
@ColumnInfo(name = "name")
@SerializedName("name")
private String name;
@ColumnInfo(name = "short_name")
@SerializedName("short_name")
private String shortName;
@ColumnInfo(name = "long_name")
@SerializedName("long_name")
private String longName;
@ColumnInfo(name = "mess")
@SerializedName("mess")
private List<MessMenu> messMenus;
......
package app.insti.data;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
public class MessMenu {
@NonNull()
@PrimaryKey()
@SerializedName("id")
private String mealID;
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
@Entity(tableName = "news")
public class NewsArticle {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
private String articleID;
@ColumnInfo(name = "link")
@SerializedName("link")
private String link;
@ColumnInfo(name = "title")
@SerializedName("title")
private String title;
@ColumnInfo(name = "content")
@SerializedName("content")
private String content;
@ColumnInfo(name = "published")
@SerializedName("published")
private Timestamp published;
@ColumnInfo(name = "body")
@SerializedName("body")
private Body body;
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
@Entity(tableName = "news")
public class Notification {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
private Integer notificationId;
@ColumnInfo(name = "verb")
@SerializedName("verb")
private String notificationVerb;
@ColumnInfo(name = "unread")
@SerializedName("unread")
private boolean notificationUnread;
@ColumnInfo(name = "actor_type")
@SerializedName("actor_type")
private String notificationActorType;
@ColumnInfo(name = "actor")
@SerializedName("actor")
private Object notificationActor;
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
@Entity(tableName = "placementBlogPosts")
public class PlacementBlogPost {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
private String postID;
@ColumnInfo(name = "link")
@SerializedName("link")
private String link;
@ColumnInfo(name = "title")
@SerializedName("title")
private String title;
@ColumnInfo(name = "content")
@SerializedName("content")
private String content;
@ColumnInfo(name = "published")
@SerializedName("published")
private Timestamp published;
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.util.List;
@Entity(tableName = "roles")
public class Role {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
String roleID;
@ColumnInfo(name = "name")
@SerializedName("name")
String roleName;
@ColumnInfo(name = "inheritable")
@SerializedName("inheritable")
boolean roleInheritable;
@ColumnInfo(name = "body")
@SerializedName("body")
String roleBody;
@ColumnInfo(name = "body_detail")
@SerializedName("body_detail")
Body roleBodyDetails;
@ColumnInfo(name = "bodies")
@SerializedName("bodies")
List<Body> roleBodies;
@ColumnInfo(name = "permissions")
@SerializedName("permissions")
List<String> rolePermissions;
@ColumnInfo(name = "users")
@SerializedName("users")
List<String> roleUsers;
@ColumnInfo(name = "users_detail")
@SerializedName("users_detail")
List<User> roleUsersDetail;
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
import java.sql.Timestamp;
@Entity(tableName = "trainingBlogPosts")
public class TrainingBlogPost {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
private String postID;
@ColumnInfo(name = "link")
@SerializedName("link")
private String link;
@ColumnInfo(name = "title")
@SerializedName("title")
private String title;
@ColumnInfo(name = "content")
@SerializedName("content")
private String content;
@ColumnInfo(name = "published")
@SerializedName("published")
private Timestamp published;
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.Ignore;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.Gson;
......@@ -11,66 +7,59 @@ import com.google.gson.annotations.SerializedName;
import java.util.List;
@Entity(tableName = "users")
public class User {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
String userID;
@ColumnInfo(name = "name")
@SerializedName("name")
String userName;
@ColumnInfo(name = "profile_pic")
@SerializedName("profile_pic")
String userProfilePictureUrl;
@ColumnInfo(name = "events_interested")
@SerializedName("events_interested")
List<Event> userInterestedEvents;
@ColumnInfo(name = "events_going")
@SerializedName("events_going")
List<Event> userGoingEvents;
@ColumnInfo(name = "email")
@SerializedName("email")
String userEmail;
@ColumnInfo(name = "roll_no")
@SerializedName("roll_no")
String userRollNumber;
@ColumnInfo(name = "contact_no")
@SerializedName("contact_no")
String userContactNumber;
@ColumnInfo(name = "about")
@SerializedName("about")
String userAbout;
@ColumnInfo(name = "followed_bodies")
@SerializedName("followed_bodies")
List<Body> userFollowedBodies;
@ColumnInfo(name = "followed_bodies_id")
@SerializedName("followed_bodies_id")
List<String> userFollowedBodiesID;
@ColumnInfo(name = "roles")
@SerializedName("roles")
List<Role> userRoles;
@ColumnInfo(name = "institute_roles")
@SerializedName("institute_roles")
List<Role> userInstituteRoles;
@ColumnInfo(name = "former_roles")
@SerializedName("former_roles")
List<Role> userFormerRoles;
@ColumnInfo(name = "website_url")
@SerializedName("website_url")
String userWebsiteURL;
@ColumnInfo(name = "ldap_id")
@SerializedName("ldap_id")
String userLDAPId;
@ColumnInfo(name = "hostel")
@SerializedName("hostel")
String hostel;
/**
* Not in database
*/
@Ignore
String currentRole;
public User(@NonNull String userID, String userName, String userProfilePictureUrl, List<Event> userInterestedEvents, List<Event> userGoingEvents, String userEmail, String userRollNumber, String userContactNumber, String userAbout, List<Body> userFollowedBodies, List<String> userFollowedBodiesID, List<Role> userRoles, List<Role> userInstituteRoles, List<Role> userFormerRoles, String userWebsiteURL, String userLDAPId, String hostel) {
......
package app.insti.data;
import android.arch.persistence.room.ColumnInfo;
import android.arch.persistence.room.Entity;
import android.arch.persistence.room.PrimaryKey;
import android.support.annotation.NonNull;
import com.google.gson.annotations.SerializedName;
@Entity(tableName = "venues")
public class Venue {
@NonNull()
@PrimaryKey()
@ColumnInfo(name = "id")
@SerializedName("id")
String venueID;
@ColumnInfo(name = "name")
@SerializedName("name")
String venueName;
@ColumnInfo(name = "short_name")
@SerializedName("short_name")
String venueShortName;
@ColumnInfo(name = "description")
@SerializedName("description")
String venueDescripion;
@ColumnInfo(name = "parent")
@SerializedName("parent")
String venueParentId;
@ColumnInfo(name = "parent_relation")
@SerializedName("parent_relation")
String venueParentRelation;
@ColumnInfo(name = "group_id")
@SerializedName("group_id")
Integer venueGroupId;
@ColumnInfo(name = "pixel_x")
@SerializedName("pixel_x")
Integer venuePixelX;
@ColumnInfo(name = "pixel_y")
@SerializedName("pixel_y")
Integer venuePixelY;
@ColumnInfo(name = "reusable")
@SerializedName("reusable")
Boolean venueReusable;
@ColumnInfo(name = "lat")
@SerializedName("lat")
double venueLatitude;
@ColumnInfo(name = "lng")
@SerializedName("lng")
double venueLongitude;
......
......@@ -167,7 +167,7 @@ public class AddEventFragment extends BaseFragment {
if (url.contains("/event/")) {
url = url.substring(url.lastIndexOf("/") + 1);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getEvent(((MainActivity) getActivity()).getSessionIDHeader(), url).enqueue(new Callback<Event>() {
@Override
public void onResponse(Call<Event> call, Response<Event> response) {
......@@ -185,7 +185,7 @@ public class AddEventFragment extends BaseFragment {
} else if (url.contains("/org/")) {
url = url.substring(url.lastIndexOf("/") + 1);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getBody(((MainActivity) getActivity()).getSessionIDHeader(), url).enqueue(new Callback<Body>() {
@Override
public void onResponse(Call<Body> call, Response<Body> response) {
......
......@@ -45,8 +45,6 @@ import app.insti.adapter.BodyAdapter;
import app.insti.adapter.FeedAdapter;
import app.insti.adapter.UserAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.Body;
import app.insti.data.Event;
import app.insti.data.Role;
......@@ -67,7 +65,6 @@ public class BodyFragment extends BackHandledFragment {
String TAG = "BodyFragment";
private AppDatabase appDatabase;
// TODO: Rename and change types of parameters
private Body min_body;
private SwipeRefreshLayout bodySwipeRefreshLayout;
......@@ -133,13 +130,11 @@ public class BodyFragment extends BackHandledFragment {
/* Initialize */
bodyDisplayed = false;
appDatabase = AppDatabase.getAppDatabase(getContext());
body = min_body;
displayBody();
/* Check if full body was passed */
if (min_body.getBodyDescription() == null) {
new getDbBody().execute(min_body.getBodyID());
updateBody();
}
......@@ -157,15 +152,13 @@ public class BodyFragment extends BackHandledFragment {
}
private void updateBody() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getBody(((MainActivity) getActivity()).getSessionIDHeader(), min_body.getBodyID()).enqueue(new Callback<Body>() {
@Override
public void onResponse(Call<Body> call, Response<Body> response) {
if (response.isSuccessful()) {
Body bodyResponse = response.body();
new updateDbBody().execute(bodyResponse);
if (!bodyDisplayed) {
body = bodyResponse;
displayBody();
......@@ -236,13 +229,12 @@ public class BodyFragment extends BackHandledFragment {
followButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.updateBodyFollowing(((MainActivity) getActivity()).getSessionIDHeader(), body.getBodyID(), body.getBodyUserFollows() ? 0 : 1).enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
if (response.isSuccessful()) {
body.setBodyUserFollows(!body.getBodyUserFollows());
new updateDbBody().execute(body);
followButton.setBackgroundColor(getResources().getColor(body.getBodyUserFollows() ? R.color.colorAccent : R.color.colorWhite));
}
}
......@@ -544,31 +536,4 @@ public class BodyFragment extends BackHandledFragment {
startScaleFinal = startScale;
zoomMode = true;
}
private class updateDbBody extends AsyncTask<Body, Void, Integer> {
@Override
protected Integer doInBackground(Body... body) {
if (appDatabase.dbDao().getBody(body[0].getBodyID()).length > 0) {
appDatabase.dbDao().updateBody(body[0]);
} else {
appDatabase.dbDao().insertBody(body[0]);
}
return 1;
}
}
private class getDbBody extends AsyncTask<String, Void, Body[]> {
@Override
protected Body[] doInBackground(String... id) {
return appDatabase.dbDao().getBody(min_body.getBodyID());
}
@Override
protected void onPostExecute(Body[] result) {
if (result.length > 0 && !bodyDisplayed) {
body = result[0];
displayBody();
}
}
}
}
......@@ -117,7 +117,7 @@ public class CalendarFragment extends BaseFragment {
final String oneMonthBack = isoFormatter.format(oneMonthBackDate).toString();
final String oneMonthOn = isoFormatter.format(oneMonthOnDate).toString();
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getEventsBetweenDates(((MainActivity) getActivity()).getSessionIDHeader(), oneMonthBack, oneMonthOn).enqueue(new Callback<NewsFeedResponse>() {
@Override
public void onResponse(Call<NewsFeedResponse> call, Response<NewsFeedResponse> response) {
......
......@@ -49,8 +49,6 @@ import app.insti.ShareURLMaker;
import app.insti.activity.MainActivity;
import app.insti.adapter.BodyAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.Body;
import app.insti.data.Event;
import app.insti.data.Venue;
......@@ -71,7 +69,6 @@ public class EventFragment extends BackHandledFragment {
ImageButton shareEventButton;
RecyclerView bodyRecyclerView;
String TAG = "EventFragment";
private AppDatabase appDatabase;
// Hold a reference to the current animator,
// so that it can be canceled mid-way.
......@@ -135,9 +132,6 @@ public class EventFragment extends BackHandledFragment {
public void onStart() {
super.onStart();
/* Initialize */
appDatabase = AppDatabase.getAppDatabase(getContext());
Bundle bundle = getArguments();
String eventJson = bundle.getString(Constants.EVENT_JSON);
Log.d(TAG, "onStart: " + eventJson);
......@@ -161,11 +155,6 @@ public class EventFragment extends BackHandledFragment {
webEventButton = getActivity().findViewById(R.id.web_event_button);
shareEventButton = getActivity().findViewById(R.id.share_event_button);
// Fallback to image of first body if event has no image
if (event.getEventImageURL() == null) {
event.setEventImageURL(event.getEventBodies().get(0).getBodyImageURL());
}
Picasso.get().load(event.getEventImageURL()).into(eventPicture);
eventTitle.setText(event.getEventName());
Markwon.setMarkdown(eventDescription, event.getEventDescription());
......@@ -299,7 +288,7 @@ public class EventFragment extends BackHandledFragment {
@Override
public void onClick(View view) {
final int endStatus = event.getEventUserUes() == status ? 0 : status;
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.updateUserEventStatus(((MainActivity) getActivity()).getSessionIDHeader(), event.getEventID(), endStatus).enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
......@@ -329,7 +318,6 @@ public class EventFragment extends BackHandledFragment {
}
event.setEventUserUes(endStatus);
new updateDbEvent().execute(event);
setFollowButtonColors(endStatus);
}
}
......@@ -479,12 +467,4 @@ public class EventFragment extends BackHandledFragment {
set.start();
mCurrentAnimator = set;
}
private class updateDbEvent extends AsyncTask<Event, Void, Integer> {
@Override
protected Integer doInBackground(Event... event) {
appDatabase.dbDao().updateEvent(event[0]);
return 1;
}
}
}
......@@ -87,7 +87,7 @@ public class ExploreFragment extends Fragment {
// Get all bodies
if (allBodies.size() == 0) {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getAllBodies(sessionId).enqueue(new Callback<List<Body>>() {
@Override
public void onResponse(Call<List<Body>> call, Response<List<Body>> response) {
......@@ -141,7 +141,7 @@ public class ExploreFragment extends Fragment {
getView().findViewById(R.id.loadingPanel).setVisibility(View.VISIBLE);
// Make request
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.search(sessionId, query).enqueue(new Callback<ExploreResponse>() {
@Override
public void onResponse(Call<ExploreResponse> call, Response<ExploreResponse> response) {
......
......@@ -2,7 +2,6 @@ package app.insti.fragment;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
......@@ -27,9 +26,7 @@ import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.adapter.FeedAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.api.model.NewsFeedResponse;
import app.insti.data.AppDatabase;
import app.insti.data.Event;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -42,7 +39,6 @@ public class FeedFragment extends BaseFragment {
private RecyclerView feedRecyclerView;
private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase;
private FloatingActionButton fab;
private boolean freshEventsDisplayed = false;
LinearLayoutManager mLayoutManager;
......@@ -78,8 +74,6 @@ public class FeedFragment extends BaseFragment {
@Override
public void onStart() {
super.onStart();
appDatabase = AppDatabase.getAppDatabase(getContext());
new showEventsFromDB().execute();
fab = (FloatingActionButton) getView().findViewById(R.id.fab);
updateFeed();
}
......@@ -104,9 +98,9 @@ public class FeedFragment extends BaseFragment {
}
}
private void updateFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getNewsFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID)).enqueue(new Callback<NewsFeedResponse>() {
@Override
public void onResponse(Call<NewsFeedResponse> call, Response<NewsFeedResponse> response) {
......@@ -115,8 +109,6 @@ public class FeedFragment extends BaseFragment {
List<Event> events = newsFeedResponse.getEvents();
freshEventsDisplayed = true;
displayEvents(events);
new updateDatabase().execute(events);
}
//Server Error
feedSwipeRefreshLayout.setRefreshing(false);
......@@ -192,26 +184,4 @@ public class FeedFragment extends BaseFragment {
if (view != null)
view.setVisibility(View.GONE);
}
private class updateDatabase extends AsyncTask<List<Event>, Void, Integer> {
@Override
protected Integer doInBackground(List<Event>... events) {
appDatabase.dbDao().deleteEvents();
appDatabase.dbDao().insertEvents(events[0]);
return 1;
}
}
private class showEventsFromDB extends AsyncTask<String, Void, List<Event>> {
@Override
protected List<Event> doInBackground(String... events) {
return appDatabase.dbDao().getAllEvents();
}
protected void onPostExecute(List<Event> result) {
if (!freshEventsDisplayed) {
displayEvents(result);
}
}
}
}
......@@ -90,8 +90,6 @@ import app.insti.Constants;
import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.Venue;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -129,7 +127,6 @@ public class MapFragment extends Fragment implements TextWatcher,
public ImageButton addMarkerIcon;
public SoundPool soundPool;
public int[] soundPoolIds;
private AppDatabase appDatabase;
private SettingsManager settingsManager;
private FuzzySearchAdapter adapter;
private ExpandableListAdapter expAdapter;
......@@ -223,21 +220,18 @@ public class MapFragment extends Fragment implements TextWatcher,
toolbar.setTitle("InstiMap");
/* Initialize */
appDatabase = AppDatabase.getAppDatabase(getContext());
editText = (EditText) getView().findViewById(R.id.search);
setFonts();
getAPILocations();
new showLocationsFromDB().execute();
}
private void getAPILocations() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getAllVenues().enqueue(new Callback<List<Venue>>() {
@Override
public void onResponse(Call<List<Venue>> call, Response<List<Venue>> response) {
if (response.isSuccessful()) {
new updateDatabase().execute(response.body());
if (!locationsShown) {
setupWithData(response.body());
locationsShown = true;
......@@ -1026,29 +1020,6 @@ public class MapFragment extends Fragment implements TextWatcher,
});
}
private class updateDatabase extends AsyncTask<List<Venue>, Void, Integer> {
@Override
protected Integer doInBackground(List<Venue>... venues) {
appDatabase.dbDao().deleteVenues();
appDatabase.dbDao().insertVenues(venues[0]);
return 1;
}
}
private class showLocationsFromDB extends AsyncTask<String, Void, List<Venue>> {
@Override
protected List<Venue> doInBackground(String... events) {
return appDatabase.dbDao().getAllVenues();
}
protected void onPostExecute(List<Venue> result) {
if (!locationsShown && result.size() > 0) {
setupWithData(result);
locationsShown = true;
}
}
}
private class CustomListAdapter extends ArrayAdapter<String> {
private Context mContext;
......
......@@ -24,10 +24,9 @@ import java.util.Locale;
import app.insti.ActivityBuffer;
import app.insti.Constants;
import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.adapter.MessMenuAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.HostelMessMenu;
import app.insti.data.MessMenu;
import retrofit2.Call;
......@@ -41,7 +40,6 @@ public class MessMenuFragment extends BaseFragment {
private RecyclerView messMenuRecyclerView;
private SwipeRefreshLayout messMenuSwipeRefreshLayout;
private AppDatabase appDatabase;
private Spinner hostelSpinner;
private String hostel;
......@@ -106,14 +104,11 @@ public class MessMenuFragment extends BaseFragment {
}
private void displayMenu(final String hostel) {
appDatabase = AppDatabase.getAppDatabase(getContext());
new showMessMenuFromDB().execute(hostel);
updateMessMenu(hostel);
}
private void updateMessMenu(final String hostel) {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getInstituteMessMenu("sessionid=" + getArguments().getString(Constants.SESSION_ID)).enqueue(new Callback<List<HostelMessMenu>>() {
@Override
public void onResponse(Call<List<HostelMessMenu>> call, Response<List<HostelMessMenu>> response) {
......@@ -122,8 +117,6 @@ public class MessMenuFragment extends BaseFragment {
HostelMessMenu hostelMessMenu = findMessMenu(instituteMessMenu, hostel);
if(hostelMessMenu != null)
displayMessMenu(hostelMessMenu);
new updateDatabase().execute(instituteMessMenu);
}
//Server Error
messMenuSwipeRefreshLayout.setRefreshing(false);
......@@ -186,27 +179,4 @@ public class MessMenuFragment extends BaseFragment {
});
getActivity().findViewById(R.id.loadingPanel).setVisibility(View.GONE);
}
private class updateDatabase extends AsyncTask<List<HostelMessMenu>, Void, Integer> {
@Override
protected Integer doInBackground(List<HostelMessMenu>... menus) {
appDatabase.dbDao().deleteHostelMessMenus();
appDatabase.dbDao().insertHostelMessMenus(menus[0]);
return 1;
}
}
public class showMessMenuFromDB extends AsyncTask<String, Void, HostelMessMenu> {
@Override
protected HostelMessMenu doInBackground(String... strings) {
return findMessMenu(appDatabase.dbDao().getAllHostelMessMenus(), strings[0]);
}
@Override
protected void onPostExecute(HostelMessMenu hostelMessMenu) {
if (hostelMessMenu != null)
displayMessMenu(hostelMessMenu);
}
}
}
......@@ -26,8 +26,12 @@ import app.insti.ItemClickListener;
import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.adapter.FeedAdapter;
import app.insti.data.AppDatabase;
import app.insti.api.RetrofitInterface;
import app.insti.data.Event;
import app.insti.data.User;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* A simple {@link Fragment} subclass.
......@@ -36,7 +40,6 @@ public class MyEventsFragment extends BaseFragment {
private RecyclerView myEventsFeedRecyclerView;
private SwipeRefreshLayout myEventsFeedSwipeRefreshLayout;
private AppDatabase appDatabase;
private FloatingActionButton fab;
public MyEventsFragment() {
......@@ -71,8 +74,7 @@ public class MyEventsFragment extends BaseFragment {
fab.setVisibility(View.VISIBLE);
}
appDatabase = AppDatabase.getAppDatabase(getContext());
new showEvents().execute();
updateOnRefresh();
myEventsFeedSwipeRefreshLayout = getActivity().findViewById(R.id.my_events_feed_swipe_refresh_layout);
myEventsFeedSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
......@@ -85,9 +87,21 @@ public class MyEventsFragment extends BaseFragment {
}
private void updateOnRefresh() {
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getUserMe(((MainActivity)getActivity()).getSessionIDHeader()).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
if (response.isSuccessful()) {
User user = response.body();
List<Event> events = user.getUserGoingEvents();
events.addAll(user.getUserInterestedEvents());
displayEvents(events);
}
}
new showEvents().execute();
@Override
public void onFailure(Call<User> call, Throwable t) {}
});
}
private void displayEvents(final List<Event> events) {
......@@ -126,16 +140,4 @@ public class MyEventsFragment extends BaseFragment {
getActivity().findViewById(R.id.loadingPanel).setVisibility(View.GONE);
}
private class showEvents extends AsyncTask<String, Void, List<Event>> {
@Override
protected List<Event> doInBackground(String... events) {
return appDatabase.dbDao().getFollowingEvents();
}
protected void onPostExecute(List<Event> result) {
displayEvents(result);
}
}
}
\ No newline at end of file
......@@ -30,8 +30,6 @@ import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.adapter.NewsAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.NewsArticle;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -45,7 +43,6 @@ public class NewsFragment extends BaseFragment {
public static boolean showLoader = true;
private RecyclerView newsRecyclerView;
private SwipeRefreshLayout newsSwipeRefreshLayout;
private AppDatabase appDatabase;
private boolean freshNewsDisplayed = false;
private String searchQuery;
......@@ -70,9 +67,6 @@ public class NewsFragment extends BaseFragment {
setHasOptionsMenu(true);
appDatabase = AppDatabase.getAppDatabase(getContext());
new NewsFragment.showNewsFromDB().execute();
updateNews();
newsSwipeRefreshLayout = getActivity().findViewById(R.id.news_swipe_refresh_layout);
......@@ -85,7 +79,7 @@ public class NewsFragment extends BaseFragment {
}
private void updateNews() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20, searchQuery).enqueue(new Callback<List<NewsArticle>>() {
@Override
public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) {
......@@ -93,8 +87,6 @@ public class NewsFragment extends BaseFragment {
List<NewsArticle> articles = response.body();
freshNewsDisplayed = true;
displayNews(articles);
new updateDatabase().execute(articles);
}
//Server Error
newsSwipeRefreshLayout.setRefreshing(false);
......@@ -138,7 +130,7 @@ public class NewsFragment extends BaseFragment {
if (((layoutManager.getChildCount() + layoutManager.findFirstVisibleItemPosition()) > (layoutManager.getItemCount() - 5)) && (!loading)) {
loading = true;
View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getNews("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10, searchQuery).enqueue(new Callback<List<NewsArticle>>() {
@Override
public void onResponse(Call<List<NewsArticle>> call, Response<List<NewsArticle>> response) {
......@@ -213,26 +205,4 @@ public class NewsFragment extends BaseFragment {
updateNews();
showLoader = false;
}
private class updateDatabase extends AsyncTask<List<NewsArticle>, Void, Integer> {
@Override
protected Integer doInBackground(List<NewsArticle>... posts) {
appDatabase.dbDao().deleteNewsArticles();
appDatabase.dbDao().insertNewsArticles(posts[0]);
return 1;
}
}
private class showNewsFromDB extends AsyncTask<String, Void, List<NewsArticle>> {
@Override
protected List<NewsArticle> doInBackground(String... posts) {
return appDatabase.dbDao().getAllNewsArticles();
}
protected void onPostExecute(List<NewsArticle> result) {
if (!freshNewsDisplayed) {
displayNews(result);
}
}
}
}
......@@ -57,7 +57,7 @@ public class NotificationsFragment extends BaseFragment {
Toolbar toolbar = getActivity().findViewById(R.id.toolbar);
toolbar.setTitle("Notifications");
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getNotifications(((MainActivity) getActivity()).getSessionIDHeader()).enqueue(new Callback<List<Notification>>() {
@Override
public void onResponse(Call<List<Notification>> call, Response<List<Notification>> response) {
......@@ -87,7 +87,7 @@ public class NotificationsFragment extends BaseFragment {
Notification notification = notifications.get(position);
/* Mark notification read */
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
String sessId = ((MainActivity) getActivity()).getSessionIDHeader();
retrofitInterface.markNotificationRead(sessId, notification.getNotificationId()).enqueue(new Callback<Void>() {
@Override
......
......@@ -30,8 +30,6 @@ import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.adapter.PlacementBlogAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.PlacementBlogPost;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -46,7 +44,6 @@ public class PlacementBlogFragment extends BaseFragment {
private RecyclerView placementFeedRecyclerView;
private PlacementBlogAdapter placementBlogAdapter;
private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false;
private String searchQuery;
......@@ -72,9 +69,6 @@ public class PlacementBlogFragment extends BaseFragment {
setHasOptionsMenu(true);
appDatabase = AppDatabase.getAppDatabase(getContext());
new PlacementBlogFragment.showPlacementBlogFromDB().execute();
updatePlacementFeed();
feedSwipeRefreshLayout = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout);
......@@ -87,7 +81,7 @@ public class PlacementBlogFragment extends BaseFragment {
}
private void updatePlacementFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20, searchQuery).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
......@@ -95,8 +89,6 @@ public class PlacementBlogFragment extends BaseFragment {
List<PlacementBlogPost> posts = response.body();
freshBlogDisplayed = true;
displayPlacementFeed(posts);
new updateDatabase().execute(posts);
}
//Server Error
feedSwipeRefreshLayout.setRefreshing(false);
......@@ -138,7 +130,7 @@ public class PlacementBlogFragment extends BaseFragment {
if (((layoutManager.getChildCount() + layoutManager.findFirstVisibleItemPosition()) > (layoutManager.getItemCount() - 5)) && (!loading)) {
loading = true;
View v = getActivity().findViewById(R.id.placement_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getPlacementBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10, searchQuery).enqueue(new Callback<List<PlacementBlogPost>>() {
@Override
public void onResponse(Call<List<PlacementBlogPost>> call, Response<List<PlacementBlogPost>> response) {
......@@ -213,26 +205,4 @@ public class PlacementBlogFragment extends BaseFragment {
updatePlacementFeed();
showLoader = false;
}
private class updateDatabase extends AsyncTask<List<PlacementBlogPost>, Void, Integer> {
@Override
protected Integer doInBackground(List<PlacementBlogPost>... posts) {
appDatabase.dbDao().deletePlacementBlogPosts();
appDatabase.dbDao().insertPlacementBlogPosts(posts[0]);
return 1;
}
}
private class showPlacementBlogFromDB extends AsyncTask<String, Void, List<PlacementBlogPost>> {
@Override
protected List<PlacementBlogPost> doInBackground(String... posts) {
return appDatabase.dbDao().getAllPlacementBlogPosts();
}
protected void onPostExecute(List<PlacementBlogPost> result) {
if (!freshBlogDisplayed) {
displayPlacementFeed(result);
}
}
}
}
......@@ -58,7 +58,7 @@ public class SettingsFragment extends Fragment {
populateViews();
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getUser("sessionid=" + getArguments().getString(Constants.SESSION_ID), userID).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
......@@ -139,7 +139,7 @@ public class SettingsFragment extends Fragment {
logoutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.logout("sessionid=" + getArguments().getString(Constants.SESSION_ID)).enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
......
......@@ -30,8 +30,6 @@ import app.insti.R;
import app.insti.activity.MainActivity;
import app.insti.adapter.TrainingBlogAdapter;
import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator;
import app.insti.data.AppDatabase;
import app.insti.data.TrainingBlogPost;
import retrofit2.Call;
import retrofit2.Callback;
......@@ -45,7 +43,6 @@ public class TrainingBlogFragment extends BaseFragment {
public static boolean showLoader = true;
private RecyclerView trainingFeedRecyclerView;
private SwipeRefreshLayout feedSwipeRefreshLayout;
private AppDatabase appDatabase;
private boolean freshBlogDisplayed = false;
private String searchQuery;
......@@ -71,9 +68,6 @@ public class TrainingBlogFragment extends BaseFragment {
setHasOptionsMenu(true);
appDatabase = AppDatabase.getAppDatabase(getContext());
new TrainingBlogFragment.showTrainingBlogFromDB().execute();
updateTrainingFeed();
feedSwipeRefreshLayout = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
......@@ -86,7 +80,7 @@ public class TrainingBlogFragment extends BaseFragment {
}
private void updateTrainingFeed() {
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), 0, 20, searchQuery).enqueue(new Callback<List<TrainingBlogPost>>() {
@Override
public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) {
......@@ -94,8 +88,6 @@ public class TrainingBlogFragment extends BaseFragment {
List<TrainingBlogPost> posts = response.body();
freshBlogDisplayed = true;
displayTrainingFeed(posts);
new updateDatabase().execute(posts);
}
//Server Error
feedSwipeRefreshLayout.setRefreshing(false);
......@@ -137,7 +129,7 @@ public class TrainingBlogFragment extends BaseFragment {
if (((layoutManager.getChildCount() + layoutManager.findFirstVisibleItemPosition()) > (layoutManager.getItemCount() - 5)) && (!loading)) {
loading = true;
View v = getActivity().findViewById(R.id.training_feed_swipe_refresh_layout);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getTrainingBlogFeed("sessionid=" + getArguments().getString(Constants.SESSION_ID), layoutManager.getItemCount(), 10, searchQuery).enqueue(new Callback<List<TrainingBlogPost>>() {
@Override
public void onResponse(Call<List<TrainingBlogPost>> call, Response<List<TrainingBlogPost>> response) {
......@@ -212,26 +204,4 @@ public class TrainingBlogFragment extends BaseFragment {
updateTrainingFeed();
showLoader = false;
}
private class updateDatabase extends AsyncTask<List<TrainingBlogPost>, Void, Integer> {
@Override
protected Integer doInBackground(List<TrainingBlogPost>... posts) {
appDatabase.dbDao().deleteTrainingBlogPosts();
appDatabase.dbDao().insertTrainingBlogPosts(posts[0]);
return 1;
}
}
private class showTrainingBlogFromDB extends AsyncTask<String, Void, List<TrainingBlogPost>> {
@Override
protected List<TrainingBlogPost> doInBackground(String... posts) {
return appDatabase.dbDao().getAllTrainingBlogPosts();
}
protected void onPostExecute(List<TrainingBlogPost> result) {
if (!freshBlogDisplayed) {
displayTrainingFeed(result);
}
}
}
}
......@@ -34,6 +34,7 @@ import app.insti.Constants;
import app.insti.ItemClickListener;
import app.insti.R;
import app.insti.ShareURLMaker;
import app.insti.activity.MainActivity;
import app.insti.adapter.RoleAdapter;
import app.insti.adapter.TabAdapter;
import app.insti.api.RetrofitInterface;
......@@ -107,7 +108,7 @@ public class UserFragment extends BackHandledFragment {
Bundle bundle = getArguments();
String userID = bundle.getString(Constants.USER_ID);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
RetrofitInterface retrofitInterface = ((MainActivity) getActivity()).getRetrofitInterface();
retrofitInterface.getUser("sessionid=" + getArguments().getString(Constants.SESSION_ID), userID).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
......
......@@ -112,7 +112,8 @@ public class NotificationIntentService extends JobIntentService {
String eventID = intent.getStringExtra(Constants.EVENT_ID);
String sessionID = intent.getStringExtra(Constants.SESSION_ID);
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext());
RetrofitInterface retrofitInterface = serviceGenerator.getRetrofitInterface();
retrofitInterface.updateUserEventStatus("sessionid=" + sessionID, eventID, Constants.STATUS_NOT_GOING).enqueue(new Callback<Void>() {
@Override
public void onResponse(Call<Void> call, Response<Void> response) {
......@@ -149,7 +150,8 @@ public class NotificationIntentService extends JobIntentService {
String userID = sessionManager.getUserID();
final String sessionID = sessionManager.getSessionID();
RetrofitInterface retrofitInterface = ServiceGenerator.createService(RetrofitInterface.class);
ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext());
RetrofitInterface retrofitInterface = serviceGenerator.getRetrofitInterface();
retrofitInterface.getUser("sessionid=" + sessionID, userID).enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
......
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