Push loads the received message via its id

This commit is contained in:
Lyndon
2017-10-20 12:12:45 +02:00
parent 4bacaafba4
commit 47c8aa87b0
14 changed files with 205 additions and 34 deletions

View File

@@ -18,4 +18,5 @@ public interface AppPrefsConstants {
String UPLOAD_MAX_SIZE = "upload_max_size";
String IS_EMPLOYEE = "is_employee";
String SHOW_LOGIN_AGAIN = "show_login_again";
String LAST_ACCOUNT_NO = "last_account_no";
}

View File

@@ -1,5 +1,7 @@
package de.beyondsoft.ownchat.data.api.services;
import com.google.gson.JsonObject;
import de.beyondsoft.ownchat.data.api.responses.GroupResponse;
import de.beyondsoft.ownchat.data.api.responses.MessageResponse;
import de.beyondsoft.ownchat.data.api.responses.MessagesResponse;
@@ -12,6 +14,7 @@ import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;
import rx.Observable;
@@ -26,6 +29,9 @@ public interface ChatService {
Observable<MessagesResponse> getMessages(@Query("groupid") long groupId,
@Query("page") int page);
@GET("api/chat/message/{oid}")
Observable<JsonObject> getMessage(@Path("oid") String messageId);
@Multipart
@POST("api/chat/messages/send")
Observable<MessageResponse> sendFile(

View File

@@ -14,12 +14,6 @@ import rx.Observable;
* Created by laszloffiferenc on 2/21/17.
*/
public interface LoginService {
@FormUrlEncoded
@POST("api/user/login")
Observable<ProfileResponse> login(
@Field("username") String username,
@Field("password") String password
);
@FormUrlEncoded
@POST("api/user/loginwithchatcode")

View File

@@ -2,9 +2,11 @@ package de.beyondsoft.ownchat.data.firebase;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import com.google.gson.JsonObject;
import de.beyondsoft.ownchat.R;
import de.beyondsoft.ownchat.data.AppPrefsConstants;
import de.beyondsoft.ownchat.data.api.services.ChatService;
import de.beyondsoft.ownchat.data.prefs.LongPreference;
import de.beyondsoft.ownchat.data.repository.GroupRealmRepository;
import de.beyondsoft.ownchat.data.repository.MessageRealmRepository;
@@ -16,6 +18,8 @@ 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.Subscriber;
import android.app.Activity;
import android.app.Notification;
@@ -55,6 +59,9 @@ import static de.beyondsoft.ownchat.utils.Constants.CHAT_IS_ALREADY_OPEN;
*/
public class HandleMessagesService extends FirebaseMessagingService {
@Inject
ChatService mChatService;
@Inject
MessageRealmRepository mMessageRealmRepository;
@@ -93,23 +100,52 @@ public class HandleMessagesService extends FirebaseMessagingService {
}
}
private void customizeNotification(Map<String, String> data) {
Bundle bundle = new Bundle();
bundle.putString(Constants.MESSAGE_ID, data.get(Constants.MESSAGE_ID));
bundle.putLong(Constants.GROUP_ID, Long.parseLong(data.get(Constants.GROUP_ID)));
bundle.putLong(Constants.CREATED_AT, Long.parseLong(data.get(Constants.CREATED_AT)));
bundle.putString(Constants.MESSAGE_TEXT, data.get(Constants.MESSAGE_TEXT));
bundle.putString(Constants.FILE, data.get(Constants.FILE));
bundle.putString(Constants.SMALLER_IMAGE, data.get(Constants.SMALLER_IMAGE));
bundle.putString(Constants.FILENAME, data.get(Constants.FILENAME));
bundle.putLong(Constants.USER_ID, Long.parseLong(data.get(Constants.USER_ID)));
bundle.putString(Constants.USERNAME, data.get(Constants.USERNAME));
bundle.putString(Constants.USER_AVATAR, data.get(Constants.USER_AVATAR));
private void customizeNotification(Map<String, String> dataMap) {
String messageId = dataMap.get(Constants.MESSAGE_ID);
final Bitmap bitmap = getBitmapFromUrl(data.get(Constants.USER_AVATAR));
mChatService.getMessage(messageId)
.compose(RxUtils.provideDefaultTransformer())
.subscribe(new Subscriber<JsonObject>() {
@Override
public void onCompleted() {}
@Override
public void onError(Throwable e) {
e.printStackTrace();
}
@Override
public void onNext(JsonObject remoteMessage) {
notifyTheUser(remoteMessage);
}
});
}
private String getJsonString(JsonObject object, String memberName) {
return object.get(memberName).isJsonNull() ? null : object.get(memberName).getAsString();
}
private void notifyTheUser(JsonObject remoteMessage) {
Bundle bundle = new Bundle();
bundle.putString(Constants.MESSAGE_ID, getJsonString(remoteMessage, Constants.MESSAGE_ID));
bundle.putLong(Constants.GROUP_ID, remoteMessage.get(Constants.GROUP_ID).getAsLong());
bundle.putLong(Constants.CREATED_AT, remoteMessage.get(Constants.CREATED_AT).getAsLong());
bundle.putString(Constants.MESSAGE_TEXT, getJsonString(remoteMessage, Constants.MESSAGE_TEXT));
bundle.putString(Constants.FILE, getJsonString(remoteMessage, Constants.FILE));
bundle.putString(Constants.SMALLER_IMAGE, getJsonString(remoteMessage, Constants.SMALLER_IMAGE));
bundle.putString(Constants.FILENAME, getJsonString(remoteMessage, Constants.FILENAME));
bundle.putLong(Constants.USER_ID, remoteMessage.get(Constants.USER_ID).getAsLong());
bundle.putString(Constants.USERNAME, getJsonString(remoteMessage, Constants.USERNAME));
bundle.putString(Constants.USER_AVATAR, getJsonString(remoteMessage, Constants.USER_AVATAR));
final Bitmap bitmap = getBitmapFromUrl(remoteMessage.get(Constants.USER_AVATAR).getAsString());
Intent intent = new Intent();
intent.putExtra(Constants.MESSAGE, bundle);
intent.setAction(Constants.NOTIFICATION_BROADCAST);
sendOrderedBroadcast(intent, null, new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -117,7 +153,7 @@ public class HandleMessagesService extends FirebaseMessagingService {
if (!results.getBoolean(CHAT_IS_ALREADY_OPEN, false)) {
int groupId = (int) bundle.getLong(Constants.GROUP_ID);
int numberOfUsers = Integer.parseInt(data.get(Constants.GROUP_NR_USERS));
int numberOfUsers = remoteMessage.get(Constants.GROUP_NR_USERS).getAsInt();
intent = MainActivity.createIntent(context, bundle, numberOfUsers, groupId);
PendingIntent pendingIntent = PendingIntent.getActivity(context,
@@ -134,10 +170,10 @@ public class HandleMessagesService extends FirebaseMessagingService {
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(getNotificationIcon())
.setContentTitle(setNotificationTitle(data, numberOfUsers))
.setContentText(getTextFromNotification(data))
.setContentTitle(remoteMessage.get(Constants.USERNAME).getAsString() + (numberOfUsers > 2 ? " @ " +remoteMessage.get(Constants.GROUP_NAME).getAsString() : ""))
.setContentText(getTextFromNotification(remoteMessage))
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigTextStyle().bigText(getTextFromNotification(data)))
.setStyle(new NotificationCompat.BigTextStyle().bigText(getTextFromNotification(remoteMessage)))
.setPriority(Notification.PRIORITY_MAX)
.setContentIntent(pendingIntent)
.setLargeIcon(getCircleBitmap(bitmapToDisplay))
@@ -242,14 +278,17 @@ public class HandleMessagesService extends FirebaseMessagingService {
.build();
}
private String getTextFromNotification(Map<String, String> data) {
private String getTextFromNotification(JsonObject jsonObject) {
String message = null;
if (data.get(Constants.MESSAGE_TEXT) != null) {
message = String.valueOf(data.get(Constants.MESSAGE_TEXT));
if (!jsonObject.get(Constants.MESSAGE_TEXT).isJsonNull()) {
message = jsonObject.get(Constants.MESSAGE_TEXT).getAsString();
}
if (!data.get(Constants.FILE).equals("")) {
if (!jsonObject.get(Constants.FILE).isJsonNull() && !jsonObject.get(Constants.FILE).getAsString().equals("")) {
message = getString(R.string.chat_file_received);
}
return message;
}

View File

@@ -68,6 +68,13 @@ public class AppPrefsModule {
return new StringPreference(sharedPreferences, AppPrefsConstants.ACCOUNT_NO);
}
@Provides
@ApplicationScope
@Named(AppPrefsConstants.LAST_ACCOUNT_NO)
StringPreference provideLastAccountNumber(@AppPrefs SecurePreferences sharedPreferences) {
return new StringPreference(sharedPreferences, AppPrefsConstants.LAST_ACCOUNT_NO);
}
@Provides
@ApplicationScope
@Named(AppPrefsConstants.USER_ID)

View File

@@ -58,6 +58,9 @@ public interface ApplicationComponent {
@Named(AppPrefsConstants.ACCOUNT_NO)
StringPreference provideAccountNumber();
@Named(AppPrefsConstants.LAST_ACCOUNT_NO)
StringPreference provideLastAccountNumber();
@Named(AppPrefsConstants.USER_ID)
LongPreference provideUserId();

View File

@@ -108,6 +108,7 @@ public class Message {
if (status == null) {
return STATUS_DELIVERED;
}
switch (status) {
case DELIVERED:
return STATUS_DELIVERED;
@@ -116,6 +117,7 @@ public class Message {
case PENDING:
return STATUS_PENDING;
}
return 1;
}
}
@@ -150,6 +152,7 @@ public class Message {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
@@ -159,42 +162,54 @@ public class Message {
if (senderId != message1.senderId) {
return false;
}
if (groupId != message1.groupId) {
return false;
}
if (createdAt != message1.createdAt && createdAt != message1.createdAt * 1000 && createdAt * 1000 != message1.createdAt) {
return false;
}
if (!id.equals(message1.id)) {
return false;
}
if (uri != null ? !uri.equals(message1.uri) : message1.uri != null) {
return false;
}
if (senderName != null ? !senderName.equals(message1.senderName) : message1.senderName != null) {
return false;
}
if (senderAvatar != null ? !senderAvatar.equals(message1.senderAvatar) : message1.senderAvatar != null) {
return false;
}
if (message != null ? !message.equals(message1.message) : message1.message != null) {
return false;
}
if (filePath != null ? !filePath.equals(message1.filePath) : message1.filePath != null) {
return false;
}
if (smallerImage != null ? !smallerImage.equals(message1.smallerImage) : message1.smallerImage != null) {
return false;
}
if (isRead != ((Message) o).isRead) {
return false;
}
return status == message1.status;
}
@Override
public int hashCode() {
int result = id.hashCode();
result = 31 * result + (int) (senderId ^ (senderId >>> 32));
result = 31 * result + (senderName != null ? senderName.hashCode() : 0);
result = 31 * result + (senderAvatar != null ? senderAvatar.hashCode() : 0);
@@ -205,6 +220,7 @@ public class Message {
result = 31 * result + (smallerImage != null ? smallerImage.hashCode() : 0);
result = 31 * result + (int) (createdAt ^ (createdAt >>> 32));
result = 31 * result + (status != null ? status.hashCode() : 0);
return result;
}
@@ -233,6 +249,7 @@ public class Message {
return true;
}
}
return false;
}
}

View File

@@ -155,11 +155,14 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
mMessages.addAll(currentMessages);
Calendar lastDay = Calendar.getInstance();
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)) {
// New date inserted
setMessages(new ArrayList<>(mMessages));
@@ -180,13 +183,16 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
List<Integer> currentDatePositions = new ArrayList<>();
boolean newDateAdded = false;
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++) {
currentDatePositions.add(mDatePositions.get(i) + (newDateAdded ? 2 : 1));
}
mDatePositions.clear();
mDatePositions.addAll(currentDatePositions);
@@ -300,13 +306,14 @@ abstract class BaseChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
} else {
viewHolder.filenameTextView.setVisibility(View.GONE);
}
} else if (message.filePath.toLowerCase().endsWith(".png") || message.filePath.toLowerCase().endsWith(".jpg")) {
} else if (message.filePath.toLowerCase().endsWith(".png") || message.filePath.toLowerCase().endsWith(".jpg") || message.filePath.toLowerCase().endsWith(".gif")) {
viewHolder.donutProgress.setVisibility(View.GONE);
viewHolder.fileImageView.setVisibility(View.VISIBLE);
viewHolder.filenameTextView.setVisibility(View.GONE);
viewHolder.fileImageView.setImageDrawable(null);
Log.d("FILE_PATH", message.toString());
Glide.with(viewHolder.fileImageView.getContext())
.load(message.smallerImage)
.load(message.filePath)
.placeholder(R.drawable.document)
.dontAnimate()
.override(500, 500)

View File

@@ -117,7 +117,9 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
getView().hideMessagesLoading();
return;
}
mGroupId = groupId;
Subscription subscription = mChatService.getMessages(groupId, mPage)
.compose(RxUtils.provideDefaultTransformer())
.flatMap(new ErrorHandlingResponseConverter<>())
@@ -125,12 +127,15 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
@Override
public Observable<ArrayList<Message>> call(MessagesResponse messageResponse) {
ArrayList<Message> messages = messageResponse.response.messages;
for (int i = 0, size = messages.size(); i < size; i++) {
messages.get(i).status = Message.Status.DELIVERED;
messages.get(i).isRead = true;
messages.get(i).userId = mUserIdPreference.get();
}
mFetchMore = messageResponse.response.hasMorePages;
return Observable.just(messageResponse.response.messages);
}
})
@@ -204,27 +209,34 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
if (messages == null) {
return;
}
for (int i = 0; i < messages.size(); i++) {
if (!isAttached()) {
break;
}
Message message = messages.get(i);
mMessages.add(message);
getView().addOneMessage(message);
}
}
/**
* Send error messages to view.
*/
private void fetchNewMessagesError(Throwable throwable) {
Log.e("fetchNewMessages", "onError", throwable);
if (!isAttached()) {
return;
}
if (mSystemUtils.isNetworkUnavailable()) {
getView().showError(R.string.error_no_internet_connection);
return;
}
getView().showError(R.string.error_something_went_wrong);
}
@@ -300,18 +312,23 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
if (!isAttached()) {
return;
}
mMessages.clear();
mMessages.addAll(messages);
mLoading = false;
getView().hideLoading();
getView().hideMessagesLoading();
if (!mMessages.isEmpty()) {
int endOffset = mOffset + LIMIT > mMessages.size() ? mMessages.size() : mOffset + LIMIT;
if (mOffset > endOffset) {
return;
}
boolean isFirstPage = mPage == FIRST_PAGE;
getView().messagesLoaded(new ArrayList<>(mMessages.subList(mOffset, endOffset)), isFirstPage);
if (isFirstPage && mSystemUtils.isNetworkUnavailable()) {
Message firstMessage = mMessages.get(0);
Message message = new Message(firstMessage.id,
@@ -331,10 +348,13 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
firstMessage.fileDownloaded);
storeGroupLocally(mGroupId, message);
}
mPage++;
mOffset += LIMIT;
return;
}
getView().showEmptyMessage();
}
@@ -342,6 +362,7 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
if (!isAttached()) {
return;
}
mLoading = false;
getView().hideLoading();
getView().hideMessagesLoading();
@@ -356,17 +377,21 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
getView().hideMessagesLoading();
return;
}
mLoading = true;
if (mPage == FIRST_PAGE) {
getView().showLoading();
} else {
getView().showMessagesLoading();
}
if (mSystemUtils.isNetworkUnavailable()) {
loadMessagesFromDBByGroupId();
getView().showError(R.string.error_no_internet_connection);
return;
}
loadMessagesFromServerByGroupId(mGroupId);
}
@@ -496,6 +521,7 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
getView().fileDownloadedSuccessfully(filePath, FileUtils.getFileTypeFromFilePath(filePath));
return;
}
downloadFileFromUrl(message.filePath, filePath, itemPosition)
.compose(RxUtils.provideDefaultTransformer())
.subscribe(new Subscriber<String>() {
@@ -523,10 +549,13 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
if (!isAttached()) {
return;
}
getView().stopItemProgress(itemPosition);
getView().fileDownloadedSuccessfully(filePath, fileType);
message.fileDownloaded = true;
message.createdAt /= 1000;
storeMessageLocally(message).subscribe();
}
});
@@ -593,6 +622,7 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
});
return;
}
mChatService.sendMessage(message.groupId, message.message)
.compose(RxUtils.provideDefaultTransformer())
.flatMap(new ErrorHandlingResponseConverter<>())
@@ -642,6 +672,7 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
true,
mUserIdPreference.get(),
false);
storeMessageLocally(message)
.subscribe(new Subscriber<Object>() {
@Override
@@ -654,6 +685,7 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
storeGroupLocally(mGroupId, message);
return;
}
checkForEmptyMessageAndHideIt();
message.createdAt *= 1000;
getView().addOneMessage(message);
@@ -675,13 +707,16 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
newMessage.isRead = true;
storeMessageLocally(newMessage, message.id, false);
storeGroupLocally(mGroupId, message);
if (!isAttached()) {
return;
}
if (mSystemUtils.isNetworkUnavailable()) {
getView().showError(R.string.error_no_internet_connection);
return;
}
getView().showError(R.string.error_something_went_wrong);
}
@@ -723,13 +758,17 @@ public class ChatPresenter extends MVPAbstractPresenter<ChatView> implements Cha
messageToDelete.id = oldMessageId;
messageToDelete.removeFromList(mMessages);
mMessages.add(newMessage);
if (!isAttached()) {
mMessageToUpdate.add(new Pair<>(newMessage, oldMessageId));
return;
}
getView().lastMessageUpdated(newMessage, oldMessageId);
return;
}
mPage = FIRST_PAGE;
mOffset = 0;
loadMessagesFromDBByGroupId();

