session-android/src/org/thoughtcrime/securesms/loki/redesign/activities/HomeActivity.kt

94 lines
3.7 KiB
Kotlin
Raw Normal View History

2019-12-17 14:27:59 +01:00
package org.thoughtcrime.securesms.loki.redesign.activities
2019-12-17 15:15:13 +01:00
import android.content.Intent
2019-12-17 14:27:59 +01:00
import android.os.Bundle
import android.support.v7.widget.LinearLayoutManager
import android.view.Menu
import android.view.MenuItem
2019-12-17 14:27:59 +01:00
import kotlinx.android.synthetic.main.activity_home.*
import network.loki.messenger.R
import org.thoughtcrime.securesms.ApplicationContext
import org.thoughtcrime.securesms.PassphraseRequiredActionBarActivity
2019-12-17 15:15:13 +01:00
import org.thoughtcrime.securesms.conversation.ConversationActivity
2019-12-17 14:27:59 +01:00
import org.thoughtcrime.securesms.database.DatabaseFactory
2019-12-17 15:15:13 +01:00
import org.thoughtcrime.securesms.database.model.ThreadRecord
import org.thoughtcrime.securesms.loki.redesign.utilities.push
import org.thoughtcrime.securesms.loki.redesign.views.ConversationView
2019-12-17 14:27:59 +01:00
import org.thoughtcrime.securesms.util.TextSecurePreferences
2019-12-17 15:15:13 +01:00
class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListener {
2019-12-17 14:27:59 +01:00
// region Lifecycle
2019-12-17 14:27:59 +01:00
constructor() : super()
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
super.onCreate(savedInstanceState, isReady)
// Set content view
setContentView(R.layout.activity_home)
// Set title
supportActionBar!!.title = "Messages"
// Set up recycler view
val cursor = DatabaseFactory.getThreadDatabase(this).conversationList
val conversationAdapter = HomeAdapter(this, cursor)
2019-12-17 15:15:13 +01:00
conversationAdapter.conversationClickListener = this
recyclerView.adapter = conversationAdapter
2019-12-17 14:27:59 +01:00
recyclerView.layoutManager = LinearLayoutManager(this)
2019-12-17 15:15:13 +01:00
// Set up new conversation button
newConversationButton.setOnClickListener { createPrivateChat() }
2019-12-17 14:27:59 +01:00
// Set up public chats and RSS feeds if needed
if (TextSecurePreferences.getLocalNumber(this) != null) {
val application = ApplicationContext.getInstance(this)
application.createDefaultPublicChatsIfNeeded()
application.createRSSFeedsIfNeeded()
application.lokiPublicChatManager.startPollersIfNeeded()
application.startRSSFeedPollersIfNeeded()
}
}
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
menuInflater.inflate(R.menu.menu_home, menu)
return true
}
// endregion
2019-12-17 15:15:13 +01:00
// region Interaction
override fun onOptionsItemSelected(item: MenuItem): Boolean {
val id = item.getItemId()
when (id) {
R.id.joinPublicChatItem -> joinPublicChat()
else -> { /* Do nothing */ }
}
return super.onOptionsItemSelected(item)
}
2019-12-17 15:15:13 +01:00
override fun onConversationClick(view: ConversationView) {
val thread = view.thread ?: return
openConversation(thread)
}
override fun onLongConversationClick(view: ConversationView) {
// TODO: Implement
}
private fun openConversation(thread: ThreadRecord) {
val intent = Intent(this, ConversationActivity::class.java)
intent.putExtra(ConversationActivity.ADDRESS_EXTRA, thread.recipient.getAddress())
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, thread.threadId)
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, thread.distributionType)
intent.putExtra(ConversationActivity.TIMING_EXTRA, System.currentTimeMillis())
intent.putExtra(ConversationActivity.LAST_SEEN_EXTRA, thread.lastSeen)
intent.putExtra(ConversationActivity.STARTING_POSITION_EXTRA, -1)
push(intent)
}
private fun createPrivateChat() {
val intent = Intent(this, CreatePrivateChatActivity::class.java)
2019-12-17 15:15:13 +01:00
startActivity(intent)
}
private fun joinPublicChat() {
val intent = Intent(this, JoinPublicChatActivity::class.java)
startActivity(intent)
}
// endregion
2019-12-17 14:27:59 +01:00
}