Show custom message on no session message.

Made a no session message an update message.
This commit is contained in:
Mikunj
2019-12-05 13:56:12 +11:00
parent ba93fdd649
commit fd2dc678ea
13 changed files with 96 additions and 9 deletions

View File

@@ -154,6 +154,7 @@ import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.loki.ConversationUpdateItemViewDelegate;
import org.thoughtcrime.securesms.loki.FriendRequestViewDelegate;
import org.thoughtcrime.securesms.loki.LokiAPIUtilities;
import org.thoughtcrime.securesms.loki.LokiThreadDatabase;
@@ -272,7 +273,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
ConversationSearchBottomBar.EventListener,
StickerKeyboardProvider.StickerEventListener,
LokiThreadDatabaseDelegate,
FriendRequestViewDelegate
FriendRequestViewDelegate,
ConversationUpdateItemViewDelegate
{
private static final String TAG = ConversationActivity.class.getSimpleName();
@@ -376,6 +378,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
fragment = initFragment(R.id.fragment_content, new ConversationFragment(), dynamicLanguage.getCurrentLocale());
fragment.friendRequestViewDelegate = this;
fragment.conversationUpdateItemViewDelegate = this;
initializeReceivers();
initializeActionBar();
@@ -3079,4 +3082,14 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
return TextSecurePreferences.getLocalNumber(this).equals(recipient.getAddress().serialize());
}
// endregion
@Override
public void updateItemButtonPressed(@NonNull MessageRecord messageRecord) {
// Loki - User clicked restore session
if (messageRecord.isNoRemoteSession() && !messageRecord.isLokiSessionRestoreSent()) {
// TODO: Send a message with `SESSION_RESTORE` flag
DatabaseFactory.getSmsDatabase(this).markAsLokiSessionRestoreSent(messageRecord.id);
TextSecurePreferences.setShowingSessionRestorePrompt(this, messageRecord.getIndividualRecipient().getAddress().serialize(), false);
}
}
}

View File

