Skip to content

Commit

Permalink
Added my and contact qr-code.
Browse files Browse the repository at this point in the history
  • Loading branch information
Revertron committed Jan 19, 2023
1 parent ace4331 commit a9751c0
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 24 deletions.
1 change: 1 addition & 0 deletions apps/Android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ dependencies {

implementation 'org.bouncycastle:bcpkix-jdk18on:1.72'
implementation "io.getstream:avatarview-coil:1.0.4"
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
implementation 'junit:junit:4.12'

testImplementation 'junit:junit:4.13.2'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ import android.view.MenuItem
import android.view.View
import android.widget.Toast
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.Toolbar
import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.BarcodeEncoder
import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters
import org.bouncycastle.util.encoders.Hex
import java.net.URLEncoder
Expand All @@ -30,6 +33,8 @@ class AccountsActivity: BaseActivity(), Toolbar.OnMenuItemClickListener {
var name = accountInfo.name
val public = Hex.toHexString((accountInfo.keyPair.public as Ed25519PublicKeyParameters).encoded).uppercase()

val qrCodeImageView = findViewById<AppCompatImageView>(R.id.qr_code)

val myNameEdit = findViewById<AppCompatEditText>(R.id.contact_name)
myNameEdit.setText(name)
// Saving the name when it changes
Expand All @@ -40,6 +45,7 @@ class AccountsActivity: BaseActivity(), Toolbar.OnMenuItemClickListener {
val newName = s.toString()
if (getStorage().updateName(accountNumber, newName)) {
name = newName
updateQrCode(name, public, qrCodeImageView)
}
}
})
Expand Down Expand Up @@ -76,9 +82,7 @@ class AccountsActivity: BaseActivity(), Toolbar.OnMenuItemClickListener {
true
}

findViewById<View>(R.id.button_qrcode).setOnClickListener {
Toast.makeText(applicationContext, getString(R.string.not_yet_implemented) , Toast.LENGTH_SHORT).show()
}
updateQrCode(name, public, qrCodeImageView)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.view.MenuItem
import android.view.View
import android.widget.Toast
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.Toolbar
import org.bouncycastle.util.encoders.Hex
import java.net.URLEncoder
Expand All @@ -31,7 +32,11 @@ class ContactActivity: BaseActivity() {

findViewById<AppCompatEditText>(R.id.contact_name).setText(name)
val pubKeyEdit = findViewById<AppCompatEditText>(R.id.contact_public_key)
pubKeyEdit.setText(Hex.toHexString(pubkey))
val public = Hex.toHexString(pubkey)
pubKeyEdit.setText(public)

val qrCodeImageView = findViewById<AppCompatImageView>(R.id.qr_code)
updateQrCode(name, public, qrCodeImageView)

findViewById<View>(R.id.button_copy).setOnClickListener {
val clipboard: ClipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
Expand Down Expand Up @@ -59,10 +64,6 @@ class ContactActivity: BaseActivity() {
Toast.makeText(applicationContext,R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
true
}

findViewById<View>(R.id.button_qrcode).setOnClickListener {
Toast.makeText(applicationContext, getString(R.string.not_yet_implemented) , Toast.LENGTH_SHORT).show()
}
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
Expand Down
11 changes: 11 additions & 0 deletions apps/Android/app/src/main/java/com/revertron/mimir/Utils.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@ import android.content.Context
import android.content.Intent
import android.os.Build
import android.util.Log
import android.widget.ImageView
import androidx.core.app.NotificationCompat
import com.google.zxing.BarcodeFormat
import com.journeyapps.barcodescanner.BarcodeEncoder
import com.revertron.mimir.ui.Contact
import org.bouncycastle.crypto.params.Ed25519PublicKeyParameters
import org.bouncycastle.util.encoders.DecoderException
import org.bouncycastle.util.encoders.Hex
import java.net.InetAddress
import java.net.NetworkInterface
import java.net.URLEncoder
import java.util.*
import kotlin.math.abs

Expand Down Expand Up @@ -62,6 +66,13 @@ fun getMimirUriHost(): String {
return "mm.yggdrasil.link"
}

fun updateQrCode(name: String, pubKey: String, imageView: ImageView) {
val encoded = URLEncoder.encode(name, "UTF-8")
val link = "mimir://mm/u/${pubKey}/$encoded"
val qrCode = BarcodeEncoder().encodeBitmap(link, BarcodeFormat.QR_CODE, 600, 600)
imageView.setImageBitmap(qrCode)
}

fun getYggdrasilAddress(): InetAddress? {
val interfaces: List<NetworkInterface> = try {
Collections.list(NetworkInterface.getNetworkInterfaces())
Expand Down
21 changes: 13 additions & 8 deletions apps/Android/app/src/main/res/layout/activity_accounts.xml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,18 @@
app:layout_constraintLeft_toLeftOf="parent"
android:editable="false" />

<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/qr_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/contact_public_key"
android:src="@drawable/ic_qrcode" />

<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/share_buttons"
android:layout_width="match_parent"
Expand All @@ -76,7 +88,7 @@
android:layout_marginTop="8dp"
android:weightSum="5"
android:gravity="center"
app:layout_constraintTop_toBottomOf="@id/contact_public_key"
app:layout_constraintTop_toBottomOf="@id/qr_code"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">

Expand All @@ -94,13 +106,6 @@
android:layout_weight="1"
android:padding="16dp"
android:src="@drawable/ic_link" />
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/button_qrcode"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="16dp"
android:src="@drawable/ic_qrcode" />
</androidx.appcompat.widget.LinearLayoutCompat>


Expand Down
21 changes: 13 additions & 8 deletions apps/Android/app/src/main/res/layout/activity_contact.xml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,18 @@
app:layout_constraintLeft_toLeftOf="parent"
android:editable="false" />

<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/qr_code"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="16dp"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toBottomOf="@id/contact_public_key"
android:src="@drawable/ic_qrcode" />

<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/share_buttons"
android:layout_width="match_parent"
Expand All @@ -74,7 +86,7 @@
android:layout_marginTop="8dp"
android:weightSum="5"
android:gravity="center"
app:layout_constraintTop_toBottomOf="@id/contact_public_key"
app:layout_constraintTop_toBottomOf="@id/qr_code"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent">

Expand All @@ -92,13 +104,6 @@
android:layout_weight="1"
android:padding="16dp"
android:src="@drawable/ic_link" />
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/button_qrcode"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="16dp"
android:src="@drawable/ic_qrcode" />
</androidx.appcompat.widget.LinearLayoutCompat>


Expand Down

0 comments on commit a9751c0

Please sign in to comment.