Fix #213 and more

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-07-15 08:25:41 +02:00
parent 969a095f61
commit 7de56eb869
3 changed files with 114 additions and 9 deletions

View File

@ -46,6 +46,9 @@ import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.AbsListView;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.amulyakhare.textdrawable.TextDrawable;
import com.bumptech.glide.load.DataSource;
@ -108,6 +111,7 @@ import javax.inject.Inject;
import autodagger.AutoInjector;
import butterknife.BindView;
import butterknife.OnClick;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
@ -134,6 +138,12 @@ public class ChatController extends BaseController implements MessagesListAdapte
MessageInput messageInputView;
@BindView(R.id.popupBubbleView)
PopupBubble popupBubble;
@BindView(R.id.emptyLayout)
RelativeLayout emptyLayout;
@BindView(R.id.sendHiTextView)
TextView sendHiTextView;
@BindView(R.id.progressBar)
ProgressBar loadingProgressBar;
private List<Disposable> disposableList = new ArrayList<>();
private String conversationName;
private String roomToken;
@ -159,6 +169,9 @@ public class ChatController extends BaseController implements MessagesListAdapte
private String roomId;
private boolean voiceOnly;
private boolean isFirstMessagesProcessing = true;
private boolean isHelloClicked;
public ChatController(Bundle args) {
super(args);
setHasOptionsMenu(true);
@ -287,9 +300,13 @@ public class ChatController extends BaseController implements MessagesListAdapte
getActionBar().show();
boolean adapterWasNull = false;
sendHiTextView.setText(String.format(getResources().getString(R.string.nc_chat_empty), getResources()
.getString(R.string.nc_hello)));
if (adapter == null) {
loadingProgressBar.setVisibility(View.VISIBLE);
try {
cache.evictAll();
} catch (IOException e) {
@ -329,6 +346,12 @@ public class ChatController extends BaseController implements MessagesListAdapte
.into(imageView);
}
});
} else {
if (adapter.getItemCount() == 0) {
emptyLayout.setVisibility(View.VISIBLE);
} else {
messagesListView.setVisibility(View.VISIBLE);
}
}
@ -478,6 +501,14 @@ public class ChatController extends BaseController implements MessagesListAdapte
}
@OnClick(R.id.emptyLayout)
public void sendHello() {
if (!isHelloClicked) {
isHelloClicked = true;
sendMessage(getResources().getString(R.string.nc_hello) + " 👋", 1);
}
}
private void joinRoomWithPassword() {
if (currentCall == null) {
@ -695,7 +726,26 @@ public class ChatController extends BaseController implements MessagesListAdapte
ChatOverall chatOverall = (ChatOverall) response.body();
List<ChatMessage> chatMessageList = chatOverall.getOcs().getData();
if (isFirstMessagesProcessing) {
isFirstMessagesProcessing = false;
loadingProgressBar.setVisibility(View.GONE);
if (chatMessageList.size() == 0) {
emptyLayout.setVisibility(View.VISIBLE);
} else {
messagesListView.setVisibility(View.VISIBLE);
}
} else {
if (emptyLayout.getVisibility() != View.GONE) {
emptyLayout.setVisibility(View.GONE);
}
if (messagesListView.getVisibility() != View.VISIBLE) {
messagesListView.setVisibility(View.VISIBLE);
}
}
if (!isFromTheFuture) {
for (int i = 0; i < chatMessageList.size(); i++) {
chatMessageList.get(i).setBaseUrl(conversationUser.getBaseUrl());
if (globalLastKnownPastMessageId == -1 || chatMessageList.get(i).getJsonMessageId() <
@ -710,8 +760,10 @@ public class ChatController extends BaseController implements MessagesListAdapte
}
}
adapter.addToEnd(chatMessageList, false);
} else {
for (int i = 0; i < chatMessageList.size(); i++) {
chatMessageList.get(i).setBaseUrl(conversationUser.getBaseUrl());
@ -752,6 +804,15 @@ public class ChatController extends BaseController implements MessagesListAdapte
pullChatMessages(1);
}
} else if (response.code() == 304 && !isFromTheFuture) {
if (isFirstMessagesProcessing) {
isFirstMessagesProcessing = false;
loadingProgressBar.setVisibility(View.GONE);
if (emptyLayout.getVisibility() != View.VISIBLE) {
emptyLayout.setVisibility(View.VISIBLE);
}
}
historyRead = true;
if (!lookingIntoFuture) {

View File

@ -24,12 +24,57 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="@dimen/item_height"
android:layout_height="@dimen/item_height"
android:layout_centerInParent="true"
android:layout_marginEnd="@dimen/activity_horizontal_margin"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:layout_marginStart="@dimen/activity_horizontal_margin"
android:indeterminate="true"
android:indeterminateTint="@color/colorPrimary"
android:indeterminateTintMode="src_in"
android:visibility="gone"/>
<RelativeLayout
android:id="@+id/emptyLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<TextView
android:id="@+id/wawingTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="👋"
android:textAlignment="center"
android:textSize="72sp"/>
<TextView
android:id="@+id/sendHiTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/wawingTextView"
android:layout_margin="8dp"
android:textAlignment="center"
android:textSize="20sp"/>
</RelativeLayout>
<com.stfalcon.chatkit.messages.MessagesList
android:id="@+id/messagesListView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp"
android:layout_above="@+id/messageInputView"
android:paddingBottom="16dp"
android:visibility="gone"
app:dateHeaderTextSize="13sp"
app:incomingBubblePaddingBottom="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingLeft="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingRight="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingTop="@dimen/message_bubble_corners_padding"
app:incomingDefaultBubbleColor="@color/white_two"
app:incomingDefaultBubblePressedColor="@color/white_two"
app:incomingDefaultBubbleSelectedColor="@color/transparent"
@ -37,14 +82,10 @@
app:incomingTextLinkColor="@color/nc_incoming_text_default"
app:incomingTextSize="@dimen/chat_text_size"
app:incomingTimeTextSize="12sp"
app:incomingBubblePaddingTop="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingBottom="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingLeft="@dimen/message_bubble_corners_padding"
app:incomingBubblePaddingRight="@dimen/message_bubble_corners_padding"
app:outcomingBubblePaddingTop="@dimen/message_bubble_corners_padding"
app:outcomingBubblePaddingBottom="@dimen/message_bubble_corners_padding"
app:outcomingBubblePaddingLeft="@dimen/message_bubble_corners_padding"
app:outcomingBubblePaddingRight="@dimen/message_bubble_corners_padding"
app:outcomingBubblePaddingTop="@dimen/message_bubble_corners_padding"
app:outcomingDefaultBubbleColor="@color/colorPrimary"
app:outcomingDefaultBubblePressedColor="@color/colorPrimary"
app:outcomingDefaultBubbleSelectedColor="@color/transparent"
@ -52,17 +93,16 @@
app:outcomingTextLinkColor="@color/nc_outcoming_text_default"
app:outcomingTextSize="@dimen/chat_text_size"
app:outcomingTimeTextSize="12sp"
app:dateHeaderTextSize="13sp"
app:textAutoLink="all"/>
<com.webianks.library.PopupBubble
android:id="@+id/popupBubbleView"
android:layout_margin="16dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/separator"
android:paddingEnd="8dp"
android:layout_centerHorizontal="true"
android:layout_margin="16dp"
android:paddingEnd="8dp"
app:pb_backgroundColor="@color/colorPrimary"
app:pb_icon="@drawable/ic_baseline_arrow_downward_24px"
app:pb_text="@string/nc_new_messages"

View File

@ -195,4 +195,8 @@ Find Nextcloud on https://nextcloud.com</string>
<string name="nc_description_more_menu_group">Menu for public conversation %1$s</string>
<string name="nc_description_send_message_button">Send message</string>
<!-- Chat empty state -->
<string name="nc_chat_empty">Click to be the first to say %1$s!</string>
<string name="nc_hello">Hello</string>
</resources>