View File

@@ -34,12 +34,14 @@ class GroupChatAdapter extends BaseChatAdapter {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_date, parent, false);
return new DateViewHolder(view);
}
ProgressBar progressBar = new ProgressBar(parent.getContext());
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
params.setMargins(0, (int) parent.getContext().getResources().getDimension(R.dimen.messages_progress_top_margin), 0, 0);
progressBar.setLayoutParams(params);
ViewUtils.setProgressBarColor(progressBar, R.color.colorWhite);
return new ProgressViewHolder(progressBar);
}
@@ -62,6 +64,7 @@ class GroupChatAdapter extends BaseChatAdapter {
final Message rightMessage = mMessages.get(position - mPositionOffset.get(position));
MessageViewHolder rightMessageViewHolder = (MessageViewHolder) holder;
setGroupMessage(rightMessageViewHolder, rightMessage, position, false);
if (rightMessage.status == Message.Status.DELIVERED) {
rightMessageViewHolder.statusProgressBar.setVisibility(View.GONE);
rightMessageViewHolder.statusImageView.setVisibility(View.VISIBLE);
@@ -78,6 +81,7 @@ class GroupChatAdapter extends BaseChatAdapter {
rightMessageViewHolder.sendingFailedTextView.setVisibility(View.GONE);
rightMessageViewHolder.statusImageView.setVisibility(View.GONE);
}
break;
}
}

