Skip to content

Commit

Permalink
Merge pull request #66 from N1CK145/chat
Browse files Browse the repository at this point in the history
Chat
  • Loading branch information
leto authored Feb 3, 2020
2 parents 2928ef7 + 5058257 commit 9195d17
Show file tree
Hide file tree
Showing 15 changed files with 163 additions and 86 deletions.
44 changes: 44 additions & 0 deletions app/src/main/java/org/myhush/silentdragon/Addressbook.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package org.myhush.silentdragon

import org.myhush.silentdragon.chat.Message

object Addressbook {
class Contact {
var nickname = ""
var addressIn = ""
var addressOut = ""
val messageList = ArrayList<Message>()

constructor(nickname: String, addressIn: String, addressOut: String) {
this.nickname = nickname
this.addressIn = addressIn
this.addressOut = addressOut
}
}

val contactList = ArrayList<Contact>()

fun addContact(nickname: String, addressIn: String, addressOut: String) {
contactList.add(Contact(nickname, addressIn, addressOut))
}

fun findContactByInAddress(address: String): Contact? {
contactList.forEach {
if(it.addressIn == address)
return it
}
return null
}

fun findContactByOutAddress(address: String): Contact? {
contactList.forEach {
if (it.addressOut == address)
return it
}
return null
}

fun clear() {
contactList.clear()
}
}
2 changes: 2 additions & 0 deletions app/src/main/java/org/myhush/silentdragon/DataModel.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import com.beust.klaxon.json
import okhttp3.WebSocket
import org.libsodium.jni.NaCl
import org.libsodium.jni.Sodium
import org.myhush.silentdragon.chat.Message
import java.math.BigInteger

