diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_document-web.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_document-web.png new file mode 100644 index 0000000..c701955 Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_document-web.png differ diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png index 85fdad6..6e856ec 100644 Binary files a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/ic_file_dialog_gallery-web.png differ 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 f1a9a29..1cc90db 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 @@ -19,4 +19,7 @@ public interface AppPrefsConstants { String IS_EMPLOYEE = "is_employee"; String SHOW_LOGIN_AGAIN = "show_login_again"; String LAST_ACCOUNT_NO = "last_account_no"; + + String USER_PASSWORD = "user_password"; + String USER_NAME = "user_name"; } \ No newline at end of file diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/events/LogoutDirectlyEvent.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/events/LogoutDirectlyEvent.java index a4b6d6f..67b7b5e 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/events/LogoutDirectlyEvent.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/events/LogoutDirectlyEvent.java @@ -1,4 +1,14 @@ package de.beyondsoft.ownchat.data.events; public class LogoutDirectlyEvent { + private boolean mClearAllPrefs; + + public boolean getClearAllPrefs() { + return mClearAllPrefs; + } + + public LogoutDirectlyEvent(boolean clearAllPrefs) { + mClearAllPrefs = clearAllPrefs; + } + } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/firebase/HandleMessagesService.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/firebase/HandleMessagesService.java index 547acf2..5201a9f 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/firebase/HandleMessagesService.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/data/firebase/HandleMessagesService.java @@ -6,7 +6,6 @@ import com.google.firebase.messaging.RemoteMessage; import de.beyondsoft.ownchat.R; import de.beyondsoft.ownchat.data.AppPrefsConstants; import de.beyondsoft.ownchat.data.api.common.ErrorHandlingResponseConverter; -import de.beyondsoft.ownchat.data.api.responses.MessageResponse; import de.beyondsoft.ownchat.data.api.services.ChatService; import de.beyondsoft.ownchat.data.prefs.LongPreference; import de.beyondsoft.ownchat.data.repository.GroupRealmRepository; @@ -18,10 +17,8 @@ import de.beyondsoft.ownchat.model.Group; import de.beyondsoft.ownchat.model.Message; import de.beyondsoft.ownchat.page.main.MainActivity; import de.beyondsoft.ownchat.utils.Constants; -import de.beyondsoft.ownchat.utils.LoggedOutUtils; import de.beyondsoft.ownchat.utils.rx.RxUtils; import rx.Observable; -import rx.functions.Func1; import android.app.Activity; import android.app.Notification; @@ -75,16 +72,13 @@ public class HandleMessagesService extends FirebaseMessagingService { @Named(AppPrefsConstants.USER_ID) LongPreference mUserIdReference; - @Inject - LoggedOutUtils mLoggedOutUtils; - @Override public void onMessageReceived(RemoteMessage remoteMessage) { InjectionHelper.getMessagingComponent(this).inject(HandleMessagesService.this); - if (mLoggedOutUtils.checkLoggedOutPrefs()) { - return; - } +// if (mLoggedOutUtils.checkLoggedOutPrefs()) { +// return; +// } customizeNotification(remoteMessage.getData()); } @@ -109,12 +103,7 @@ public class HandleMessagesService extends FirebaseMessagingService { mChatService.getMessage(messageId) .compose(RxUtils.provideDefaultTransformer()) .flatMap(new ErrorHandlingResponseConverter<>()) - .flatMap(new Func1>() { - @Override - public Observable call(MessageResponse messageResponse) { - return Observable.just(messageResponse.response.message); - } - }) + .flatMap(messageResponse -> Observable.just(messageResponse.response.message)) .subscribe(this::getMessageSuccess, this::getMessageError); } 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 d3d8fde..86f34d8 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 @@ -8,6 +8,7 @@ import com.securepreferences.SecurePreferences; import android.content.Context; import android.content.SharedPreferences; +import android.provider.Settings; import javax.inject.Named; @@ -54,6 +55,20 @@ public class AppPrefsModule { return new BooleanPreference(sharedPreferences, AppPrefsConstants.SAVE_PASSWORD); } + @Provides + @ApplicationScope + @Named(AppPrefsConstants.USER_NAME) + StringPreference provideUserName(@AppPrefs SecurePreferences sharedPreferences) { + return new StringPreference(sharedPreferences, AppPrefsConstants.USER_NAME); + } + + @Provides + @ApplicationScope + @Named(AppPrefsConstants.USER_PASSWORD) + StringPreference providePassword(@AppPrefs SecurePreferences sharedPreferences) { + return new StringPreference(sharedPreferences, AppPrefsConstants.USER_PASSWORD); + } + @Provides @ApplicationScope @Named(AppPrefsConstants.CHAT_CODE) 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 c9e14bb..1356124 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 @@ -88,6 +88,12 @@ public interface ApplicationComponent { @Named(AppPrefsConstants.SHOW_LOGIN_AGAIN) BooleanPreference provideShowLoginAgain(); + @Named(AppPrefsConstants.USER_NAME) + StringPreference provideUserName(); + + @Named(AppPrefsConstants.USER_PASSWORD) + StringPreference providePassword(); + NotificationManager provideNotificationManager(); GroupRealmRepository provideGroupRealmRepository(); diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerConst.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerConst.java index 1078f90..2e0aa6c 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerConst.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/filepicker/FilePickerConst.java @@ -32,7 +32,7 @@ public class FilePickerConst { public final static int MEDIA_TYPE_IMAGE=1; public final static int MEDIA_TYPE_VIDEO=3; - public enum FILE_TYPE{ + public enum FILE_TYPE { PDF, WORD, EXCEL, 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 ba2e943..5ba5724 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 @@ -73,7 +73,7 @@ public class FolderGridAdapter extends SelectableAdapter { + if(folderGridAdapterListener!=null) { + folderGridAdapterListener.onCameraClicked(); } }); + holder.bottomOverlay.setVisibility(View.GONE); } } @@ -124,18 +125,18 @@ public class FolderGridAdapter extends SelectableAdapter handleOnAdapterChanged(viewPager1, oldAdapter, newAdapter); setupWithViewPager(mTabLayout, mViewPager); } 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 8082304..1962e77 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 @@ -20,6 +20,7 @@ import de.beyondsoft.ownchat.utils.Constants; import de.beyondsoft.ownchat.utils.EndlessScrollListener; import de.beyondsoft.ownchat.utils.FileUtils; import de.beyondsoft.ownchat.utils.SystemUtils; +import de.beyondsoft.ownchat.utils.Utils; import de.beyondsoft.ownchat.utils.ui.EmptyLayout; import org.greenrobot.eventbus.EventBus; @@ -74,7 +75,8 @@ import okhttp3.MediaType; abstract class BaseChatActivity extends RuntimePermissionActivity implements ChatView, BaseChatAdapter.MessageClickListener, LogoutNavigation { private final static int STORAGE_REQUEST_CODE = 9999; - private final static int SELECT_FILE = 233; + private final static int SELECT_IMAGE_FILE = 233; + private final static int SELECT_DOC_FILE = 234; private final static int CONFIRM_FILE = 666; private final static int VISIBLE_THRESHOLD = 25; protected final static String MESSAGE_ARG = "message_arg"; @@ -273,36 +275,23 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha } private void selectFile(int requestCode) { -// Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); -// intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION); -// -// intent.addCategory(Intent.CATEGORY_OPENABLE); -// -// intent.setType("*/*"); -// intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); -// intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); -// -// startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.chat_select_file)), SELECT_FILE); - // TODO: show attachment type dialog first final String[] zipFileTypes = {".zip", ".rar", ".7zip"}; final String[] pdfFileTypes = {".pdf"}; + final String[] docFileTypes = {".txt", ".doc", ".xls", ".docx", ".xlsx", ".odt"}; + final Dialog dialog = new Dialog(this); dialog.setContentView(R.layout.file_chooser_dialog); ImageView attachFromGalleryImageView = dialog.findViewById(R.id.attachFromGalleryBtn); ImageView attachDocumentImageView = dialog.findViewById(R.id.attachDocumentBtn); - ImageView attachAudioImageView = dialog.findViewById(R.id.attachAudioBtn); - - attachAudioImageView.setOnClickListener(v -> { - dialog.dismiss(); - }); attachDocumentImageView.setOnClickListener(v -> { FilePickerBuilder.getInstance().setMaxCount(1) .addFileSupport("ZIP", zipFileTypes) .addFileSupport("PDF", pdfFileTypes) + .addFileSupport("DOC", docFileTypes) .enableDocSupport(false) .withOrientation(Orientation.PORTRAIT_ONLY) .pickFile(this); @@ -343,15 +332,16 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha return; } - if (requestCode == SELECT_FILE) { - // TODO: support documents too (FilePickerConst.KEY_SELECTED_DOCS) - final Uri uri = Uri.fromFile(new File(data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA) != null ? + if (requestCode == SELECT_IMAGE_FILE || requestCode == SELECT_DOC_FILE) { + 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))); + 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); - // Check for the freshest data. + try { //noinspection WrongConstant getContentResolver().takePersistableUriPermission(uri, takeFlags); @@ -365,7 +355,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha } Bundle bundle = new Bundle(); - bundle.putString(Constants.FILENAME, data.getStringArrayListExtra(FilePickerConst.KEY_SELECTED_MEDIA).get(0)); + bundle.putString(Constants.FILENAME, filePath); Intent intent = new Intent(this, FileConfirmationActivity.class); intent.putExtras(bundle); @@ -389,7 +379,7 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha @Override public void logoutDirectly(boolean clearAllPrefs) { - EventBus.getDefault().post(new LogoutDirectlyEvent()); + EventBus.getDefault().post(new LogoutDirectlyEvent(clearAllPrefs)); finish(); } @@ -500,14 +490,17 @@ abstract class BaseChatActivity extends RuntimePermissionActivity implements Cha @Override protected void onDestroy() { mChatOpenedPref.set(false); + if (mEndlessScrollListener != null) { mRecyclerView.removeOnScrollListener(mEndlessScrollListener); } + getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(mKeyboardListener); EventBus.getDefault().unregister(this); InjectionHelper.destroyChatComponent(); mRecyclerView.setAdapter(null); mEmptyLayout.setOnTryAgainClickListener(null); + super.onDestroy(); } 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 651a745..b23e906 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 @@ -87,10 +87,10 @@ public class FileConfirmationActivity extends AppCompatActivity implements FileC mSelectedUri = Uri.parse(fileUri); - // getFile(mSelectedUri).getPath() Glide.with(this) .load(fileUri) .dontAnimate() + .placeholder(R.drawable.document) .diskCacheStrategy(DiskCacheStrategy.ALL) .into(new GlideDrawableImageViewTarget(mFileImageView)); diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginActivity.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginActivity.java index bcfd111..d8bf93c 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginActivity.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/page/login/LoginActivity.java @@ -22,6 +22,8 @@ import android.support.annotation.StringRes; import android.support.design.widget.Snackbar; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; +import android.text.Editable; +import android.util.Log; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.Button; @@ -135,6 +137,7 @@ public class LoginActivity extends AppCompatActivity implements LoginView { InjectionHelper.destroyLoginComponent(); InjectionHelper.getLoginComponent(this).inject(this); mLoginPresenter.attachView(this); + mCallback.tryToLogin(mUsernameEditText.getText().toString().trim(), mPasswordEditText.getText().toString(), mChatCodeEditText.getText().toString().trim()); } @@ -166,6 +169,12 @@ public class LoginActivity extends AppCompatActivity implements LoginView { mChatCodeEditText.setText(String.valueOf(mSecuredPrefs.getString(AppPrefsConstants.CHAT_CODE, null))); } else if (key.equals(SecurePreferences.hashPrefKey(AppPrefsConstants.ACCOUNT_NO))) { mAccountEditText.setText(String.valueOf(mSecuredPrefs.getString(AppPrefsConstants.ACCOUNT_NO, null))); + } else if(key.equals(SecurePreferences.hashPrefKey(AppPrefsConstants.USER_NAME))) { + mUsernameEditText.setText(String.valueOf(mSecuredPrefs.getString(AppPrefsConstants.USER_NAME, null))); + } else if(key.equals(SecurePreferences.hashPrefKey(AppPrefsConstants.USER_PASSWORD))) { + mPasswordEditText.setText(String.valueOf(mSecuredPrefs.getString(AppPrefsConstants.USER_PASSWORD, null))); + } else if(key.equals(SecurePreferences.hashPrefKey(AppPrefsConstants.SAVE_PASSWORD))) { + mSavePasswordCheckbox.setChecked(mSecuredPrefs.getBoolean(AppPrefsConstants.SAVE_PASSWORD, 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 fc21e00..96f2a5d 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 @@ -80,6 +80,14 @@ public class LoginPresenter extends MVPAbstractPresenter implements L @Named(AppPrefsConstants.CHAT_CODE) StringPreference mChatCodePreference; + @Inject + @Named(AppPrefsConstants.USER_PASSWORD) + StringPreference mPasswordPreference; + + @Inject + @Named(AppPrefsConstants.USER_NAME) + StringPreference mUserNamePreference; + @Inject @Named(AppPrefsConstants.SAVE_PASSWORD) BooleanPreference mSavePasswordPreference; @@ -183,7 +191,17 @@ public class LoginPresenter extends MVPAbstractPresenter implements L Subscription subscription = mLoginService.loginWithChatCode(username, password, chatCode) .compose(RxUtils.provideDefaultTransformer()) .flatMap(new ErrorHandlingResponseConverter<>()) - .map(loginResponse -> loginResponse.response.user) + .map(loginResponse -> { + if(mSavePasswordPreference.get()) { + mUserNamePreference.set(username); + mPasswordPreference.set(password); + } else { + mUserNamePreference.delete(); + mPasswordPreference.delete(); + } + + return loginResponse.response.user; + }) .subscribe(this::loginSuccess, this::loginError); addSubscription(subscription); @@ -242,8 +260,7 @@ public class LoginPresenter extends MVPAbstractPresenter implements L String lastAccountNumber = mLastAccountNumberPreference.get(); if(!accountNumber.equals(lastAccountNumber)) { - //deleteData(true); - deleteData2(); + deleteDataOnCustomerIdChange(); } mIsEmployee.set(user.isEmployee); @@ -253,6 +270,7 @@ public class LoginPresenter extends MVPAbstractPresenter implements L mAvatarPreference.set(user.avatar); mPhoneNumberPreference.set(user.mobile); mProfileNamePreference.set(user.firstName.concat(" ").concat(user.lastName)); + getView().loginSuccessful(); } @@ -329,32 +347,29 @@ public class LoginPresenter extends MVPAbstractPresenter implements L getView().showLoading(); Subscription subscription = mLoginService.getServiceType("1", customerId) - .flatMap(new Func1>() { - @Override - public Observable call(JsonObject response) { - JsonObject serviceObject = response.getAsJsonObject(); + .flatMap(response -> { + JsonObject serviceObject = response.getAsJsonObject(); - if (serviceObject.has("Status") - && !TextUtils.isEmpty(serviceObject.get("Status").getAsString()) - && serviceObject.has("URL") - && !TextUtils.isEmpty(serviceObject.get("URL").getAsString())) { + if (serviceObject.has("Status") + && !TextUtils.isEmpty(serviceObject.get("Status").getAsString()) + && serviceObject.has("URL") + && !TextUtils.isEmpty(serviceObject.get("URL").getAsString())) { - String serverName = serviceObject.get("URL").getAsString(); + String serverName = serviceObject.get("URL").getAsString(); - if (!serverName.startsWith("https")) { - serverName = "https://" + serverName + "/"; - } - - mApiEndpointPreference.set(serverName); - - return Observable.just(true); - } else if(serviceObject.has("Status") && !TextUtils.isEmpty(serviceObject.get("Status").getAsString())) { - mStatus = serviceObject.get("Status").getAsInt(); + if (!serverName.startsWith("https")) { + serverName = "https://" + serverName + "/"; } - return Observable.just(false); + mApiEndpointPreference.set(serverName); + + return Observable.just(true); + } else if(serviceObject.has("Status") && !TextUtils.isEmpty(serviceObject.get("Status").getAsString())) { + mStatus = serviceObject.get("Status").getAsInt(); } + + return Observable.just(false); }) .compose(RxUtils.provideDefaultTransformer()) .subscribe(this::checkTypeAndCustomerIdSuccessful, this::checkTypeAndCustomerIdError); @@ -392,17 +407,14 @@ public class LoginPresenter extends MVPAbstractPresenter implements L getView().showLoading(); Subscription subscription = mLoginService.getUploadMaxSize() - .flatMap(new Func1>() { - @Override - public Observable call(JsonObject response) { - JsonObject maxSizeObject = response.getAsJsonObject(); + .flatMap(response -> { + JsonObject maxSizeObject = response.getAsJsonObject(); - if(maxSizeObject.has("file_upload_max_size")) { - mUploadMaxSizePreference.set(maxSizeObject.get("file_upload_max_size").getAsLong()); - } - - return Observable.just(0); + if(maxSizeObject.has("file_upload_max_size")) { + mUploadMaxSizePreference.set(maxSizeObject.get("file_upload_max_size").getAsLong()); } + + return Observable.just(0); }) .compose(RxUtils.provideDefaultTransformer()) .subscribe(this::retrieveUploadMaxSizeSuccessful, this::retrieveUploadMaxSizeError); @@ -480,6 +492,7 @@ public class LoginPresenter extends MVPAbstractPresenter implements L @Override public void tryToLogout(String deviceId, MainNavigation mainNavigation) { + // TODO: what if the password save checkbox is set and the user logs out? if (mSavePasswordPreference.get()) { return; } @@ -592,13 +605,7 @@ public class LoginPresenter extends MVPAbstractPresenter implements L } } - private void deleteData2() { -// Observable.create(subscriber -> mGlide.clearDiskCache()) -// .subscribeOn(Schedulers.io()) -// .subscribe(); -// -// mGlide.clearMemory(); - + private void deleteDataOnCustomerIdChange() { File dir = mContext.getExternalFilesDir(null); if (dir != null) { 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 185a154..d978c53 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 @@ -38,7 +38,6 @@ import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; -import android.util.Log; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; @@ -267,7 +266,7 @@ public class MainActivity extends AppCompatActivity implements MainNavigation, L @SuppressWarnings("unused") @Subscribe(threadMode = ThreadMode.MAIN) public void onLogoutDirectlyEvent(LogoutDirectlyEvent logoutDirectlyEvent) { - logoutDirectly(true); + logoutDirectly(logoutDirectlyEvent.getClearAllPrefs()); } @Override @@ -275,11 +274,6 @@ public class MainActivity extends AppCompatActivity implements MainNavigation, L EventBus.getDefault().unregister(this); mChatOpenedPref.set(false); - if (!mLogoutClicked && getIntent().getBooleanExtra(LOGOUT, true)) { - mLoginPresenter.tryToLogout(Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID), this); - } - - getIntent().removeExtra(LOGOUT); InjectionHelper.destroyMainComponents(); super.onDestroy(); } 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 cf26571..814ad0c 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 @@ -25,6 +25,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; +import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; @@ -37,6 +38,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.OnTextChanged; +import de.beyondsoft.ownchat.utils.ui.ViewUtils; import de.hdodenhof.circleimageview.CircleImageView; /** @@ -61,6 +63,9 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr @BindView(R.id.profile_update_button) Button mUpdateProfileButton; + @BindView(R.id.profile_avatar_progress_bar) + ProgressBar mProgressBar; + @Inject @Named(AppPrefsConstants.NAME) StringPreference mProfileNamePreference; @@ -97,8 +102,11 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr getActivity().setTitle(R.string.title_profile); Glide.with(getActivity()) .load(mAvatarPreference.get()) + .placeholder(R.drawable.avatar) .into(mAvatarImageview); + ViewUtils.setProgressBarColor(mProgressBar, R.color.colorDefault); + if (!TextUtils.isEmpty(mPhoneNumberPreference.get())) { mPhoneNumberEditText.setText(mPhoneNumberPreference.get()); } @@ -145,6 +153,7 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr mProfilePresenter.attachView(this); } + mProgressBar.setVisibility(View.VISIBLE); mCallback.uploadImage(uri); } } @@ -180,10 +189,13 @@ public class ProfileFragment extends RuntimePermissionBaseFragment implements Pr @Override public void refreshImage(String imageUrl) { + mProgressBar.setVisibility(View.GONE); + Glide.with(getContext()) .load(imageUrl) .error(R.drawable.avatar) .into(mAvatarImageview); + mAvatarPreference.set(imageUrl); } diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/AppStoppedService.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/AppStoppedService.java index 2bb43d2..75cf402 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/AppStoppedService.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/AppStoppedService.java @@ -47,9 +47,7 @@ public class AppStoppedService extends Service { @Override public void onTaskRemoved(Intent rootIntent) { mAppKilledPreference.set(true); - if (!mSavedPasswordPref.get()) { - mNotificationManager.cancelAll(); - } + stopSelf(); } } \ No newline at end of file diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/LoggedOutUtils.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/LoggedOutUtils.java deleted file mode 100644 index 66c2ec8..0000000 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/LoggedOutUtils.java +++ /dev/null @@ -1,52 +0,0 @@ -package de.beyondsoft.ownchat.utils; - -import de.beyondsoft.ownchat.data.AppPrefsConstants; -import de.beyondsoft.ownchat.data.prefs.BooleanPreference; -import de.beyondsoft.ownchat.di.scopes.ActivityScope; -import de.beyondsoft.ownchat.page.login.LoginPresenter; - -import android.app.NotificationManager; -import android.content.Context; -import android.provider.Settings; - -import javax.inject.Inject; -import javax.inject.Named; - -@ActivityScope -public class LoggedOutUtils { - - @Inject - @Named(AppPrefsConstants.APP_KILLED) - BooleanPreference mAppKilledPreference; - - @Inject - @Named(AppPrefsConstants.SAVE_PASSWORD) - BooleanPreference mSavePasswordPreference; - - @Inject - NotificationManager mNotificationManager; - - @Inject - LoginPresenter mLoginPresenter; - - @Inject - Context mContext; - - @Inject - LoggedOutUtils() { - } - - /** - * Check if the user is still logged in. - */ - public boolean checkLoggedOutPrefs() { - if (!mSavePasswordPreference.get() && mAppKilledPreference.get()) { - mNotificationManager.cancelAll(); - mLoginPresenter.logout(Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.ANDROID_ID), true, null); - - return true; - } - - return false; - } -} \ No newline at end of file diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Utils.java b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Utils.java index e7c0a26..e1b770a 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Utils.java +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/java/de/beyondsoft/ownchat/utils/Utils.java @@ -1,11 +1,19 @@ package de.beyondsoft.ownchat.utils; import android.app.Activity; +import android.content.Context; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; +import android.util.Log; import android.view.View; import android.view.inputmethod.InputMethodManager; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; + /** * Created by imarneanu on 2/13/17. */ diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/test_image.png b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/test_image.png new file mode 100644 index 0000000..22ff6c8 Binary files /dev/null and b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/drawable/test_image.png differ diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml index 7e1b8ce..b445a05 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/file_chooser_dialog.xml @@ -4,32 +4,27 @@ android:layout_height="match_parent" android:background="@android:color/white" android:gravity="center_vertical" + android:layout_alignParentBottom="true" android:orientation="horizontal"> - - + android:layout_margin="10dp" + android:src="@mipmap/ic_file_dialog_document" /> \ No newline at end of file diff --git a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml index 3e84342..a9a2bd5 100644 --- a/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml +++ b/BeWoPlanerChat/bewoplaner-chat-android/app/src/main/res/layout/fragment_profile.xml @@ -21,6 +21,15 @@ android:scaleType="centerCrop" android:src="@drawable/avatar" /> + +