View File

@@ -37,8 +37,7 @@ class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_member, parent,
false);
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_chat_member, parent, false);
return new ContactViewHolder(view);
}
@@ -47,13 +46,14 @@ class ChatMembersAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
ContactViewHolder viewHolder = (ContactViewHolder) holder;
User user = mUsers.get(position);
viewHolder.contactTextView.setText(String.format(Locale.getDefault(), "%s %s", user.firstName, user.lastName));
viewHolder.contactTextView.setTextColor(ContextCompat.getColor(viewHolder.contactTextView.getContext(),
user.isEmployee ? R.color.colorBlack : R.color.colorHelpGroup));
viewHolder.contactTextView.setTextColor(ContextCompat.getColor(viewHolder.contactTextView.getContext(), user.isEmployee ? R.color.colorBlack : R.color.colorHelpGroup));
viewHolder.phoneImageView.setVisibility(TextUtils.isEmpty(user.mobile) ? View.GONE : View.VISIBLE);
if (TextUtils.isEmpty(user.avatar)) {
viewHolder.avatarCircleImageView.setImageResource(R.drawable.avatar_list);
return;
}
Glide.with(viewHolder.avatarCircleImageView.getContext())
.load(user.avatar)
.placeholder(R.drawable.avatar)

View File

@@ -92,6 +92,10 @@ public class LoginPresenter extends MVPAbstractPresenter<LoginView> implements L
@Named(AppPrefsConstants.ACCOUNT_NO)
StringPreference mAccountNumberPreference;
@Inject
@Named(AppPrefsConstants.LAST_ACCOUNT_NO)
StringPreference mLastAccountNumberPreference;
@Inject
@Named(AppPrefsConstants.AVATAR)
StringPreference mAvatarPreference;
@@ -229,6 +233,14 @@ public class LoginPresenter extends MVPAbstractPresenter<LoginView> implements L
* @param user {@code User} the current logged in user.
*/
private void loginSuccess(User user) {
String accountNumber = mAccountNumberPreference.get();
String lastAccountNumber = mLastAccountNumberPreference.get();
if(!accountNumber.equals(lastAccountNumber)) {
//deleteData(true);
deleteData2();
}
mIsEmployee.set(user.isEmployee);
mChatCodePreference.set(mLastVoucher);
mLoginTokenPreference.set(user.token);
@@ -295,6 +307,8 @@ public class LoginPresenter extends MVPAbstractPresenter<LoginView> implements L
*/
@Override
public void checkTypeAndCustomerId(String customerId, String password, boolean isChecked) {
mLastAccountNumberPreference.set(mAccountNumberPreference.get());
mAccountNumberPreference.set(customerId);
mSavePasswordPreference.set(isChecked);
@@ -529,6 +543,7 @@ public class LoginPresenter extends MVPAbstractPresenter<LoginView> implements L
Observable.create(subscriber -> mGlide.clearDiskCache())
.subscribeOn(Schedulers.io())
.subscribe();
mGlide.clearMemory();
mSharedPreferences.edit().clear().apply();
mAccountNumberPreference.deleteFromSecurePreference();
@@ -570,6 +585,45 @@ public class LoginPresenter extends MVPAbstractPresenter<LoginView> implements L
}
}
private void deleteData2() {
// Observable.create(subscriber -> mGlide.clearDiskCache())
// .subscribeOn(Schedulers.io())
// .subscribe();
//
// mGlide.clearMemory();
File dir = mContext.getExternalFilesDir(null);
if (dir != null) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (String aChildren : children) {
//noinspection ResultOfMethodCallIgnored
new File(dir, aChildren).delete();
}
} else {
Log.e("deleteData", dir.getAbsolutePath() + " is not a directory!");
}
} else {
dir = new File(Environment.getExternalStorageDirectory(), "BeWoPlaner");
if (dir.isDirectory()) {
String[] children = dir.list();
for (String aChildren : children) {
//noinspection ResultOfMethodCallIgnored
new File(dir, aChildren).delete();
}
} else {
Log.e("deleteData", dir.getAbsolutePath() + " is not a directory!");
}
}
Realm realm = mRealmProvider.provide();
realm.executeTransaction(realm1 -> realm1.deleteAll());
}
private boolean checkPassword(String password) {
if (password.length() >= 1) {
return true;

View File

@@ -261,7 +261,6 @@ public class MainActivity extends AppCompatActivity implements MainNavigation, L
@SuppressWarnings("unused")
@Subscribe(threadMode = ThreadMode.MAIN)
public void onInvalidToken(InvalidTokenEvent invalidTokenEvent) {
Log.d("INVALID TOKEN", " invalid token event fired");
mLoginPresenter.verifyChatCode(this);
}

View File

@@ -18,6 +18,7 @@
android:layout_width="40dp"
android:layout_height="40dp"
android:contentDescription="@null"
android:scaleType="centerCrop"
tools:src="@drawable/avatar" />
<RelativeLayout