object DataModel {
Expand All @@ -20,6 +21,7 @@ object DataModel {
class TransactionItem(val type: String, val datetime: Long, val amount: String, val memo: String?,
val addr: String, val txid: String?, val confirmations: Long)


var mainResponseData : MainResponse? = null
var transactions : List<TransactionItem>? = null

Expand Down
89 changes: 69 additions & 20 deletions app/src/main/java/org/myhush/silentdragon/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ import kotlinx.android.synthetic.main.content_main.*
import org.myhush.silentdragon.DataModel.ConnectionStatus
import org.myhush.silentdragon.DataModel.connStatus
import org.myhush.silentdragon.chat.ChatActivity
import org.myhush.silentdragon.chat.Message
import org.myhush.silentdragon.chat.MessageType
import java.text.DecimalFormat


Expand Down Expand Up @@ -75,10 +77,10 @@ class MainActivity : AppCompatActivity(),
if(DataModel.selectedCurrency == "BTC")
Toast.makeText(applicationContext, "1 HUSH = ${DataModel.currencySymbols[DataModel.selectedCurrency]}${DecimalFormat(" #,##0.00000000")
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()
else(
else
Toast.makeText(applicationContext, "1 HUSH = ${DataModel.currencySymbols[DataModel.selectedCurrency]}${DecimalFormat("#,##0.00")
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()
)
.format(DataModel.currencyValues[DataModel.selectedCurrency])}", Toast.LENGTH_LONG).show()

}

bottomNav.setOnNavigationItemSelectedListener {
Expand Down Expand Up @@ -108,6 +110,18 @@ class MainActivity : AppCompatActivity(),
loadSharedPref()

updateUI(false)

/*///////////////////////////
// CREATE SAMPLE CONTACTS //
Addressbook.clear()
Addressbook.addContact("", "N1CK145", "zN1CK145")
Addressbook.addContact("", "Denio", "zDenio")
Addressbook.addContact("", "Max Mustermann", "zMaxMust")
// //
/////////////////////////// */

}

private fun loadSharedPref() {
Expand Down Expand Up @@ -214,6 +228,11 @@ class MainActivity : AppCompatActivity(),
runOnUiThread {
val fragTx = supportFragmentManager.beginTransaction()

// clear past messages
txns?.forEach {
Addressbook.findContactByInAddress(it.addr)?.messageList?.clear()
}

for (fr in supportFragmentManager.fragments) {
fragTx.remove(fr)
}
Expand All @@ -226,19 +245,37 @@ class MainActivity : AppCompatActivity(),
return@runOnUiThread
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
val fixAdd= "zs12ehfu3pzj23z88up5wefn2psl5akc3m3ctpnmxmyxm4qx3vghlnq98dnu7sv0hdqgn3e20jq2rr"
val fixName = "Netterdon"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Split all the transactions into confirmations = 0 and confirmations > 0
// Unconfirmed first
val unconfirmed = txns.filter { t -> t.confirmations == 0L }
if (unconfirmed.isNotEmpty()) {
for (tx in unconfirmed) {
fragTx.add(
txList.id ,
UnconfirmedTxItemFragment.newInstance(
Klaxon().toJsonString(tx),
""
),
"tag1"
)
if(tx.memo?.length == 0){
fragTx.add(
txList.id ,
UnconfirmedTxItemFragment.newInstance(
Klaxon().toJsonString(tx),
""
),
"tag1"
)
} else {
// test if contact exists
if(Addressbook.findContactByInAddress(tx.addr) == null)
Addressbook.addContact(fixName, tx.addr, fixAdd)
// add message
if(tx.type == "send")
Addressbook.findContactByInAddress(tx.addr)!!.messageList.add(Message(tx.addr, tx, MessageType.SEND))
else
Addressbook.findContactByInAddress(tx.addr)!!.messageList.add(Message(tx.addr, tx, MessageType.RECIEVE))

}

}
}

Expand All @@ -247,15 +284,27 @@ class MainActivity : AppCompatActivity(),
if (confirmed.isNotEmpty()) {
var oddeven = "odd"
for (tx in confirmed) {
fragTx.add(
txList.id,
TransactionItemFragment.newInstance(
Klaxon().toJsonString(tx),
oddeven
),
"tag1"
)
oddeven = if (oddeven == "odd") "even" else "odd"
if(tx.memo?.length == 0){
fragTx.add(
txList.id,
TransactionItemFragment.newInstance(
Klaxon().toJsonString(tx),
oddeven
),
"tag1"
)
oddeven = if (oddeven == "odd") "even" else "odd"
} else {
// test if contact exists
if(Addressbook.findContactByInAddress(tx.addr) == null)
Addressbook.addContact(fixName, tx.addr, fixAdd)
// add message
if(tx.type == "send")
Addressbook.findContactByInAddress(tx.addr)!!.messageList.add(Message(tx.addr, tx, MessageType.SEND))
else
Addressbook.findContactByInAddress(tx.addr)!!.messageList.add(Message(tx.addr, tx, MessageType.RECIEVE))
}

}
}
fragTx.commitAllowingStateLoss()
Expand Down
2 changes: 0 additions & 2 deletions app/src/main/java/org/myhush/silentdragon/SendActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,7 @@ class SendActivity : AppCompatActivity() {
if (DataModel.selectedCurrency == "BTC")
amountUSD.text = "${DataModel.currencySymbols[DataModel.selectedCurrency]} " + DecimalFormat("0.00000000").format(0)
else
{
amountUSD.text = "${DataModel.currencySymbols[DataModel.selectedCurrency]} " + DecimalFormat("0.00").format(0)
}

textViewFee.text = DecimalFormat("0.0000").format(0.0001) + " HUSH"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import android.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_add_contact.*
import org.myhush.silentdragon.Addressbook
import org.myhush.silentdragon.R

class AddContactActivity : AppCompatActivity() {
Expand All @@ -18,7 +19,8 @@ class AddContactActivity : AppCompatActivity() {
var fullname = editText_FullName.text.toString()
var zAddr = editTextZAddress.text.toString()

Addressbook.contactList.add(Addressbook.Contact(fullname, nickName, zAddr))
Addressbook.addContact(fullname, nickName, zAddr)

this.finish()
}
}
Expand Down
27 changes: 0 additions & 27 deletions app/src/main/java/org/myhush/silentdragon/chat/Addressbook.kt

This file was deleted.

19 changes: 3 additions & 16 deletions app/src/main/java/org/myhush/silentdragon/chat/ChatActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,8 @@ import android.support.v4.app.FragmentTransaction
import android.support.v7.app.AppCompatActivity
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.widget.LinearLayout
import android.widget.TableLayout
import kotlinx.android.synthetic.main.activity_chat.*
import kotlinx.android.synthetic.main.content_chat_list.view.*
import org.myhush.silentdragon.*

class ChatActivity : AppCompatActivity() {
Expand All @@ -19,23 +16,14 @@ class ChatActivity : AppCompatActivity() {
setContentView(R.layout.activity_chat)

initListener()
restoreLastChats()
refresh()

swiperefreshChat.setOnRefreshListener {
refresh()
swiperefreshChat.isRefreshing = false
}
}

private fun restoreLastChats() {
DataModel.transactions?.forEach { tx ->
if (!tx.memo.isNullOrEmpty()){
// ADD CHAT BY ADDRESS
}
}
refresh()
}

private fun initListener(){
nav_view.setOnNavigationItemSelectedListener {
when(it.itemId) {
Expand All @@ -62,7 +50,7 @@ class ChatActivity : AppCompatActivity() {
}
}

fun refresh(){
private fun refresh(){
findViewById<LinearLayout>(R.id.ChatTable).removeAllViews()

Addressbook.contactList.forEach {
Expand All @@ -74,9 +62,8 @@ class ChatActivity : AppCompatActivity() {
val fragment = ChatItemFragment()
val fragTx: FragmentTransaction = supportFragmentManager.beginTransaction()

fragment.fullname = contact.fullname
fragment.nickname = contact.nickname
fragment.lastMessage = contact.addressList[0]
fragment.contactAddress = contact.addressIn

fragTx.add(R.id.ChatTable, fragment)
fragTx.commit()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,13 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import kotlinx.android.synthetic.main.content_receive.*
import org.myhush.silentdragon.R

class ChatItemFragment : Fragment() {
var fullname: String = ""
var nickname: String = ""
var lastMessage: String = ""
var contactAddress: String = ""
var v: View? = null

override fun onCreateView (inflater: LayoutInflater, container: ViewGroup?,
Expand All @@ -30,6 +31,7 @@ class ChatItemFragment : Fragment() {
val intent = Intent(activity, ConversationActivity::class.java)

intent.putExtra("displayName", nickname) // Send some information
intent.putExtra("contactAddress", contactAddress)

startActivity(intent)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,48 +1,46 @@
package org.myhush.silentdragon.chat

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.v4.app.FragmentTransaction
import android.widget.EditText
import android.widget.ImageButton
import android.widget.TextView
import kotlinx.android.synthetic.main.activity_conversation.*
import org.myhush.silentdragon.*


class ConversationActivity : AppCompatActivity() {
var displayName = ""
var contact: Addressbook.Contact? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_conversation)
val address = intent.extras.getString("contactAddress")

displayName = intent.extras.getString("displayName")
contact = Addressbook.findContactByInAddress(address)


findViewById<TextView>(R.id.textViewContactName2).text = displayName
findViewById<TextView>(R.id.textView_zAddress).text = contact?.addressIn

buttonSend.setOnClickListener{
sendMessage()
}


contact = Addressbook.contactList[0] // FOR TESTING!!!
restoreChat()
}

private fun sendMessage(){
// FOR TESTING!!!
val memo = findViewById<EditText>(R.id.userInput).text.toString()
findViewById<EditText>(R.id.userInput).text.clear()
var tx = DataModel.TransactionItem("send", 99, "0.00", memo, contact!!.addressList[0], "asdasdasd", 0)
val m = Message("addr", tx)
attachMessage(m)
m.messageType = MessageType.RECIEVE
attachMessage(m)
private fun sendMessage() {
val memo = findViewById<TextView>(R.id.userInput).text.toString()
val tx = DataModel.TransactionItem("", 0, "0", memo, contact!!.addressOut, "0", 0)
DataModel.sendTx(tx)

findViewById<TextView>(R.id.userInput).text = ""
}

private fun restoreChat() {
contact?.messageList?.forEach {
contact?.messageList?.asReversed()?.forEach {
attachMessage(it)
}
}
Expand Down
Loading

0 comments on commit 9195d17

Please sign in to comment.