@@ -41,6 +41,7 @@ import org.thoughtcrime.securesms.database.MmsSmsDatabase;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.loki.ConversationUpdateItemViewDelegate;
import org.thoughtcrime.securesms.loki.FriendRequestViewDelegate;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.SlideDeck;
@@ -108,6 +109,7 @@ public class ConversationAdapter <V extends View & BindableConversationItem>
private String searchQuery;
public FriendRequestViewDelegate friendRequestViewDelegate; // Loki
public ConversationUpdateItemViewDelegate conversationUpdateItemViewDelegate;
protected static class ViewHolder extends RecyclerView.ViewHolder {
public <V extends View & BindableConversationItem> ViewHolder(final @NonNull V itemView) {
@@ -204,6 +206,8 @@ public class ConversationAdapter <V extends View & BindableConversationItem>
BindableConversationItem conversationItem = viewHolder.getView();
if (conversationItem instanceof ConversationItem) {
((ConversationItem)conversationItem).friendRequestViewDelegate = this.friendRequestViewDelegate;
} else if (conversationItem instanceof ConversationUpdateItem) {
((ConversationUpdateItem)conversationItem).delegate = this.conversationUpdateItemViewDelegate;
}
conversationItem.bind(messageRecord,
Optional.fromNullable(previousRecord),

View File

@@ -79,6 +79,7 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.loki.ConversationUpdateItemViewDelegate;
import org.thoughtcrime.securesms.loki.FriendRequestViewDelegate;
import org.thoughtcrime.securesms.longmessage.LongMessageActivity;
import org.thoughtcrime.securesms.mediasend.Media;
@@ -152,6 +153,7 @@ public class ConversationFragment extends Fragment
private View scrollToBottomButton;
private TextView scrollDateHeader;
public FriendRequestViewDelegate friendRequestViewDelegate; // Loki
public ConversationUpdateItemViewDelegate conversationUpdateItemViewDelegate;
@Override
public void onCreate(Bundle icicle) {
@@ -360,7 +362,8 @@ public class ConversationFragment extends Fragment
if (messageRecord.isGroupAction() || messageRecord.isCallLog() ||
messageRecord.isJoined() || messageRecord.isExpirationTimerUpdate() ||
messageRecord.isEndSession() || messageRecord.isIdentityUpdate() ||
messageRecord.isIdentityVerified() || messageRecord.isIdentityDefault())
messageRecord.isIdentityVerified() || messageRecord.isIdentityDefault() ||
messageRecord.isNoRemoteSession() || messageRecord.isLokiSessionRestoreSent())
{
actionMessage = true;
}
@@ -705,6 +708,7 @@ public class ConversationFragment extends Fragment
return;
}
adapter.friendRequestViewDelegate = this.friendRequestViewDelegate;
adapter.conversationUpdateItemViewDelegate = this.conversationUpdateItemViewDelegate;
if (cursor.getCount() >= PARTIAL_CONVERSATION_LIMIT && loader.hasLimit()) {
adapter.setFooterView(topLoadMoreView);

View File

@@ -87,6 +87,7 @@ import org.thoughtcrime.securesms.jobs.SmsSendJob;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.loki.ConversationUpdateItemViewDelegate;
import org.thoughtcrime.securesms.loki.FriendRequestView;
import org.thoughtcrime.securesms.loki.FriendRequestViewDelegate;
import org.thoughtcrime.securesms.loki.LokiMessageDatabase;

View File

@@ -9,6 +9,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -21,6 +22,7 @@ import org.thoughtcrime.securesms.database.IdentityDatabase;
import org.thoughtcrime.securesms.database.IdentityDatabase.IdentityRecord;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.loki.ConversationUpdateItemViewDelegate;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientModifiedListener;
@@ -47,10 +49,13 @@ public class ConversationUpdateItem extends LinearLayout
private TextView title;
private TextView body;
private TextView date;
private Button button;
private Recipient sender;
private MessageRecord messageRecord;
private Locale locale;
public ConversationUpdateItemViewDelegate delegate;
public ConversationUpdateItem(Context context) {
super(context);
}
@@ -67,6 +72,12 @@ public class ConversationUpdateItem extends LinearLayout
this.title = findViewById(R.id.conversation_update_title);
this.body = findViewById(R.id.conversation_update_body);
this.date = findViewById(R.id.conversation_update_date);
this.button = findViewById(R.id.conversation_update_button);
this.button.setOnClickListener(view -> {
if (delegate != null && messageRecord != null) {
delegate.updateItemButtonPressed(messageRecord);
}
});
this.setOnClickListener(new InternalClickListener(null));
}
@@ -112,6 +123,8 @@ public class ConversationUpdateItem extends LinearLayout
else if (messageRecord.isIdentityUpdate()) setIdentityRecord(messageRecord);
else if (messageRecord.isIdentityVerified() ||
messageRecord.isIdentityDefault()) setIdentityVerifyUpdate(messageRecord);
else if (messageRecord.isNoRemoteSession() ||
messageRecord.isLokiSessionRestoreSent()) setTextMessageRecord(messageRecord);
else throw new AssertionError("Neither group nor log nor joined.");
if (batchSelected.contains(messageRecord)) setSelected(true);
@@ -201,6 +214,21 @@ public class ConversationUpdateItem extends LinearLayout
body.setVisibility(VISIBLE);
date.setVisibility(GONE);
}
private void setTextMessageRecord(MessageRecord messageRecord) {
body.setText(messageRecord.getDisplayBody(getContext()));
if (messageRecord.isNoRemoteSession() && !messageRecord.isLokiSessionRestoreSent()) {
button.setVisibility(VISIBLE);
button.setText(R.string.MessageRecord_session_restore_button_title);
} else {
button.setVisibility(GONE);
}
icon.setVisibility(GONE);
title.setVisibility(GONE);
body.setVisibility(VISIBLE);
date.setVisibility(GONE);
}
@Override
public void onModified(Recipient recipient) {