Commit 5d5ca2a2 authored by Sajal Narang's avatar Sajal Narang Committed by GitHub

Merge pull request #213 from pulsejet/patch25

Download images on background thread in sync, fix notification image cache
parents e2164ffa f04e6406
...@@ -16,7 +16,8 @@ ...@@ -16,7 +16,8 @@
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme"
android:name="app.insti.InstiAppApplication">
<meta-data <meta-data
android:name="com.google.android.gms.version" android:name="com.google.android.gms.version"
......
package app.insti;
import android.app.Application;
import com.squareup.picasso.Picasso;
import java.io.File;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
public class InstiAppApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
try {
initPicasso();
} catch (IllegalStateException ignored) {}
}
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((
client.build()
)));
Picasso built = builder.build();
built.setIndicatorsEnabled(false);
built.setLoggingEnabled(false);
Picasso.setSingletonInstance(built);
}
}
...@@ -13,7 +13,6 @@ import android.graphics.PorterDuffXfermode; ...@@ -13,7 +13,6 @@ import android.graphics.PorterDuffXfermode;
import android.graphics.Rect; import android.graphics.Rect;
import android.media.RingtoneManager; import android.media.RingtoneManager;
import android.net.Uri; import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.NotificationCompat; import android.support.v4.app.NotificationCompat;
import android.support.v4.app.NotificationManagerCompat; import android.support.v4.app.NotificationManagerCompat;
...@@ -130,46 +129,37 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService { ...@@ -130,46 +129,37 @@ public class InstiAppFirebaseMessagingService extends FirebaseMessagingService {
final Context context, final String imageUrl, final String largeIconUrl, final Context context, final String imageUrl, final String largeIconUrl,
final int notification_id, final NotificationCompat.Builder builder, final String content){ final int notification_id, final NotificationCompat.Builder builder, final String content){
new AsyncTask<Void, Void, Bitmap[]>() { Bitmap[] bitmaps = null;
@Override try {
protected Bitmap[] doInBackground(Void... params) { Bitmap image = null;
try { if (imageUrl != null) {
Bitmap image = null; image = Picasso.get().load(imageUrl).get();
if (imageUrl != null) {
image = Picasso.get().load(imageUrl).get();
}
Bitmap largeIcon = null;
if (largeIconUrl != null) {
largeIcon = getCroppedBitmap(
Picasso.get().load(Constants.resizeImageUrl(largeIconUrl, 200)).get(), 200);
}
return new Bitmap[]{image, largeIcon};
} catch (IOException e) {
e.printStackTrace();
} }
return null; Bitmap largeIcon = null;
} if (largeIconUrl != null) {
largeIcon = getCroppedBitmap(
@Override Picasso.get().load(Constants.resizeImageUrl(largeIconUrl, 200)).get(), 200);
protected void onPostExecute(Bitmap[] bitmaps) {
// Check if we loaded big image
if (bitmaps != null && bitmaps[0] != null) {
builder.setStyle(
new NotificationCompat.BigPictureStyle()
.bigPicture(bitmaps[0])
.setSummaryText(content)
);
} }
bitmaps = new Bitmap[]{image, largeIcon};
} catch (IOException e) {
e.printStackTrace();
}
// Check if we loaded large icon // Check if we loaded big image
if (bitmaps != null && bitmaps[1] != null) { if (bitmaps != null && bitmaps[0] != null) {
builder.setLargeIcon(bitmaps[1]); builder.setStyle(
} new NotificationCompat.BigPictureStyle()
.bigPicture(bitmaps[0])
.setSummaryText(content)
);
}
showNotification(context, notification_id, builder.build()); // Check if we loaded large icon
super.onPostExecute(bitmaps); if (bitmaps != null && bitmaps[1] != null) {
builder.setLargeIcon(bitmaps[1]);
} }
}.execute();
showNotification(context, notification_id, builder.build());
} }
/** Get circular center cropped bitmap */ /** Get circular center cropped bitmap */
......
...@@ -38,7 +38,6 @@ import com.google.gson.JsonElement; ...@@ -38,7 +38,6 @@ import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.squareup.picasso.Picasso; import com.squareup.picasso.Picasso;
import java.io.File;
import java.util.List; import java.util.List;
import app.insti.Constants; import app.insti.Constants;
...@@ -47,12 +46,12 @@ import app.insti.SessionManager; ...@@ -47,12 +46,12 @@ import app.insti.SessionManager;
import app.insti.api.EmptyCallback; import app.insti.api.EmptyCallback;
import app.insti.api.RetrofitInterface; import app.insti.api.RetrofitInterface;
import app.insti.api.ServiceGenerator; import app.insti.api.ServiceGenerator;
import app.insti.api.request.UserFCMPatchRequest;
import app.insti.api.model.Body; import app.insti.api.model.Body;
import app.insti.api.model.Event; import app.insti.api.model.Event;
import app.insti.api.model.Notification; import app.insti.api.model.Notification;
import app.insti.api.model.Role; import app.insti.api.model.Role;
import app.insti.api.model.User; import app.insti.api.model.User;
import app.insti.api.request.UserFCMPatchRequest;
import app.insti.fragment.BackHandledFragment; import app.insti.fragment.BackHandledFragment;
import app.insti.fragment.BodyFragment; import app.insti.fragment.BodyFragment;
import app.insti.fragment.CalendarFragment; import app.insti.fragment.CalendarFragment;
...@@ -68,8 +67,6 @@ import app.insti.fragment.QuickLinksFragment; ...@@ -68,8 +67,6 @@ import app.insti.fragment.QuickLinksFragment;
import app.insti.fragment.SettingsFragment; import app.insti.fragment.SettingsFragment;
import app.insti.fragment.TrainingBlogFragment; import app.insti.fragment.TrainingBlogFragment;
import app.insti.fragment.UserFragment; import app.insti.fragment.UserFragment;
import okhttp3.Cache;
import okhttp3.OkHttpClient;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Response; import retrofit2.Response;
...@@ -116,10 +113,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On ...@@ -116,10 +113,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
try {
initPicasso();
} catch (IllegalStateException ignored) {
}
ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext()); ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext());
this.retrofitInterface = serviceGenerator.getRetrofitInterface(); this.retrofitInterface = serviceGenerator.getRetrofitInterface();
...@@ -608,20 +601,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On ...@@ -608,20 +601,6 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
return "sessionid=" + session.getSessionID(); return "sessionid=" + session.getSessionID();
} }
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((
client.build()
)));
Picasso built = builder.build();
built.setIndicatorsEnabled(false);
built.setLoggingEnabled(false);
Picasso.setSingletonInstance(built);
}
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
......
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