mirror of
https://github.com/ChronosX88/Influence.git
synced 2024-11-23 18:12:18 +00:00
Implemented ability to clear chat
This commit is contained in:
parent
5c42a2304f
commit
bd732fa825
@ -18,6 +18,7 @@ package io.github.chronosx88.influence.contracts
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.view.MenuItem
|
||||||
import com.stfalcon.chatkit.dialogs.DialogsListAdapter
|
import com.stfalcon.chatkit.dialogs.DialogsListAdapter
|
||||||
import com.stfalcon.chatkit.messages.MessagesListAdapter
|
import com.stfalcon.chatkit.messages.MessagesListAdapter
|
||||||
|
|
||||||
@ -86,6 +87,7 @@ interface CoreContracts {
|
|||||||
fun sendMessage(text: String): Boolean
|
fun sendMessage(text: String): Boolean
|
||||||
fun loadLocalMessages()
|
fun loadLocalMessages()
|
||||||
fun onDestroy()
|
fun onDestroy()
|
||||||
|
fun onOptionsItemSelected(item: MenuItem)
|
||||||
}
|
}
|
||||||
|
|
||||||
interface IChatViewContract {
|
interface IChatViewContract {
|
||||||
|
@ -88,4 +88,8 @@ public class LocalDBWrapper {
|
|||||||
public static void updateChatUnreadMessagesCount(String chatID, int unreadMessagesCount) {
|
public static void updateChatUnreadMessagesCount(String chatID, int unreadMessagesCount) {
|
||||||
dbInstance.chatDao().updateUnreadMessagesCount(chatID, unreadMessagesCount);
|
dbInstance.chatDao().updateUnreadMessagesCount(chatID, unreadMessagesCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void clearChat(String chatID) {
|
||||||
|
dbInstance.messageDao().clearMessagesByChatID(chatID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,9 @@ public interface MessageDao {
|
|||||||
@Query("DELETE FROM messages")
|
@Query("DELETE FROM messages")
|
||||||
void clearMessages();
|
void clearMessages();
|
||||||
|
|
||||||
|
@Query("DELETE FROM messages WHERE jid = :chatID")
|
||||||
|
void clearMessagesByChatID(String chatID);
|
||||||
|
|
||||||
@Query("SELECT messageID FROM messages WHERE jid = :chatID GROUP BY :chatID HAVING MAX(messageID)")
|
@Query("SELECT messageID FROM messages WHERE jid = :chatID GROUP BY :chatID HAVING MAX(messageID)")
|
||||||
long getLastMessageByChatID(String chatID);
|
long getLastMessageByChatID(String chatID);
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package io.github.chronosx88.influence.presenters
|
package io.github.chronosx88.influence.presenters
|
||||||
|
|
||||||
|
import android.view.MenuItem
|
||||||
import com.google.gson.Gson
|
import com.google.gson.Gson
|
||||||
import com.stfalcon.chatkit.messages.MessageHolders
|
import com.stfalcon.chatkit.messages.MessageHolders
|
||||||
import com.stfalcon.chatkit.messages.MessagesListAdapter
|
import com.stfalcon.chatkit.messages.MessagesListAdapter
|
||||||
@ -112,4 +113,14 @@ class ChatPresenter(private val view: CoreContracts.IChatViewContract, private v
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onOptionsItemSelected(item: MenuItem) {
|
||||||
|
when (item.itemId) {
|
||||||
|
R.id.menu_clear_chat -> {
|
||||||
|
LocalDBWrapper.clearChat(chatID)
|
||||||
|
chatAdapter.clear()
|
||||||
|
EventBus.getDefault().post(LastMessageEvent(chatID, null))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ package io.github.chronosx88.influence.views
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.BitmapFactory
|
import android.graphics.BitmapFactory
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.widget.ImageView
|
import android.widget.ImageView
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
@ -34,6 +35,7 @@ import com.stfalcon.chatkit.messages.MessagesListAdapter
|
|||||||
import io.github.chronosx88.influence.R
|
import io.github.chronosx88.influence.R
|
||||||
import io.github.chronosx88.influence.contracts.CoreContracts
|
import io.github.chronosx88.influence.contracts.CoreContracts
|
||||||
import io.github.chronosx88.influence.helpers.AppHelper
|
import io.github.chronosx88.influence.helpers.AppHelper
|
||||||
|
import io.github.chronosx88.influence.helpers.LocalDBWrapper
|
||||||
import io.github.chronosx88.influence.models.GenericMessage
|
import io.github.chronosx88.influence.models.GenericMessage
|
||||||
import io.github.chronosx88.influence.models.roomEntities.MessageEntity
|
import io.github.chronosx88.influence.models.roomEntities.MessageEntity
|
||||||
import io.github.chronosx88.influence.presenters.ChatPresenter
|
import io.github.chronosx88.influence.presenters.ChatPresenter
|
||||||
@ -59,12 +61,12 @@ class ChatActivity : AppCompatActivity(), CoreContracts.IChatViewContract {
|
|||||||
supportActionBar!!.setTitle("")
|
supportActionBar!!.setTitle("")
|
||||||
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
|
supportActionBar!!.setDisplayHomeAsUpEnabled(true)
|
||||||
supportActionBar!!.setHomeButtonEnabled(true)
|
supportActionBar!!.setHomeButtonEnabled(true)
|
||||||
messageList = findViewById(R.id.messages_list)
|
messageList = find(R.id.messages_list)
|
||||||
messageList!!.layoutManager = LinearLayoutManager(this)
|
messageList!!.layoutManager = LinearLayoutManager(this)
|
||||||
chatNameTextView = find(R.id.appbar_username)
|
chatNameTextView = find(R.id.appbar_username)
|
||||||
userStatus = find(R.id.user_status_text)
|
userStatus = find(R.id.user_status_text)
|
||||||
chatAvatar = findViewById(R.id.profile_image_chat_activity)
|
chatAvatar = find(R.id.profile_image_chat_activity)
|
||||||
messageInput = findViewById(R.id.message_input)
|
messageInput = find(R.id.message_input)
|
||||||
messageInput!!.setInputListener {
|
messageInput!!.setInputListener {
|
||||||
presenter!!.sendMessage(it.toString())
|
presenter!!.sendMessage(it.toString())
|
||||||
}
|
}
|
||||||
@ -81,6 +83,7 @@ class ChatActivity : AppCompatActivity(), CoreContracts.IChatViewContract {
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
presenter!!.onOptionsItemSelected(item)
|
||||||
return super.onOptionsItemSelected(item)
|
return super.onOptionsItemSelected(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,4 +117,11 @@ class ChatActivity : AppCompatActivity(), CoreContracts.IChatViewContract {
|
|||||||
override fun setUserStatus(status: String) {
|
override fun setUserStatus(status: String) {
|
||||||
userStatus!!.text = status
|
userStatus!!.text = status
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||||
|
menuInflater.inflate(R.menu.chat_activity_menu, menu)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
25
app/src/main/res/menu/chat_activity_menu.xml
Normal file
25
app/src/main/res/menu/chat_activity_menu.xml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright 2019 ChronosX88
|
||||||
|
~
|
||||||
|
~ Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
~ you may not use this file except in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~
|
||||||
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
~
|
||||||
|
~ Unless required by applicable law or agreed to in writing, software
|
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
~ See the License for the specific language governing permissions and
|
||||||
|
~ limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_clear_chat"
|
||||||
|
app:showAsAction="never"
|
||||||
|
android:title="@string/clear_chat">
|
||||||
|
</item>
|
||||||
|
</menu>
|
@ -26,4 +26,5 @@
|
|||||||
<string name="invalid_jid_error">Неверный JabberID!</string>
|
<string name="invalid_jid_error">Неверный JabberID!</string>
|
||||||
<string name="offline">Не в сети</string>
|
<string name="offline">Не в сети</string>
|
||||||
<string name="online">В сети</string>
|
<string name="online">В сети</string>
|
||||||
|
<string name="clear_chat">Очистить чат</string>
|
||||||
</resources>
|
</resources>
|
@ -25,4 +25,5 @@
|
|||||||
<string name="invalid_jid_error">Invalid JabberID!</string>
|
<string name="invalid_jid_error">Invalid JabberID!</string>
|
||||||
<string name="offline">Offline</string>
|
<string name="offline">Offline</string>
|
||||||
<string name="online">Online</string>
|
<string name="online">Online</string>
|
||||||
|
<string name="clear_chat">Clear chat</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user