diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle b/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle index 5361291..b00882a 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle @@ -6,6 +6,7 @@ buildscript { repositories { mavenCentral() maven { url 'https://maven.fabric.io/public' } + maven { url 'https://maven.google.com' } } dependencies { @@ -81,22 +82,17 @@ dependencies { androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - // Android support libraries - // Butter Knife - // Dagger - // Rx Java - // Retrofit - // OkHttp - // Glide - // Circle ImageView + + implementation('com.github.bumptech.glide:glide:4.7.1') { + exclude group: 'com.android.support' + } + implementation('com.crashlytics.sdk.android:crashlytics:2.6.6@aar') { transitive = true } - // Secure Preferences - // Firebase - // emojis - // circle progress - // event bus + + annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1' + implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support:design:27.1.1' implementation 'com.jakewharton:butterknife:8.8.1' @@ -109,8 +105,8 @@ dependencies { implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0' implementation 'com.squareup.okhttp3:okhttp:3.7.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.4.1' - implementation 'com.github.bumptech.glide:glide:3.7.0' - implementation 'de.hdodenhof:circleimageview:2.1.0' + + //implementation 'de.hdodenhof:circleimageview:2.1.0' implementation 'com.scottyab:secure-preferences-lib:0.1.4' implementation 'com.google.firebase:firebase-messaging:17.0.0' implementation 'com.google.firebase:firebase-core:16.0.0' diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/api/ApiModule.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/api/ApiModule.java index 1077d3c..10e0fd6 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/api/ApiModule.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/api/ApiModule.java @@ -5,6 +5,7 @@ import android.util.Log; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import org.spongycastle.asn1.pkcs.RSAPublicKey; import org.spongycastle.openssl.PEMWriter; import de.beyondsoft.ownchat.BewoplanerApplication; @@ -106,7 +107,7 @@ public class ApiModule { Request request = chain.request(); HttpUrl url = request.url(); - Log.d(LOG_TAG_NETWORK_INTERCEPTOR, "Pinning certificate for URL: " + url); + //Log.d(LOG_TAG_NETWORK_INTERCEPTOR, "Pinning certificate for URL: " + url); List certificates = chain.connection().handshake().peerCertificates(); @@ -117,6 +118,7 @@ public class ApiModule { X509Certificate x509 = (X509Certificate) cert; String name = x509.getIssuerX500Principal().getName(); + String serialNumber = x509.getSerialNumber().toString(); StringWriter writer = new StringWriter(); @@ -128,14 +130,21 @@ public class ApiModule { String writerAsString = writer.toString(); String base64EncodedKey = writerAsString.split("-----BEGIN PUBLIC KEY-----")[1].split("-----END PUBLIC KEY-----")[0].replaceAll(System.getProperty("line.separator"), ""); + if(name.contains("O=Let's Encrypt")) { + + Log.i(LOG_TAG_NETWORK_INTERCEPTOR, "\nSSL certificates:\nName: " + name + "\nSerial number: " + serialNumber + "\nUrl: " + url + "\nPublic key: " + base64EncodedKey); + } + if(name.contains("O=Let's Encrypt") && base64EncodedKey.equals(Constants.PUBLIC_KEY)) { isVerified = true; break; + } else { + //Log.e(LOG_TAG_NETWORK_INTERCEPTOR, "\nSSL certificates are invalid:\nName: " + name + "\\nUrl: " + url + "\n Expected public key: " + Constants.PUBLIC_KEY + "\nActual public key: " + base64EncodedKey); } } } - if(!isVerified) { + if(!isVerified && !BuildConfig.DEBUG) { Log.e(LOG_TAG_NETWORK_INTERCEPTOR, "SSL certificates are invalid!"); throw new SSLHandshakeException("Invalid SSL certificates"); } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java index 226a067..76dbe6e 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/MediaDetailsActivity.java @@ -16,7 +16,6 @@ import com.bumptech.glide.RequestManager; import java.util.ArrayList; import java.util.Collections; -import java.util.Comparator; import java.util.List; import de.beyondsoft.ownchat.R; @@ -27,10 +26,6 @@ import de.beyondsoft.ownchat.filepicker.models.Media; import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils; import de.beyondsoft.ownchat.filepicker.utils.MediaStoreHelper; -/** - * Created by Lyndon on 27-Oct-2017. - */ - public class MediaDetailsActivity extends BaseFilePickerActivity implements FileAdapterListener { private static final int SCROLL_THRESHOLD = 30; private RecyclerView recyclerView; @@ -129,7 +124,7 @@ public class MediaDetailsActivity extends BaseFilePickerActivity implements File photoGridAdapter.setData(medias); photoGridAdapter.notifyDataSetChanged(); } else { - photoGridAdapter = new ImageGridAdapter(this, mGlideRequestManager, medias,PickerManager.getInstance().getSelectedPhotos(),false, this); + photoGridAdapter = new ImageGridAdapter(this, medias,PickerManager.getInstance().getSelectedPhotos(),false, this); recyclerView.setAdapter(photoGridAdapter); } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FolderGridAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FolderGridAdapter.java index d6dadfc..e0ee69e 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FolderGridAdapter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/adapters/FolderGridAdapter.java @@ -1,6 +1,7 @@ package de.beyondsoft.ownchat.filepicker.adapters; import android.content.Context; +import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.util.DisplayMetrics; import android.view.LayoutInflater; @@ -10,13 +11,6 @@ import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; -import com.bumptech.glide.RequestManager; -import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable; -import com.bumptech.glide.load.resource.drawable.GlideDrawable; -import com.bumptech.glide.load.resource.gif.GifDrawable; -import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.target.Target; - import java.io.File; import java.util.ArrayList; @@ -24,15 +18,11 @@ import de.beyondsoft.ownchat.R; import de.beyondsoft.ownchat.filepicker.PickerManager; import de.beyondsoft.ownchat.filepicker.models.ImageDirectory; import de.beyondsoft.ownchat.filepicker.utils.AndroidLifecycleUtils; +import de.beyondsoft.ownchat.utils.ui.GlideApp; -/** - * Created by Lyndon on 26-Oct-2017. - */ - -public class FolderGridAdapter extends SelectableAdapter implements RequestListener { +public class FolderGridAdapter extends SelectableAdapter { private final Context context; - private final RequestManager glide; private final boolean showCamera; private int imageSize; @@ -40,36 +30,21 @@ public class FolderGridAdapter extends SelectableAdapter target, boolean isFirstResource) { - return false; - } - - @Override - public boolean onResourceReady(GlideDrawable resource, File model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { - if(resource.isAnimated()) { - target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null); - return true; - } - - return false; - } - public interface FolderGridAdapterListener{ void onCameraClicked(); void onFolderClicked(ImageDirectory photoDirectory); } - public FolderGridAdapter(Context context, RequestManager requestManager, ArrayList photos, ArrayList selectedPaths, boolean showCamera) { + public FolderGridAdapter(Context context, ArrayList photos, ArrayList selectedPaths, boolean showCamera) { super(photos, selectedPaths); this.context = context; - this.glide = requestManager; this.showCamera = showCamera; setColumnNumber(context,3); } + @NonNull @Override - public ImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View itemView = LayoutInflater.from(context).inflate(R.layout.item_folder_layout, parent, false); return new ImageViewHolder(itemView); @@ -85,15 +60,16 @@ public class FolderGridAdapter extends SelectableAdapter implements RequestListener { +public class ImageGridAdapter extends SelectableAdapter { private final Context context; - private final RequestManager glide; private final boolean showCamera; private final FileAdapterListener mListener; private int imageSize; @@ -42,10 +38,9 @@ public class ImageGridAdapter extends SelectableAdapter medias, ArrayList selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) { + public ImageGridAdapter(Context context, ArrayList medias, ArrayList selectedPaths, boolean showCamera, FileAdapterListener photoGridAdapterListener) { super(medias, selectedPaths); this.context = context; - this.glide = requestManager; this.showCamera = showCamera; this.mListener = photoGridAdapterListener; setColumnNumber(context,4); @@ -73,10 +68,11 @@ public class ImageGridAdapter extends SelectableAdapter target, boolean isFirstResource) { - return false; - } - - @Override - public boolean onResourceReady(GlideDrawable resource, File model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { - if(resource.isAnimated()) { - target.onResourceReady(new GlideBitmapDrawable(null, ((GifDrawable) resource).getFirstFrame()), null); - return true; - } - - return false; - } - static class ImageViewHolder extends RecyclerView.ViewHolder { CheckBox checkBox; diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java index 09b0fd1..d892649 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaDetailPickerFragment.java @@ -171,7 +171,7 @@ public class MediaDetailPickerFragment extends BaseFragment implements FileAdapt photoGridAdapter.setData(medias); photoGridAdapter.notifyDataSetChanged(); } else { - photoGridAdapter = new ImageGridAdapter(getActivity(), mGlideRequestManager, medias, PickerManager.getInstance().getSelectedPhotos(),(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera(), this); + photoGridAdapter = new ImageGridAdapter(getActivity(), medias, PickerManager.getInstance().getSelectedPhotos(),(fileType==FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera(), this); recyclerView.setAdapter(photoGridAdapter); photoGridAdapter.setCameraListener(v -> { try { diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java index c572dbd..9b5fc8b 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/fragments/MediaFolderPickerFragment.java @@ -183,7 +183,7 @@ public class MediaFolderPickerFragment extends BaseFragment implements FolderGri photoGridAdapter.setData(dirs); photoGridAdapter.notifyDataSetChanged(); } else { - photoGridAdapter = new FolderGridAdapter(getActivity(), mGlideRequestManager, (ArrayList) dirs, null, (fileType== FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera()); + photoGridAdapter = new FolderGridAdapter(getActivity(), (ArrayList) dirs, null, (fileType== FilePickerConst.MEDIA_TYPE_IMAGE) && PickerManager.getInstance().isEnableCamera()); recyclerView.setAdapter(photoGridAdapter); photoGridAdapter.setFolderGridAdapterListener(this); diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java index c9a21e2..25c3d98 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatAdapter.java @@ -1,16 +1,5 @@ package de.beyondsoft.ownchat.page.chat; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.github.lzyzsd.circleprogress.DonutProgress; - -import butterknife.OnItemLongClick; -import butterknife.OnLongClick; -import de.beyondsoft.ownchat.R; -import de.beyondsoft.ownchat.model.Message; -import de.beyondsoft.ownchat.utils.DateUtils; -import de.beyondsoft.ownchat.utils.ui.ViewUtils; - import android.net.Uri; import android.support.annotation.Nullable; import android.support.v7.widget.RecyclerView; @@ -19,9 +8,11 @@ import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; -import android.widget.RelativeLayout; import android.widget.TextView; +import com.bumptech.glide.load.engine.DiskCacheStrategy; +import com.github.lzyzsd.circleprogress.DonutProgress; + import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -33,11 +24,13 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.Optional; +import de.beyondsoft.ownchat.R; +import de.beyondsoft.ownchat.model.Message; +import de.beyondsoft.ownchat.utils.DateUtils; +import de.beyondsoft.ownchat.utils.ui.GlideApp; +import de.beyondsoft.ownchat.utils.ui.ViewUtils; import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView; -/** - * Created by Rares Teodorescu on 21/02/2017. - */ abstract class BaseChatAdapter extends RecyclerView.Adapter { final static int DATE_TYPE = 0; @@ -76,17 +69,17 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter messages) { - if (messages == null || messages.isEmpty() || mMessages.equals(messages)) { + if(messages == null || messages.isEmpty() || mMessages.equals(messages)) { return; } @@ -112,7 +105,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter 1) { + if(mMessages.size() > 1) { lastDay.setTimeInMillis(mMessages.get(1).createdAt); } Calendar calendar = Calendar.getInstance(); calendar.setTimeInMillis(message.createdAt); - if (calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) { + if(calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) { // New date inserted setMessages(new ArrayList<>(mMessages)); return; @@ -200,12 +193,12 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter currentDatePositions = new ArrayList<>(); boolean newDateAdded = false; - if (calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) { + if(calendar.get(Calendar.DAY_OF_YEAR) != lastDay.get(Calendar.DAY_OF_YEAR)) { currentDatePositions.add(1); newDateAdded = true; } - for (int i = 0, size = mDatePositions.size(); i < size; i++) { + for(int i = 0, size = mDatePositions.size(); i < size; i++) { currentDatePositions.add(mDatePositions.get(i) + (newDateAdded ? 2 : 1)); } @@ -218,7 +211,7 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter { private ArrayList mUsers; @@ -35,14 +32,15 @@ class ChatMembersAdapter extends RecyclerView.Adapter { mUsers = users; } + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_member, parent, false); return new ContactViewHolder(view); } @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { ContactViewHolder viewHolder = (ContactViewHolder) holder; User user = mUsers.get(position); viewHolder.contactTextView.setText(String.format(Locale.getDefault(), "%s %s", user.firstName, user.lastName)); @@ -54,10 +52,11 @@ class ChatMembersAdapter extends RecyclerView.Adapter { return; } - Glide.with(viewHolder.avatarCircleImageView.getContext()) + GlideApp.with(viewHolder.avatarCircleImageView.getContext()) + .asBitmap() .load(user.avatar) .placeholder(R.drawable.avatar) - .dontAnimate() + .circleCrop() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(viewHolder.avatarCircleImageView); } @@ -69,7 +68,7 @@ class ChatMembersAdapter extends RecyclerView.Adapter { class ContactViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.chat_member_avatar) - CircleImageView avatarCircleImageView; + ImageView avatarCircleImageView; @BindView(R.id.chat_member_name) TextView contactTextView; @BindView(R.id.chat_member_phone) @@ -82,9 +81,7 @@ class ChatMembersAdapter extends RecyclerView.Adapter { @OnClick(R.id.chat_member_phone) void onPhoneClicked() { - Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", - mUsers.get(getAdapterPosition()).mobile, - null)); + Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", mUsers.get(getAdapterPosition()).mobile, null)); phoneImageView.getContext().startActivity(intent); } } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/contacts/ContactsAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/contacts/ContactsAdapter.java index 9962b95..f0ff913 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/contacts/ContactsAdapter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/contacts/ContactsAdapter.java @@ -1,13 +1,13 @@ package de.beyondsoft.ownchat.page.contacts; -import com.bumptech.glide.Glide; -import com.bumptech.glide.load.engine.DiskCacheStrategy; import de.beyondsoft.ownchat.R; import de.beyondsoft.ownchat.model.Group; import de.beyondsoft.ownchat.utils.DateUtils; +import de.beyondsoft.ownchat.utils.ui.GlideApp; import de.beyondsoft.ownchat.utils.ui.ViewUtils; import android.graphics.Typeface; +import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; @@ -19,17 +19,15 @@ import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; +import com.bumptech.glide.load.engine.DiskCacheStrategy; + import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -import de.hdodenhof.circleimageview.CircleImageView; import hani.momanii.supernova_emoji_library.Helper.EmojiconTextView; -/** - * Created by imarneanu on 2/21/17. - */ class ContactsAdapter extends RecyclerView.Adapter { private static final int GROUP_TYPE = 0; @@ -70,14 +68,15 @@ class ContactsAdapter extends RecyclerView.Adapter { return CONTACT_TYPE; } + @NonNull @Override - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact, parent, false); return new ContactViewHolder(view); } @Override - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { Group group = mGroups.get(position); ContactViewHolder viewHolder = (ContactViewHolder) holder; setLastMessage(group, viewHolder); @@ -100,9 +99,11 @@ class ContactsAdapter extends RecyclerView.Adapter { viewHolder.name.setText(group.name); - Glide.with(viewHolder.avatar.getContext()).load(group.avatar) + GlideApp.with(viewHolder.avatar.getContext()) + .asBitmap() + .load(group.avatar) .placeholder(group.onlyEmployees ? R.drawable.avatar_list : R.drawable.avatar_help) - .dontAnimate() + .circleCrop() .diskCacheStrategy(DiskCacheStrategy.ALL) .into(viewHolder.avatar); } @@ -153,7 +154,7 @@ class ContactsAdapter extends RecyclerView.Adapter { class ContactViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.contact_avatar) - CircleImageView avatar; + ImageView avatar; @BindView(R.id.contact_name) TextView name; diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java index 59448e5..5eec8b0 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/fileconfirmation/FileConfirmationActivity.java @@ -1,12 +1,13 @@ package de.beyondsoft.ownchat.page.fileconfirmation; import android.content.Intent; +import android.graphics.Bitmap; import android.net.Uri; +import android.os.Bundle; import android.support.annotation.Nullable; import android.support.annotation.StringRes; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; -import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; @@ -14,35 +15,30 @@ import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; -import com.bumptech.glide.Glide; +import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.engine.DiskCacheStrategy; -import com.bumptech.glide.load.resource.drawable.GlideDrawable; +import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.request.RequestListener; -import com.bumptech.glide.request.target.GlideDrawableImageViewTarget; +import com.bumptech.glide.request.target.BitmapImageViewTarget; import com.bumptech.glide.request.target.Target; -import butterknife.OnClick; -import de.beyondsoft.ownchat.R; -import de.beyondsoft.ownchat.data.AppPrefsConstants; -import de.beyondsoft.ownchat.data.prefs.BooleanPreference; -import de.beyondsoft.ownchat.data.prefs.StringPreference; -import de.beyondsoft.ownchat.di.InjectionHelper; -import de.beyondsoft.ownchat.model.Group; -import de.beyondsoft.ownchat.utils.Constants; -import de.beyondsoft.ownchat.utils.FileUtils; - import java.io.File; import javax.inject.Inject; -import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; +import butterknife.OnClick; +import de.beyondsoft.ownchat.R; +import de.beyondsoft.ownchat.di.InjectionHelper; +import de.beyondsoft.ownchat.model.Group; +import de.beyondsoft.ownchat.utils.Constants; +import de.beyondsoft.ownchat.utils.ui.GlideApp; import de.beyondsoft.ownchat.utils.ui.ViewUtils; import hani.momanii.supernova_emoji_library.Actions.EmojIconActions; import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText; -public class FileConfirmationActivity extends AppCompatActivity implements FileConfirmationView, RequestListener { +public class FileConfirmationActivity extends AppCompatActivity implements FileConfirmationView { @BindView(R.id.file_message) EmojiconEditText mMessageEmojiconEditText; @@ -103,13 +99,27 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC showLoading(); - Glide.with(this) - .load(fileUri) - .dontAnimate() - .placeholder(R.drawable.document) - .diskCacheStrategy(DiskCacheStrategy.ALL) - .listener(this) - .into(new GlideDrawableImageViewTarget(mFileImageView)); + GlideApp.with(this) + .asBitmap() + .load(fileUri) + .placeholder(R.drawable.document) + .diskCacheStrategy(DiskCacheStrategy.ALL) + .listener(new RequestListener() { + @Override + public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) { + hideLoading(); + + return false; + } + + @Override + public boolean onResourceReady(Bitmap resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) { + hideLoading(); + + return false; + } + }) + .into(new BitmapImageViewTarget(mFileImageView)); mGroup = getIntent().getParcelableExtra(Constants.EXTRA_GROUP); setToolBar(); @@ -139,9 +149,10 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC if (TextUtils.isEmpty(mGroup.avatar)) { mChatImageView.setImageResource(mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.drawable.avatar : R.drawable.avatar_help); } else { - Glide.with(this).load(mGroup.avatar) + GlideApp.with(this) + .asBitmap() + .load(mGroup.avatar) .placeholder(de.beyondsoft.ownchat.R.drawable.avatar) - .dontAnimate() .into(mChatImageView); } } @@ -213,18 +224,4 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC public void showError(String message) { } - - @Override - public boolean onException(Exception e, String model, Target target, boolean isFirstResource) { - hideLoading(); - - return false; - } - - @Override - public boolean onResourceReady(GlideDrawable resource, String model, Target target, boolean isFromMemoryCache, boolean isFirstResource) { - hideLoading(); - - return false; - } } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginPresenter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginPresenter.java index 3af7e95..2d672b1 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginPresenter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginPresenter.java @@ -385,7 +385,7 @@ public class LoginPresenter extends MVPAbstractPresenter implements L private void checkTypeAndCustomerIdError(Throwable throwable) { getView().showContent(); - if (mSystemUtils.isNetworkUnavailable()) { + if(mSystemUtils.isNetworkUnavailable()) { getView().showError(R.string.error_no_internet_connection); return; } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/MainActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/MainActivity.java index d7bad8d..bfadbba 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/MainActivity.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/MainActivity.java @@ -1,7 +1,5 @@ package de.beyondsoft.ownchat.page.main; -import com.bumptech.glide.Glide; - import de.beyondsoft.ownchat.R; import de.beyondsoft.ownchat.data.AppPrefsConstants; import de.beyondsoft.ownchat.data.events.InvalidTokenEvent; @@ -42,6 +40,7 @@ import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.ArrayAdapter; +import android.widget.ImageView; import android.widget.ListView; import android.widget.Toast; @@ -52,11 +51,8 @@ import javax.inject.Named; import butterknife.BindView; import butterknife.ButterKnife; -import de.hdodenhof.circleimageview.CircleImageView; +import de.beyondsoft.ownchat.utils.ui.GlideApp; -/** - * Created by imarneanu on 2/9/17. - */ public class MainActivity extends AppCompatActivity implements MainNavigation, LogoutNavigation { private static final String REDIRECT_TO_CHAT = "redirect_to_chat"; @@ -117,14 +113,20 @@ public class MainActivity extends AppCompatActivity implements MainNavigation, L setSupportActionBar(mToolbar); View headerLayout = mNavigationView.getHeaderView(0); - CircleImageView avatar = headerLayout.findViewById(R.id.menu_profile_imageView); - Glide.with(this).load(mAvatarPreference.get()).into(avatar); + ImageView avatar = headerLayout.findViewById(R.id.menu_profile_imageView); + GlideApp.with(this) + .load(mAvatarPreference.get()) + .circleCrop() + .into(avatar); ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawer, mToolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) { @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); - Glide.with(MainActivity.this).load(mAvatarPreference.get()).into(avatar); + GlideApp.with(MainActivity.this) + .load(mAvatarPreference.get()) + .circleCrop() + .into(avatar); Utils.hideKeyboard(MainActivity.this); } }; diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/NavigationMenuAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/NavigationMenuAdapter.java index 1c831f0..c20bdcd 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/NavigationMenuAdapter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/main/NavigationMenuAdapter.java @@ -4,6 +4,7 @@ import de.beyondsoft.ownchat.R; import android.app.Activity; import android.content.Context; +import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; @@ -15,9 +16,6 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; -/** - * Created by imarneanu on 2/13/17. - */ class NavigationMenuAdapter extends ArrayAdapter { private final static int IMPRESSUM = 3; @@ -32,8 +30,9 @@ class NavigationMenuAdapter extends ArrayAdapter { mListener = listener; } + @NonNull @Override - public View getView(int position, View view, ViewGroup parent) { + public View getView(int position, View view, @NonNull ViewGroup parent) { ViewHolder holder; if (view != null) { diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileFragment.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileFragment.java index b280193..367c661 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileFragment.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileFragment.java @@ -7,7 +7,6 @@ import de.beyondsoft.ownchat.data.prefs.LongPreference; import de.beyondsoft.ownchat.data.prefs.StringPreference; import de.beyondsoft.ownchat.di.InjectionHelper; import de.beyondsoft.ownchat.model.User; -import de.beyondsoft.ownchat.utils.Constants; import de.beyondsoft.ownchat.utils.DialogHandler; import de.beyondsoft.ownchat.utils.FileUtils; import de.beyondsoft.ownchat.utils.RuntimePermissionBaseFragment; @@ -27,6 +26,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; +import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; @@ -40,18 +40,15 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnTextChanged; +import de.beyondsoft.ownchat.utils.ui.GlideApp; import de.beyondsoft.ownchat.utils.ui.ViewUtils; -import de.hdodenhof.circleimageview.CircleImageView; -/** - * Created by imarneanu on 2/13/17. - */ public class ProfileFragment extends RuntimePermissionBaseFragment implements ProfileView { private final static int SELECT_FILE = 5055; @BindView(R.id.profile_avatar) - CircleImageView mAvatarImageview; + ImageView mAvatarImageview; @BindView(R.id.profile_name) TextView mNameTextView; @@ -107,18 +104,19 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr ButterKnife.bind(this, view); getActivity().setTitle(R.string.title_profile); - Glide.with(getActivity()) + GlideApp.with(getActivity()) .load(mAvatarPreference.get()) .placeholder(R.drawable.avatar) + .circleCrop() .into(mAvatarImageview); ViewUtils.setProgressBarColor(mProgressBar, R.color.colorDefault); - if (!TextUtils.isEmpty(mPhoneNumberPreference.get())) { + if(!TextUtils.isEmpty(mPhoneNumberPreference.get())) { mPhoneNumberEditText.setText(mPhoneNumberPreference.get()); } - if (!TextUtils.isEmpty(mProfileNamePreference.get())) { + if(!TextUtils.isEmpty(mProfileNamePreference.get())) { mNameTextView.setText(mProfileNamePreference.get()); } @@ -207,9 +205,10 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr public void refreshImage(String imageUrl) { mProgressBar.setVisibility(View.GONE); - Glide.with(getContext()) + GlideApp.with(getContext()) .load(imageUrl) .error(R.drawable.avatar) + .circleCrop() .into(mAvatarImageview); mAvatarPreference.set(imageUrl); diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileModule.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileModule.java index 05bdfb9..90925e2 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileModule.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/profile/ProfileModule.java @@ -8,9 +8,6 @@ import dagger.Module; import dagger.Provides; import retrofit2.Retrofit; -/** - * Created by imarneanu on 2/23/17. - */ @Module class ProfileModule { diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingContactsAdapter.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingContactsAdapter.java index 2dfb482..2a0a25e 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingContactsAdapter.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingContactsAdapter.java @@ -1,13 +1,14 @@ package de.beyondsoft.ownchat.page.sharing; +import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; import android.widget.TextView; -import com.bumptech.glide.Glide; import com.bumptech.glide.load.engine.DiskCacheStrategy; import java.util.ArrayList; @@ -17,11 +18,7 @@ import butterknife.ButterKnife; import butterknife.OnClick; import de.beyondsoft.ownchat.R; import de.beyondsoft.ownchat.model.Group; -import de.hdodenhof.circleimageview.CircleImageView; - -/** - * Created by Lyndon on 03-Nov-2017. - */ +import de.beyondsoft.ownchat.utils.ui.GlideApp; public class SharingContactsAdapter extends RecyclerView.Adapter { private static final int GROUP_TYPE = 0; @@ -60,14 +57,15 @@ public class SharingContactsAdapter extends RecyclerView.Adapter - * Created by laszloffiferenc on 2/21/17. - */ public class LayoutBehavior extends CoordinatorLayout.Behavior { public LayoutBehavior(Context context, AttributeSet attrs) { diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/chat_toolbar.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/chat_toolbar.xml index 4006d21..9a6bdca 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/chat_toolbar.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/chat_toolbar.xml @@ -23,7 +23,7 @@ android:padding="5dp" android:src="@drawable/back" /> - - - - - - - - + android:src="@drawable/avatar" + android:contentDescription="@null" /> \ No newline at end of file