diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8dff2f6..7fdee24 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -16,15 +16,13 @@
android:label="@string/app_name"
android:roundIcon="@drawable/ic_mercury_icon"
android:supportsRtl="true"
- android:theme="@style/AppTheme.Light">
+ android:theme="@style/AppTheme">
+ android:label="Chat"/>
+ android:label="@string/app_name">
diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java
index a1ae48e..7d59751 100644
--- a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java
+++ b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListRecyclerViewAdapter.java
@@ -9,7 +9,7 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.mercury_im.messenger.R;
-import org.mercury_im.messenger.persistence.model.ChatModel;
+import org.mercury_im.messenger.persistence.pojo.Chat;
import org.mercury_im.messenger.ui.util.AbstractRecyclerViewAdapter;
import butterknife.BindView;
@@ -17,7 +17,7 @@ import butterknife.ButterKnife;
import de.hdodenhof.circleimageview.CircleImageView;
public class ChatListRecyclerViewAdapter
- extends AbstractRecyclerViewAdapter {
+ extends AbstractRecyclerViewAdapter {
public ChatListRecyclerViewAdapter() {
super(new ChatMessageDiffCallback(true));
@@ -33,7 +33,8 @@ public class ChatListRecyclerViewAdapter
@Override
public void onBindViewHolder(@NonNull ChatHolder holder, int position) {
- ChatModel model = getModelAt(position);
+ Chat model = getModelAt(position);
+ holder.nameView.setText(model.jid.toString());
// TODO: Better bindable model pls
}
@@ -57,19 +58,19 @@ public class ChatListRecyclerViewAdapter
}
}
- private static class ChatMessageDiffCallback extends AbstractDiffCallback {
+ private static class ChatMessageDiffCallback extends AbstractDiffCallback {
public ChatMessageDiffCallback(boolean detectMoves) {
super(detectMoves);
}
@Override
- public boolean areItemsTheSame(ChatModel oldItem, ChatModel newItem) {
- return oldItem.getId() == newItem.getId();
+ public boolean areItemsTheSame(Chat oldItem, Chat newItem) {
+ return oldItem.chatId == newItem.chatId;
}
@Override
- public boolean areContentsTheSame(ChatModel oldItem, ChatModel newItem) {
+ public boolean areContentsTheSame(Chat oldItem, Chat newItem) {
return areItemsTheSame(oldItem, newItem);
}
}
diff --git a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java
index c9d54f1..2ded6ce 100644
--- a/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java
+++ b/app/src/main/java/org/mercury_im/messenger/ui/chatlist/ChatListViewModel.java
@@ -9,6 +9,7 @@ import org.mercury_im.messenger.persistence.model.ChatModel;
import org.mercury_im.messenger.persistence.model.MessageModel;
import org.mercury_im.messenger.persistence.repository.ChatRepository;
import org.mercury_im.messenger.persistence.repository.MessageRepository;
+import org.mercury_im.messenger.persistence.pojo.Chat;
import java.util.List;
@@ -29,20 +30,15 @@ public class ChatListViewModel extends ViewModel {
private CompositeDisposable disposable = new CompositeDisposable();
- private final MutableLiveData> chats = new MutableLiveData<>();
+ private final MutableLiveData> chats = new MutableLiveData<>();
public ChatListViewModel() {
MercuryImApplication.getApplication().getAppComponent().inject(this);
- disposable.add(chatRepository.getAllChats()
+ disposable.add(chatRepository.getDisplayableChats()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe((Consumer>) chatModels -> {
- chats.setValue(chatModels);
- //for (ChatModel chat : chatModels) {
- // messageRepository.getLastMessageFrom(chat.ge)
- //}
- }));
+ .subscribe((Consumer>) chats::setValue));
disposable.add(messageRepository.getAllMessages()
.subscribeOn(Schedulers.io())
@@ -54,7 +50,7 @@ public class ChatListViewModel extends ViewModel {
}));
}
- public LiveData> getChats() {
+ public LiveData> getChats() {
return chats;
}
diff --git a/app/src/main/res/drawable/ic_group_black_24dp.xml b/app/src/main/res/drawable/ic_group_black_24dp.xml
new file mode 100644
index 0000000..4cfd869
--- /dev/null
+++ b/app/src/main/res/drawable/ic_group_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index cfe371f..6f156e7 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -25,7 +25,9 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
- android:background="@color/colorAccent"
+ app:itemIconTint="?attr/colorAccent"
+ app:itemTextColor="?attr/colorAccent"
+ app:itemBackground="?attr/colorPrimary"
app:menu="@menu/bottom_menu_main" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/recycler_view_item_chat_list.xml b/app/src/main/res/layout/recycler_view_item_chat_list.xml
index 894bd3b..9b4ef18 100644
--- a/app/src/main/res/layout/recycler_view_item_chat_list.xml
+++ b/app/src/main/res/layout/recycler_view_item_chat_list.xml
@@ -22,7 +22,6 @@
android:layout_height="wrap_content"
tools:text="@tools:sample/full_names"
android:textSize="20sp"
- android:textColor="@android:color/black"
app:layout_constraintTop_toTopOf="@+id/chat_avatar"
app:layout_constraintStart_toEndOf="@+id/chat_avatar"
android:layout_marginStart="8dp"
diff --git a/app/src/main/res/layout/recycler_view_item_roster_entry.xml b/app/src/main/res/layout/recycler_view_item_roster_entry.xml
index a47713b..5620a06 100644
--- a/app/src/main/res/layout/recycler_view_item_roster_entry.xml
+++ b/app/src/main/res/layout/recycler_view_item_roster_entry.xml
@@ -26,7 +26,6 @@
android:layout_height="wrap_content"
tools:text="@tools:sample/full_names"
android:textSize="20sp"
- android:textColor="@android:color/black"
app:layout_constraintTop_toTopOf="@+id/roster_entry__avatar"
app:layout_constraintStart_toEndOf="@+id/roster_entry__avatar"
android:layout_marginStart="8dp"
diff --git a/app/src/main/res/layout/view_chat_field.xml b/app/src/main/res/layout/view_chat_field.xml
deleted file mode 100644
index a531d16..0000000
--- a/app/src/main/res/layout/view_chat_field.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_compose.xml b/app/src/main/res/layout/view_compose.xml
index cda320a..75465c3 100644
--- a/app/src/main/res/layout/view_compose.xml
+++ b/app/src/main/res/layout/view_compose.xml
@@ -43,6 +43,8 @@
android:background="@null"
android:hint="@string/hint_type_your_message"
android:inputType="textMultiLine|textAutoCorrect|textCapSentences"
+ android:textColor="@android:color/primary_text_light"
+ android:textColorHint="@android:color/secondary_text_light"
android:maxLines="6"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="parent"
diff --git a/app/src/main/res/layout/view_message_text_in.xml b/app/src/main/res/layout/view_message_text_in.xml
index fe5c5bf..83c2c4f 100644
--- a/app/src/main/res/layout/view_message_text_in.xml
+++ b/app/src/main/res/layout/view_message_text_in.xml
@@ -23,6 +23,7 @@
android:id="@+id/msg_body"
android:layout_width="0dp"
android:layout_height="wrap_content"
+ android:textColor="@android:color/primary_text_light"
android:lineSpacingExtra="2dp"
android:paddingStart="@dimen/msg_padding_start"
diff --git a/app/src/main/res/layout/view_message_text_out.xml b/app/src/main/res/layout/view_message_text_out.xml
index 298d53b..bd14c60 100644
--- a/app/src/main/res/layout/view_message_text_out.xml
+++ b/app/src/main/res/layout/view_message_text_out.xml
@@ -18,6 +18,7 @@
android:paddingTop="@dimen/msg_padding_top"
android:paddingEnd="@dimen/msg_padding_end"
android:paddingBottom="@dimen/msg_padding_bottom"
+ android:textColor="@android:color/primary_text_light"
android:elevation="@dimen/msg_elevation"
android:layout_marginTop="@dimen/msg_spacing_vertical"
diff --git a/app/src/main/res/menu/bottom_menu_main.xml b/app/src/main/res/menu/bottom_menu_main.xml
index 789ed3e..c62dc7a 100644
--- a/app/src/main/res/menu/bottom_menu_main.xml
+++ b/app/src/main/res/menu/bottom_menu_main.xml
@@ -7,7 +7,7 @@
+ android:icon="@drawable/ic_group_black_24dp" />
-
#FFF
- #38445e
- #0f1d34
- #636f8b
+ #005959
+ #356a6a
+ #001a19
+ #85bb00
+ #b9ee49
+ #528b00
+ #ffffff
+ #000000
- #EDF0F2
+
#FFF
#FFF
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index f4ccf11..cca0a55 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,34 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ChatDao.java b/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ChatDao.java
index e8bdbaf..5d9b6d5 100644
--- a/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ChatDao.java
+++ b/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/dao/ChatDao.java
@@ -6,14 +6,13 @@ import androidx.room.TypeConverters;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.room.model.RoomChatModel;
-import org.mercury_im.messenger.persistence.room.pojo.Chat;
+import org.mercury_im.messenger.persistence.pojo.Chat;
import org.mercury_im.messenger.persistence.room.type_converter.EntityBareJidConverter;
import java.util.List;
import io.reactivex.Maybe;
import io.reactivex.Observable;
-import io.reactivex.Single;
@Dao
@TypeConverters(EntityBareJidConverter.class)
@@ -42,4 +41,10 @@ public interface ChatDao extends BaseDao {
@Query("SELECT chats.* FROM chats JOIN contacts WHERE contacts.pk_contact_id = :contactId")
Observable getChatWithContact(long contactId);
+
+ @Query("SELECT chats.pk_chat_id as chatId, " +
+ "chats.fk_entity_id as entityId, " +
+ "jid, active " +
+ "from chats LEFT JOIN entities ON chats.fk_entity_id = entities.pk_entity_id")
+ Observable
> getChatPojos();
}
diff --git a/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IChatRepository.java b/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IChatRepository.java
index 1ff57c5..e550df2 100644
--- a/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IChatRepository.java
+++ b/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/repository/IChatRepository.java
@@ -4,6 +4,7 @@ import android.util.Log;
import org.jxmpp.jid.EntityBareJid;
import org.mercury_im.messenger.persistence.model.EntityModel;
+import org.mercury_im.messenger.persistence.pojo.Chat;
import org.mercury_im.messenger.persistence.repository.ChatRepository;
import org.mercury_im.messenger.persistence.repository.RosterRepository;
import org.mercury_im.messenger.persistence.room.dao.ChatDao;
@@ -111,4 +112,9 @@ public class IChatRepository implements ChatRepository {
return chatDao.delete(chat);
}
+ @Override
+ public Observable> getDisplayableChats() {
+ return chatDao.getChatPojos();
+ }
+
}
diff --git a/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/pojo/Chat.java b/persistence/src/main/java/org/mercury_im/messenger/persistence/pojo/Chat.java
similarity index 74%
rename from persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/pojo/Chat.java
rename to persistence/src/main/java/org/mercury_im/messenger/persistence/pojo/Chat.java
index a0f184b..0bfb3ab 100644
--- a/persistence-room/src/main/java/org/mercury_im/messenger/persistence/room/pojo/Chat.java
+++ b/persistence/src/main/java/org/mercury_im/messenger/persistence/pojo/Chat.java
@@ -1,4 +1,4 @@
-package org.mercury_im.messenger.persistence.room.pojo;
+package org.mercury_im.messenger.persistence.pojo;
import org.jxmpp.jid.EntityBareJid;
diff --git a/persistence/src/main/java/org/mercury_im/messenger/persistence/repository/ChatRepository.java b/persistence/src/main/java/org/mercury_im/messenger/persistence/repository/ChatRepository.java
index 4362a45..4f0e938 100644
--- a/persistence/src/main/java/org/mercury_im/messenger/persistence/repository/ChatRepository.java
+++ b/persistence/src/main/java/org/mercury_im/messenger/persistence/repository/ChatRepository.java
@@ -5,6 +5,7 @@ import org.mercury_im.messenger.persistence.model.AccountModel;
import org.mercury_im.messenger.persistence.model.ChatModel;
import org.mercury_im.messenger.persistence.model.ContactModel;
import org.mercury_im.messenger.persistence.model.EntityModel;
+import org.mercury_im.messenger.persistence.pojo.Chat;
import java.util.List;
@@ -69,10 +70,6 @@ public interface ChatRepository {
Completable closeChat(E chat);
-
-
-
-
-
+ Observable> getDisplayableChats();
}