diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java index 2dd2e396a..40e148cc1 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.java @@ -21,6 +21,8 @@ package com.nextcloud.talk.adapters.items; import android.content.Context; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.text.TextUtils; import android.text.format.DateUtils; import android.view.View; @@ -139,7 +141,7 @@ public class ConversationItem extends AbstractFlexibleItem", context.getResources().getColor(R.color.nc_grey)); + holder.dialogLastMessageUserAvatar.setImageDrawable(drawable); + + } } else { holder.dialogLastMessageUserAvatar.setVisibility(View.GONE); } @@ -229,6 +238,24 @@ public class ConversationItem extends AbstractFlexibleItem", context.getResources().getColor(R.color.nc_grey)); + messageUserAvatarView.setVisibility(View.VISIBLE); + messageUserAvatarView.getHierarchy().setPlaceholderImage(drawable); + } + } else { + Resources resources = context.getResources(); - Resources resources = NextcloudTalkApplication.getSharedApplication().getResources(); - if (message.isGrouped()) { messageUserAvatarView.setVisibility(View.INVISIBLE); Drawable bubbleDrawable = DisplayUtils.getMessageSelector(resources.getColor(R.color.white_two), resources.getColor(R.color.transparent), resources.getColor(R.color.white_two), R.drawable.shape_grouped_incoming_message); ViewCompat.setBackground(bubble, bubbleDrawable); messageAuthor.setVisibility(View.GONE); - } else { - messageUserAvatarView.setVisibility(View.VISIBLE); - Drawable bubbleDrawable = DisplayUtils.getMessageSelector(resources.getColor(R.color.white_two), - resources.getColor(R.color.transparent), - resources.getColor(R.color.white_two), R.drawable.shape_incoming_message); - ViewCompat.setBackground(bubble, bubbleDrawable); - messageAuthor.setVisibility(View.VISIBLE); } HashMap> messageParameters = message.getMessageParameters(); diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java index 5c3a370a6..105a8c3a4 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java @@ -21,9 +21,13 @@ package com.nextcloud.talk.adapters.messages; import android.annotation.SuppressLint; +import android.content.Context; import android.content.Intent; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.view.View; +import autodagger.AutoInjector; import butterknife.BindView; import butterknife.ButterKnife; import com.nextcloud.talk.R; @@ -33,14 +37,21 @@ import com.nextcloud.talk.utils.DisplayUtils; import com.stfalcon.chatkit.messages.MessageHolders; import com.vanniktech.emoji.EmojiTextView; +import javax.inject.Inject; + +@AutoInjector(NextcloudTalkApplication.class) public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageMessageViewHolder { @BindView(R.id.messageText) EmojiTextView messageText; + @Inject + Context context; + public MagicPreviewMessageViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); + NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this); } @SuppressLint("SetTextI18n") @@ -53,6 +64,15 @@ public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageM userAvatar.setVisibility(View.INVISIBLE); } else { userAvatar.setVisibility(View.VISIBLE); + + if ("bots".equals(message.getActorType()) && "changelog".equals(message.getActorId())) { + Drawable[] layers = new Drawable[2]; + layers[0] = context.getDrawable(R.drawable.ic_launcher_background); + layers[1] = context.getDrawable(R.drawable.ic_launcher_foreground); + LayerDrawable layerDrawable = new LayerDrawable(layers); + + userAvatar.getHierarchy().setPlaceholderImage(DisplayUtils.getRoundedDrawable(layerDrawable)); + } } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java index 4aa65187b..b83d120ec 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -429,8 +429,7 @@ public class ChatController extends BaseController implements MessagesListAdapte if (currentConversation != null && !readOnlyCheckPerformed) { readOnlyCheckPerformed = true; - if (currentConversation.getConversationReadOnlyState() != null && - !currentConversation.getConversationReadOnlyState().equals(Conversation.ConversationReadOnlyState.CONVERSATION_READ_ONLY)) { + if (currentConversation.getConversationReadOnlyState() != null && currentConversation.getConversationReadOnlyState().equals(Conversation.ConversationReadOnlyState.CONVERSATION_READ_ONLY)) { messageInput.setHint(R.string.nc_readonly_hint); conversationVoiceCallMenuItem.getIcon().setAlpha(99); @@ -1060,7 +1059,9 @@ public class ChatController extends BaseController implements MessagesListAdapte conversationVideoMenuItem = menu.findItem(R.id.conversation_video_call); } - checkReadOnlyState(); + if (conversationUser.hasSpreedCapabilityWithName("read-only-rooms")) { + checkReadOnlyState(); + } } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java index d39ba98f3..567c9868c 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationInfoController.java @@ -22,6 +22,8 @@ package com.nextcloud.talk.controllers; import android.app.Activity; import android.content.Context; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.LayerDrawable; import android.os.Bundle; import android.text.TextUtils; import android.view.LayoutInflater; @@ -62,10 +64,7 @@ import com.nextcloud.talk.utils.preferencestorage.DatabaseStorageModule; import com.vanniktech.emoji.EmojiTextView; import com.yarolegovich.lovelydialog.LovelySaveStateHandler; import com.yarolegovich.lovelydialog.LovelyStandardDialog; -import com.yarolegovich.mp.MaterialChoicePreference; -import com.yarolegovich.mp.MaterialPreferenceCategory; -import com.yarolegovich.mp.MaterialPreferenceScreen; -import com.yarolegovich.mp.MaterialStandardPreference; +import com.yarolegovich.mp.*; import eu.davidea.flexibleadapter.FlexibleAdapter; import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager; import eu.davidea.flexibleadapter.items.AbstractFlexibleItem; @@ -106,6 +105,8 @@ public class ConversationInfoController extends BaseController { MaterialStandardPreference leaveConversationAction; @BindView(R.id.ownOptions) MaterialPreferenceCategory ownOptionsCategory; + @BindView(R.id.muteCalls) + MaterialSwitchPreference muteCalls; @Inject NcApi ncApi; @@ -376,6 +377,10 @@ public class ConversationInfoController extends BaseController { deleteConversationAction.setVisibility(View.VISIBLE); } + if (Conversation.ConversationType.ROOM_SYSTEM.equals(conversation.getType())) { + muteCalls.setVisibility(View.GONE); + } + getListOfParticipants(); if (progressBar != null) { @@ -483,6 +488,13 @@ public class ConversationInfoController extends BaseController { .getRoundedBitmapDrawableFromVectorDrawableResource(getResources(), R.drawable.ic_link_white_24px)); break; + case ROOM_SYSTEM: + Drawable[] layers = new Drawable[2]; + layers[0] = context.getDrawable(R.drawable.ic_launcher_background); + layers[1] = context.getDrawable(R.drawable.ic_launcher_foreground); + LayerDrawable layerDrawable = new LayerDrawable(layers); + conversationAvatarImageView.getHierarchy().setPlaceholderImage(DisplayUtils.getRoundedDrawable(layerDrawable)); + default: break; } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java index d222daee5..c3efb36bd 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java @@ -30,7 +30,6 @@ import android.os.Bundle; import android.os.Handler; import android.text.InputType; import android.text.TextUtils; -import android.util.Log; import android.view.*; import android.view.inputmethod.EditorInfo; import android.widget.ProgressBar; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java index 2e980ad70..9e9984fa5 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/WebViewLoginController.java @@ -41,7 +41,6 @@ import autodagger.AutoInjector; import butterknife.BindView; import com.bluelinelabs.conductor.RouterTransaction; import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler; -import com.bluelinelabs.logansquare.LoganSquare; import com.nextcloud.talk.R; import com.nextcloud.talk.application.NextcloudTalkApplication; import com.nextcloud.talk.controllers.base.BaseController; @@ -49,7 +48,6 @@ import com.nextcloud.talk.events.CertificateEvent; import com.nextcloud.talk.jobs.PushRegistrationWorker; import com.nextcloud.talk.models.LoginData; import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.talk.models.json.push.PushConfigurationState; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; @@ -63,7 +61,6 @@ import io.requery.reactivex.ReactiveEntityStore; import org.greenrobot.eventbus.EventBus; import javax.inject.Inject; -import java.io.IOException; import java.lang.reflect.Field; import java.net.CookieManager; import java.net.URLDecoder; diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java index f6161b2f1..ffbdc55f0 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java @@ -47,7 +47,6 @@ import com.nextcloud.talk.controllers.ConversationsListController; import com.nextcloud.talk.controllers.base.BaseController; import com.nextcloud.talk.events.BottomSheetLockEvent; import com.nextcloud.talk.interfaces.ConversationMenuInterface; -import com.nextcloud.talk.jobs.DeleteConversationWorker; import com.nextcloud.talk.jobs.LeaveConversationWorker; import com.nextcloud.talk.models.database.UserEntity; import com.nextcloud.talk.models.json.rooms.Conversation; diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumRoomTypeConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumRoomTypeConverter.java index 0d4d062d4..4aa4df9b9 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumRoomTypeConverter.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/EnumRoomTypeConverter.java @@ -33,6 +33,8 @@ public class EnumRoomTypeConverter extends IntBasedTypeConverter -