diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle b/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle
index 6f9680f..3d8c8ec 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/build.gradle
@@ -34,8 +34,8 @@ android {
applicationId "de.beyondsoft.ownchat"
minSdkVersion 19
targetSdkVersion 27
- versionCode 15
- versionName "1.15"
+ versionCode 16
+ versionName "1.16"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
@@ -83,6 +83,9 @@ dependencies {
exclude group: 'com.android.support', module: 'support-annotations'
})
+ implementation 'com.android.support:multidex:1.0.3'
+
+
implementation('com.github.bumptech.glide:glide:4.7.1') {
exclude group: 'com.android.support'
}
@@ -109,7 +112,7 @@ dependencies {
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'
+ implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'hani.momanii.supernova_emoji_library:supernova-emoji-library:0.0.2'
implementation 'com.github.lzyzsd:circleprogress:1.2.1'
implementation 'org.greenrobot:eventbus:3.0.0'
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
index aefa828..1a4b946 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/AndroidManifest.xml
@@ -138,11 +138,26 @@
android:label="ownChat"
android:screenOrientation="portrait"
android:theme="@style/ChatStyle">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/BewoplanerApplication.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/BewoplanerApplication.java
index dd2d7af..1313a8d 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/BewoplanerApplication.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/BewoplanerApplication.java
@@ -8,19 +8,13 @@ import de.beyondsoft.ownchat.di.ApplicationModule;
import de.beyondsoft.ownchat.di.DaggerApplicationComponent;
import de.beyondsoft.ownchat.di.InjectionHelper;
-import android.app.Application;
-import android.app.NotificationChannel;
-import android.app.NotificationManager;
import android.content.Context;
-import android.os.Build;
+import android.support.multidex.MultiDexApplication;
import io.fabric.sdk.android.Fabric;
import io.realm.Realm;
-/**
- * Created by imarneanu on 2/9/17.
- */
-public class BewoplanerApplication extends Application {
+public class BewoplanerApplication extends MultiDexApplication {
private ApplicationComponent mApplicationComponent;
private static Context mContext;
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/AppPrefsConstants.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/AppPrefsConstants.java
index 5bc6fac..d76ef5c 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/AppPrefsConstants.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/AppPrefsConstants.java
@@ -1,8 +1,5 @@
package de.beyondsoft.ownchat.data;
-/**
- * Created by imarneanu on 2/10/17.
- */
public interface AppPrefsConstants {
String LOGIN_TOKEN = "login_token";
String SAVE_PASSWORD = "save_password";
@@ -25,4 +22,5 @@ public interface AppPrefsConstants {
String VERIFY_CHAT_CODE_ERROR_MESSAGE = "verify_chat_code_error_message";
String IS_COMING_FROM_SHARING_ACTIVITY = "is_coming_from_sharing_activity";
String PATH_TO_FILE_TO_SHARE = "path_to_file_to_share";
+ String IS_FILE = "is_file";
}
\ No newline at end of file
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 b78f3f7..5883bad 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
@@ -129,10 +129,6 @@ 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 + "\n" + writerAsString);
- }
-
if(name.contains("CN=Let's Encrypt Authority X3") && name.contains("O=Let's Encrypt") && (base64EncodedKey.equals(Constants.PUBLIC_KEY) || base64EncodedKey.equals(Constants.DICTIONARY_PUBLIC_KEY))) {
isVerified = true;
break;
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/prefs/AppPrefsModule.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/prefs/AppPrefsModule.java
index f4f7ebc..3eb1368 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/prefs/AppPrefsModule.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/prefs/AppPrefsModule.java
@@ -62,6 +62,13 @@ public class AppPrefsModule {
return new BooleanPreference(sharedPreferences, AppPrefsConstants.IS_COMING_FROM_SHARING_ACTIVITY);
}
+ @Provides
+ @ApplicationScope
+ @Named(AppPrefsConstants.IS_FILE)
+ BooleanPreference provideIsFile(@AppPrefs SecurePreferences sharedPreferences) {
+ return new BooleanPreference(sharedPreferences, AppPrefsConstants.IS_FILE);
+ }
+
@Provides
@ApplicationScope
@Named(AppPrefsConstants.PATH_TO_FILE_TO_SHARE)
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/di/ApplicationComponent.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/di/ApplicationComponent.java
index 55d1b1a..aa3e8b5 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/di/ApplicationComponent.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/di/ApplicationComponent.java
@@ -103,6 +103,9 @@ public interface ApplicationComponent {
@Named(AppPrefsConstants.IS_COMING_FROM_SHARING_ACTIVITY)
BooleanPreference provideIsComingFromSharingActivity();
+ @Named(AppPrefsConstants.IS_FILE)
+ BooleanPreference provideIsFile();
+
NotificationManager provideNotificationManager();
GroupRealmRepository provideGroupRealmRepository();
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java
index a1e4fb2..c52923c 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/BaseChatActivity.java
@@ -5,7 +5,6 @@ import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.data.AppPrefsConstants;
import de.beyondsoft.ownchat.data.events.InvalidTokenEvent;
import de.beyondsoft.ownchat.data.events.LogoutDirectlyEvent;
-import de.beyondsoft.ownchat.data.firebase.NotificationUtils;
import de.beyondsoft.ownchat.data.prefs.BooleanPreference;
import de.beyondsoft.ownchat.data.prefs.LongPreference;
import de.beyondsoft.ownchat.data.prefs.StringPreference;
@@ -34,7 +33,7 @@ import org.greenrobot.eventbus.ThreadMode;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
-import android.app.NotificationManager;
+import android.content.Context;
import android.content.Intent;
import android.graphics.Rect;
import android.media.MediaRecorder;
@@ -62,6 +61,7 @@ import android.view.View;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.TextView;
@@ -85,9 +85,6 @@ import hani.momanii.supernova_emoji_library.Actions.EmojIconActions;
import hani.momanii.supernova_emoji_library.Helper.EmojiconEditText;
import okhttp3.MediaType;
-/**
- * Created by Rares Teodorescu on 21/02/2017.
- */
abstract class BaseChatActivity extends RuntimePermissionActivity implements ChatView, BaseChatAdapter.MessageClickListener, LogoutNavigation {
private final static int STORAGE_REQUEST_CODE = 9999;
@@ -156,6 +153,10 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
@Named(AppPrefsConstants.IS_COMING_FROM_SHARING_ACTIVITY)
BooleanPreference mIsComingFromSharingActivity;
+ @Inject
+ @Named(AppPrefsConstants.IS_FILE)
+ BooleanPreference mIsFile;
+
protected Group mGroup;
protected ChatView.Callback mCallback;
protected EndlessScrollListener mEndlessScrollListener;
@@ -254,25 +255,30 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
mBaseChatAdapter.addMessages(messages);
}
- private void shareFile() {
+ private void shareFile(boolean isFile) {
mIsComingFromSharingActivity.set(false);
String path = mSelectedFilePath.get();
- final Uri uri = Uri.parse(path);
- final File file = FileUtils.getFile(this, uri);
- String filePath = file.getPath();
+ String filePath = null;
- mSelectedFilePath.delete();
+ if(isFile) {
+ final Uri uri = Uri.parse(path);
+ final File file = FileUtils.getFile(this, uri);
+ filePath = file.getPath();
- if(Build.VERSION.SDK_INT >= 19) {
- final int takeFlags = (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+ mSelectedFilePath.delete();
- try {
- //noinspection WrongConstant
- getContentResolver().takePersistableUriPermission(uri, takeFlags);
- } catch(Exception e) {
- e.printStackTrace();
+ if(Build.VERSION.SDK_INT >= 19) {
+ final int takeFlags = (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+
+ try {
+ //noinspection WrongConstant
+ getContentResolver().takePersistableUriPermission(uri, takeFlags);
+ } catch(Exception e) {
+ e.printStackTrace();
+ Log.e("BASE_CHAT_ACTIVITY", e.getMessage());
+ }
}
}
@@ -281,7 +287,11 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
}
Bundle bundle = new Bundle();
- bundle.putString(Constants.FILENAME, filePath);
+ if(isFile) {
+ bundle.putString(Constants.FILENAME, filePath);
+ } else {
+ bundle.putString(Constants.TEXT_TO_SHARE, path);
+ }
Intent intent = new Intent(this, FileConfirmationActivity.class);
intent.putExtras(bundle);
@@ -322,7 +332,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
mBaseChatAdapter.setLoading(false);
if(mIsComingFromSharingActivity.get()) {
- shareFile();
+ shareFile(mIsFile.get());
}
}
@@ -401,7 +411,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
dialog.dismiss();
});
- final long duration = ((mUploadMaxSize.get() / 10 * 9) * 8) / (Constants.RECORDING_BIT_RATE_IN_MS / 1000); // 10% Overhead
+ final long duration = ((mUploadMaxSize.get() / 10 * 9) * 8) / (Constants.RECORDING_BIT_RATE_IN_MS / 1000); // 10% overhead
CountDownTimer countDownTimer = new CountDownTimer(duration, 10) {
@Override
public void onTick(long millisecondsUntilFinished) {
@@ -567,50 +577,62 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
return;
}
- ArrayList var1 = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA);
- ArrayList var2 = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_DOCS);
+ if(!mChatPresenter.isAttached()) {
+ mChatPresenter.attachView(this);
+ }
- if((requestCode == SELECT_IMAGE_FILE || requestCode == SELECT_DOC_FILE) && ((var1 != null && var1.size() > 0) || (var2 != null && var2.size() > 0))) {
- String filePath = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA) != null ?
- data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA).get(0) :
- data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_DOCS).get(0);
+ if(data.hasExtra(Constants.TEXT_TO_SHARE)) {
+ String textToShare = data.getStringExtra(Constants.TEXT_TO_SHARE);
+ String textToDisplay = textToShare != null ? textToShare + " " : "";
- final Uri uri = Uri.fromFile(new File(filePath));
+ mChatMessageEmojiEditText.setText(textToDisplay);
+ mChatMessageEmojiEditText.requestFocus();
+ mChatMessageEmojiEditText.setSelection(mChatMessageEmojiEditText.getText().length());
- if(Build.VERSION.SDK_INT >= 19) {
- final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+ InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+ if(inputMethodManager != null) {
+ inputMethodManager.showSoftInput(mChatMessageEmojiEditText, InputMethodManager.SHOW_FORCED);
+ }
- try {
- //noinspection WrongConstant
- getContentResolver().takePersistableUriPermission(uri, takeFlags);
- } catch(Exception e) {
- e.printStackTrace();
+ return;
+ } else {
+ ArrayList var1 = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA);
+ ArrayList var2 = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_DOCS);
+
+ if((requestCode == SELECT_IMAGE_FILE || requestCode == SELECT_DOC_FILE) && ((var1 != null && var1.size() > 0) || (var2 != null && var2.size() > 0))) {
+ String filePath = data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA) != null ?
+ data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA).get(0) :
+ data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_DOCS).get(0);
+
+ final Uri uri = Uri.fromFile(new File(filePath));
+
+ if(Build.VERSION.SDK_INT >= 19) {
+ final int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+
+ try {
+ //noinspection WrongConstant
+ getContentResolver().takePersistableUriPermission(uri, takeFlags);
+ } catch(Exception e) {
+ e.printStackTrace();
+ }
}
+
+ Bundle bundle = new Bundle();
+ bundle.putString(Constants.FILENAME, filePath);
+
+ Intent intent = new Intent(this, FileConfirmationActivity.class);
+ intent.putExtras(bundle);
+
+ intent.putExtra(Constants.EXTRA_GROUP, mGroup);
+
+ startActivityForResult(intent, 666);
}
-
- if(!mChatPresenter.isAttached()) {
- mChatPresenter.attachView(this);
- }
-
- Bundle bundle = new Bundle();
- bundle.putString(Constants.FILENAME, filePath);
-
- Intent intent = new Intent(this, FileConfirmationActivity.class);
- intent.putExtras(bundle);
-
- intent.putExtra(Constants.EXTRA_GROUP, mGroup);
-
- startActivityForResult(intent, 666);
}
if(requestCode == CONFIRM_FILE) {
String filePath = data.getStringExtra(Constants.FILE_PATH);
String fileMessageText = data.getStringExtra(Constants.FILE_MESSAGE_TEXT);
- if(!mChatPresenter.isAttached()) {
- mChatPresenter.attachView(this);
- }
-
mCallback.sendFile(Uri.fromFile(new File(filePath)), fileMessageText);
}
}
@@ -706,7 +728,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(uri, fileType);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
- // Verify the original intent will resolve to at least one activity
+
if(intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent);
} else {
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/SingleChatActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/SingleChatActivity.java
index 6ee4f68..ae45d9f 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/SingleChatActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/chat/SingleChatActivity.java
@@ -87,12 +87,12 @@ public class SingleChatActivity extends BaseChatActivity {
@Override
protected void loadMessages() {
- if (!TextUtils.isEmpty(mGroup.mobile)) {
+ if(!TextUtils.isEmpty(mGroup.mobile)) {
mExtraImageView.setVisibility(View.VISIBLE);
mExtraImageView.setImageResource(de.beyondsoft.ownchat.R.drawable.call);
}
- if (mSystemUtils.isNetworkUnavailable()) {
+ if(mSystemUtils.isNetworkUnavailable()) {
mCallback.loadMessagesFromDBByGroupId(mGroup.id, true);
showError(de.beyondsoft.ownchat.R.string.error_no_internet_connection);
} else {
@@ -106,7 +106,7 @@ public class SingleChatActivity extends BaseChatActivity {
mSingleChatTitleTextView.setText(mGroup.name);
mSingleChatTitleTextView.setTextColor(ContextCompat.getColor(this, mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.color.colorBlack : de.beyondsoft.ownchat.R.color.colorHelpGroup));
- if (TextUtils.isEmpty(mGroup.avatar)) {
+ if(TextUtils.isEmpty(mGroup.avatar)) {
mChatImageView.setImageResource(mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.drawable.avatar : R.drawable.avatar_help);
} else {
GlideApp.with(this)
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 8dc979a..a747114 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,6 +1,7 @@
package de.beyondsoft.ownchat.page.contacts;
import de.beyondsoft.ownchat.R;
+import de.beyondsoft.ownchat.filepicker.utils.FileUtils;
import de.beyondsoft.ownchat.model.Group;
import de.beyondsoft.ownchat.utils.DateUtils;
import de.beyondsoft.ownchat.utils.ui.GlideApp;
@@ -53,7 +54,7 @@ class ContactsAdapter extends RecyclerView.Adapter {
void setGroups(ArrayList groups) {
mGroups.clear();
- if (groups != null) {
+ if(groups != null) {
mGroups.addAll(groups);
}
@@ -62,7 +63,7 @@ class ContactsAdapter extends RecyclerView.Adapter {
@Override
public final int getItemViewType(int position) {
- if (mGroups.get(position).users.size() > 2) {
+ if(mGroups.get(position).users.size() > 2) {
return GROUP_TYPE;
}
@@ -84,7 +85,7 @@ class ContactsAdapter extends RecyclerView.Adapter {
int type = getItemViewType(position);
- if (type == GROUP_TYPE) {
+ if(type == GROUP_TYPE) {
viewHolder.name.setText(group.name);
viewHolder.name.setTextColor(ContextCompat.getColor(viewHolder.name.getContext(), group.isHelpGroup() ? R.color.colorHelpGroup : R.color.colorTeamGroup));
viewHolder.avatar.setImageResource(group.isHelpGroup() ? R.drawable.avatar_help_group : R.drawable.avatar_team_group);
@@ -109,7 +110,7 @@ class ContactsAdapter extends RecyclerView.Adapter {
}
private void setLastMessage(Group group, ContactViewHolder viewHolder) {
- if (group.lastMessage == null) {
+ if(group.lastMessage == null) {
viewHolder.lastMessage.setText(null);
viewHolder.messageTimestamp.setText(null);
viewHolder.messageStatus.setImageResource(0);
@@ -118,7 +119,7 @@ class ContactsAdapter extends RecyclerView.Adapter {
boolean isMessageSentByUser = group.lastMessage.senderId == mUserId;
- if (!group.isRead() && !isMessageSentByUser) {
+ if(!group.isRead() && !isMessageSentByUser) {
viewHolder.lastMessage.setTypeface(null, Typeface.BOLD);
viewHolder.lastMessage.setTextColor(ContextCompat.getColor(viewHolder.lastMessage.getContext(), R.color.colorDefaultBright));
} else {
@@ -129,17 +130,49 @@ class ContactsAdapter extends RecyclerView.Adapter {
viewHolder.lastMessage.setText(TextUtils.isEmpty(group.lastMessage.message) ? group.lastMessage.originalFilename : group.lastMessage.message);
viewHolder.messageTimestamp.setText(DateUtils.toHourOrDateFormatHour(group.lastMessage.createdAt));
- if (!isMessageSentByUser) {
+ viewHolder.attachmentIcon.setVisibility(View.GONE);
+
+ if(group.lastMessage != null && group.lastMessage.filePath != null && group.lastMessage.filePath.length() > 0) {
+ String fileType = de.beyondsoft.ownchat.utils.FileUtils.getFileTypeFromFilePath(group.lastMessage.filePath);
+ String messageText;
+
+ if(fileType.contains("image")) {
+ if(fileType.contains("gif")) {
+ viewHolder.attachmentIcon.setImageResource(R.drawable.ic_gif_24px);
+ messageText = viewHolder.lastMessage.getContext().getString(R.string.attachment_gif);
+ } else {
+ viewHolder.attachmentIcon.setImageResource(R.drawable.camera_24px);
+ messageText = viewHolder.lastMessage.getContext().getString(R.string.attachment_image);
+ }
+ } else if(fileType.contains("video")) {
+ viewHolder.attachmentIcon.setImageResource(R.drawable.videocam_24px);
+ messageText = viewHolder.lastMessage.getContext().getString(R.string.attachment_video);
+ } else if(fileType.contains("audio")) {
+ viewHolder.attachmentIcon.setImageResource(R.drawable.headset_24px);
+ messageText = viewHolder.lastMessage.getContext().getString(R.string.attachment_audio);
+ } else {
+ viewHolder.attachmentIcon.setImageResource(R.drawable.attachment_file_24px);
+ messageText = viewHolder.lastMessage.getContext().getString(R.string.attachment_document);
+ }
+
+ viewHolder.attachmentIcon.setVisibility(View.VISIBLE);
+
+ if(group.lastMessage.message == null || group.lastMessage.message.length() == 0) {
+ viewHolder.lastMessage.setText(messageText);
+ }
+ }
+
+ if(!isMessageSentByUser) {
viewHolder.messageStatus.setImageResource(0);
return;
}
int resourceId = group.lastMessage.getStatusResourceId();
- if (resourceId != 0) {
+ if(resourceId != 0) {
viewHolder.messageStatusPending.setVisibility(resourceId == -1 ? View.VISIBLE : View.GONE);
- if (resourceId != -1) {
+ if(resourceId != -1) {
viewHolder.messageStatus.setImageResource(group.lastMessage.getStatusResourceId());
} else {
ViewUtils.setProgressBarColor(viewHolder.messageStatusPending, R.color.colorHint);
@@ -171,6 +204,9 @@ class ContactsAdapter extends RecyclerView.Adapter {
@BindView(R.id.contact_message_pending)
ProgressBar messageStatusPending;
+ @BindView(R.id.attachmentImageView)
+ ImageView attachmentIcon;
+
ContactViewHolder(View view) {
super(view);
ButterKnife.bind(this, view);
@@ -185,7 +221,7 @@ class ContactsAdapter extends RecyclerView.Adapter {
return;
}
- if (type == GROUP_TYPE) {
+ if(type == GROUP_TYPE) {
mItemClickListener.onOpenGroupMessage(mGroups.get(getAdapterPosition()));
return;
}
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 2dbec4a..b921c72 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
@@ -80,6 +80,7 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
private Uri mSelectedUri;
private Group mGroup;
+ private String mSelectedString;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -93,37 +94,48 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
EmojIconActions emojiIcon = new EmojIconActions(this, mRelativeLayout, mMessageEmojiconEditText, mEmojiButtonImageView);
emojiIcon.ShowEmojIcon();
- String fileUri = getIntent().getStringExtra(Constants.FILENAME);
-
- mSelectedUri = Uri.parse(fileUri);
-
- ViewUtils.setProgressBarColor(statusProgressBar, R.color.colorDefault);
-
- showLoading();
-
- GlideApp.with(this)
- .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(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
- hideLoading();
-
- return false;
- }
- })
- .into(new DrawableImageViewTarget(mFileImageView));
-
mGroup = getIntent().getParcelableExtra(Constants.EXTRA_GROUP);
+
setToolBar();
+
+ if(getIntent().hasExtra(Constants.TEXT_TO_SHARE)) {
+ String textToShare = getIntent().getStringExtra(Constants.TEXT_TO_SHARE);
+
+ Intent intent = new Intent();
+ intent.putExtra(Constants.TEXT_TO_SHARE, textToShare);
+
+ setResult(-1, intent);
+ finish();
+ } else {
+ String fileUri = getIntent().getStringExtra(Constants.FILENAME);
+
+ mSelectedUri = Uri.parse(fileUri);
+
+ ViewUtils.setProgressBarColor(statusProgressBar, R.color.colorDefault);
+
+ showLoading();
+
+ GlideApp.with(this)
+ .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(Drawable resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
+ hideLoading();
+
+ return false;
+ }
+ })
+ .into(new DrawableImageViewTarget(mFileImageView));
+ }
}
private void setToolBar() {
@@ -147,7 +159,7 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
mSingleChatTitleTextView.setText(mGroup.name);
mSingleChatTitleTextView.setTextColor(ContextCompat.getColor(this, mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.color.colorBlack : de.beyondsoft.ownchat.R.color.colorHelpGroup));
- if (TextUtils.isEmpty(mGroup.avatar)) {
+ if(TextUtils.isEmpty(mGroup.avatar)) {
mChatImageView.setImageResource(mGroup.onlyEmployees ? de.beyondsoft.ownchat.R.drawable.avatar : R.drawable.avatar_help);
} else {
GlideApp.with(this)
@@ -163,7 +175,10 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC
void sendFile() {
Intent intent = new Intent();
- intent.putExtra(Constants.FILE_PATH, mSelectedUri.toString());
+ if(mSelectedUri != null) {
+ intent.putExtra(Constants.FILE_PATH, mSelectedUri.toString());
+ }
+
intent.putExtra(Constants.FILE_MESSAGE_TEXT, mMessageEmojiconEditText.getText().toString());
setResult(-1, intent);
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java
index 4ce18a1..48e5a87 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/sharing/SharingActivity.java
@@ -11,6 +11,7 @@ import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
+import android.util.Log;
import android.view.View;
import android.widget.TextView;
@@ -37,11 +38,9 @@ import de.beyondsoft.ownchat.utils.Constants;
import de.beyondsoft.ownchat.utils.ui.EmptyLayout;
import de.beyondsoft.ownchat.utils.ui.HorizontalDividerItemDecoration;
-/**
- * Created by Lyndon on 03-Nov-2017.
- */
-
public class SharingActivity extends RuntimePermissionActivity implements SharingView, SharingContactsAdapter.OnOpenClickListener {
+ private static String LOG_TAG = "SHARING_ACTIVITY";
+
@Inject
SharingPresenter mSharingPresenter;
@@ -69,6 +68,10 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
@Named(AppPrefsConstants.IS_COMING_FROM_SHARING_ACTIVITY)
BooleanPreference mIsComingFromSharingActivity;
+ @Inject
+ @Named(AppPrefsConstants.IS_FILE)
+ BooleanPreference mIsFile;
+
private SharingView.Callback mCallback;
private SharingContactsAdapter mContactsAdapter;
private Snackbar mSnackbar;
@@ -89,10 +92,7 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
mIntent = getIntent();
- requestAppPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
- R.string.permission_storage_explained,
- 777,
- this::shareFile);
+ requestAppPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, R.string.permission_storage_explained, 777, this::shareFile);
}
private void returnToContactList(int requestCode) {
@@ -112,8 +112,44 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
String action = mIntent.getAction();
String type = mIntent.getType();
- if (Intent.ACTION_SEND.equals(action) && type != null) {
- handleSendFile(mIntent);
+ Log.i(LOG_TAG, "action equals ACTION_SEND: " + Intent.ACTION_SEND.equals(action) + "; type: " + type);
+
+ if(Intent.ACTION_SEND.equals(action) && type != null) {
+ if("text/plain".equals(type)) {
+ handleSendText(mIntent);
+ } else if(type.startsWith("image/") || type.startsWith("video") || type.startsWith("audio")) {
+ handleSendFile(mIntent);
+ }
+ }
+ }
+
+ void handleSendFile(Intent intent) {
+ Uri fileUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
+
+ if(fileUri != null) {
+ mSelectedFilePath.set(fileUri.toString());
+ mIsComingFromSharingActivity.set(true);
+ mIsFile.set(true);
+
+ if(!mLoginTokenPreference.isSet()) {
+ startActivity(new Intent(this, LoginActivity.class));
+ finishAffinity();
+ }
+ }
+ }
+
+ void handleSendText(Intent intent) {
+ String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
+
+ if(sharedText != null) {
+ mSelectedFilePath.set(sharedText);
+ mIsComingFromSharingActivity.set(true);
+ mIsFile.set(false);
+
+ if(!mLoginTokenPreference.isSet()) {
+ startActivity(new Intent(this, LoginActivity.class));
+ finishAffinity();
+ }
}
}
@@ -122,20 +158,6 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
mSingleChatTitleTextView.setText(R.string.sharing_title);
}
- void handleSendFile(Intent intent) {
- Uri fileUri = intent.getParcelableExtra(Intent.EXTRA_STREAM);
-
- if (fileUri != null) {
- mSelectedFilePath.set(fileUri.toString());
- mIsComingFromSharingActivity.set(true);
-
- if (!mLoginTokenPreference.isSet()) {
- startActivity(new Intent(this, LoginActivity.class));
- finishAffinity();
- }
- }
- }
-
@Override
public void onResume() {
super.onResume();
@@ -145,7 +167,7 @@ public class SharingActivity extends RuntimePermissionActivity implements Sharin
@Override
public void showError(@StringRes int message) {
- if (mSnackbar == null) {
+ if(mSnackbar == null) {
mSnackbar = Snackbar.make(mCoordinatorLayout, message, Snackbar.LENGTH_LONG);
mSnackbar.setActionTextColor(ContextCompat.getColor(this, R.color.colorDefault));
}
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
index 500dd53..4a20ef6 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Constants.java
@@ -36,6 +36,8 @@ public interface Constants {
int RECORDING_BIT_RATE_IN_MS = 32000;
+ String TEXT_TO_SHARE = "text_to_share";
+
String LOG_TAG_NETWORK_INTERCEPTOR = "NETWORK_INTERCEPTOR";
String LOG_TAG_FILE_PICKER = "FILE_PICKER";
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java
index d11911d..5defe1f 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/FileUtils.java
@@ -1165,8 +1165,7 @@ public class FileUtils {
} else if (extension.contains("txt")) {
// Text file
extension = "text/plain";
- } else if (extension.contains("3gp") || extension.contains("mpg") ||
- extension.contains("mpeg") || extension.contains("mpe") || extension.contains("mp4") || extension.contains("avi")) {
+ } else if (extension.contains("3gp") || extension.contains("mpg") || extension.contains("mpeg") || extension.contains("mpe") || extension.contains("mp4") || extension.contains("avi")) {
// Video files
extension = "video/*";
} else {
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/attachment_file_24px.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/attachment_file_24px.xml
new file mode 100644
index 0000000..259db52
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/attachment_file_24px.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/camera_24px.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/camera_24px.xml
new file mode 100644
index 0000000..fcc0ee8
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/camera_24px.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/headset_24px.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/headset_24px.xml
new file mode 100644
index 0000000..6b9c752
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/headset_24px.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/ic_gif_24px.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/ic_gif_24px.xml
new file mode 100644
index 0000000..e5d1352
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/ic_gif_24px.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/videocam_24px.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/videocam_24px.xml
new file mode 100644
index 0000000..3990dff
--- /dev/null
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/videocam_24px.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_contact.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_contact.xml
index 0f33293..40e705b 100644
--- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_contact.xml
+++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/item_contact.xml
@@ -14,7 +14,6 @@
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_marginEnd="@dimen/item_contact_avatar_padding"
- android:layout_marginRight="@dimen/item_contact_avatar_padding"
android:contentDescription="@null"
tools:src="@drawable/avatar_list" />
@@ -32,12 +31,32 @@
android:layout_height="wrap_content"
tools:text="Sasha Grey" />
-
+ android:orientation="horizontal"
+ android:gravity="center_vertical">
+
+
+
+
+
+
+
de.beyondsoft.ownchat.notification_channel
ownChat notification channel
+ Bild
+ Video
+ Audiodatei
+ Dokument
+ Gif
\ No newline at end of file