diff --git a/README.md b/README.md index 5f58778..7eb62f0 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ the Google Play Store. For further information, [click here](release_build_proce Contributions to this project are welcome and encouraged. -## License +## Support -This project is under the GNU Public License v3. For the full license, see [LICENSE](LICENSE). +For support or other questions, join us on [Discord](https://myhush.org/discord), or tweet at [@MyHushTeam](https://twitter.com/MyHushTeam), or toot at our [Mastodon](https://fosstodon.org/@myhushteam), or join [Telegram](http://myhush.org/telegram) or [file an issue](https://github.com/MyHush/SilentDragonAndroid/issues). diff --git a/app/src/main/java/org/myhush/silentdragon/ConnectionManager.kt b/app/src/main/java/org/myhush/silentdragon/ConnectionManager.kt index 4124612..2c9cefb 100644 --- a/app/src/main/java/org/myhush/silentdragon/ConnectionManager.kt +++ b/app/src/main/java/org/myhush/silentdragon/ConnectionManager.kt @@ -33,8 +33,8 @@ object ConnectionManager { initCurrencies() } - // Attempt a connection to the server. If there is no saved connection, we'll set the connection status - // to None + // Attempt a connection to the server + // If there is no saved connection, we'll set the connection status to None private fun makeConnection(directConn : Boolean = true) { val connString = DataModel.getConnString(SilentDragonApp.appContext!!) @@ -79,11 +79,14 @@ object ConnectionManager { DataModel.connStatus = DataModel.ConnectionStatus.CONNECTING + val wormHoleValue = DataModel.getWormholeServer() + println("Connstatus = connecting") val client = OkHttpClient.Builder().connectTimeout(5, TimeUnit.SECONDS).build() - val request = Request.Builder().url("wss://wormhole.myhush.org:443").build() - //val request = Request.Builder().url("ws://192.168.5.187:7070").build() + //val request = Request.Builder().url("wss://wormhole.myhush.org:443").build() + val request = Request.Builder().url("wss://" + wormHoleValue).build() + val listener = WebsocketClient(false) DataModel.ws = client.newWebSocket(request, listener) @@ -115,6 +118,7 @@ object ConnectionManager { i.putExtra("doDisconnect", doDisconnect) SilentDragonApp.appContext?.sendBroadcast(i) } + fun initCurrencies(){ try { DataModel.currencySymbols["AUD"] = "$" @@ -156,9 +160,7 @@ object ConnectionManager { } } }.start() - - - + }catch (e: Exception){ e.printStackTrace() } diff --git a/app/src/main/java/org/myhush/silentdragon/DataModel.kt b/app/src/main/java/org/myhush/silentdragon/DataModel.kt index 4014980..554b452 100644 --- a/app/src/main/java/org/myhush/silentdragon/DataModel.kt +++ b/app/src/main/java/org/myhush/silentdragon/DataModel.kt @@ -12,6 +12,7 @@ import org.libsodium.jni.NaCl import org.libsodium.jni.Sodium import java.math.BigInteger + object DataModel { class MainResponse(val balance: Double, val maxspendable: Double, val maxzspendable: Double? = null, val saplingAddress: String, val tAddress: String, val tokenName: String, @@ -33,8 +34,7 @@ object DataModel { } var ws : WebSocket? = null - - + enum class ConnectionStatus(val status: Int) { DISCONNECTED(1), CONNECTING(2), @@ -329,7 +329,27 @@ object DataModel { Sodium.crypto_hash_sha256(tobin2, tobin1, tobin1.size) return tobin2.toHexString() + } + + /* functions to set custom wormhole value from Settings tab */ + fun setWormholeServer(customWormHole: String) { + val settings = SilentDragonApp.appContext!!.getSharedPreferences("Secret", 0) + val editor = settings.edit() + editor.putString("wormhole", customWormHole) + //editor.apply() + editor.commit() + } + + /* functions to get custom wormhole value */ + fun getWormholeServer() : String? { + val settings = SilentDragonApp.appContext!!.getSharedPreferences("Secret", 0) + val wormHole = settings.getString("secret", "") + + if (wormHole.isNullOrEmpty()) { + return settings.getString("wormhole", "https://wormhole.myhush.org:443" ) + } + return settings.getString("wormhole", "" ) } fun setSecretHex(secretHex: String) { diff --git a/app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt b/app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt index a25a168..c7c2cfc 100644 --- a/app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt +++ b/app/src/main/java/org/myhush/silentdragon/ui/SettingsActivity.kt @@ -2,12 +2,10 @@ package org.myhush.silentdragon.ui import android.content.SharedPreferences -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View -import android.widget.Adapter -import android.widget.AdapterView -import android.widget.ArrayAdapter +import android.widget.* +import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_settings.* import org.myhush.silentdragon.ConnectionManager import org.myhush.silentdragon.DataModel @@ -43,6 +41,24 @@ class SettingsActivity : AppCompatActivity() { updateUI() } + btnSetWormhole.setOnClickListener { + val inputText = findViewById(R.id.wormholeInput) as EditText + val result = findViewById(R.id.lblCurrentWormhole) as TextView + val myhushDefaultWormhole : String = "wormhole.myhush.org:443" + val customWormhole = inputText.getText().toString() + + // set to myhushDefaultWormhole if nothing in EditText (wormholeInput) + if (inputText.text.isBlank()) { + result.text = myhushDefaultWormhole + Toast.makeText(this, "Defaulting to: " + myhushDefaultWormhole, Toast.LENGTH_SHORT).show() + DataModel.setWormholeServer(myhushDefaultWormhole) + } else { + result.text = customWormhole + Toast.makeText(this, "Wormhole set to: " + customWormhole, Toast.LENGTH_SHORT).show() + DataModel.setWormholeServer(customWormhole) + } + } + spinnerCurrency!!.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(parent: AdapterView<*>, view: View, pos: Int, id: Long) { @@ -51,10 +67,11 @@ class SettingsActivity : AppCompatActivity() { DataModel.selectedCurrency = cur // Set cur as selected // Save currency - var pref: SharedPreferences = getSharedPreferences("MainFile",0) + var pref: SharedPreferences = getSharedPreferences("MainFile", 0) var editor: SharedPreferences.Editor = pref.edit() - editor.putString("currency", + editor.putString( + "currency", DataModel.selectedCurrency ) @@ -62,7 +79,6 @@ class SettingsActivity : AppCompatActivity() { } override fun onNothingSelected(parent: AdapterView?) {} - } } @@ -78,8 +94,11 @@ class SettingsActivity : AppCompatActivity() { selectedIndex++ } - - var adapter: ArrayAdapter = ArrayAdapter(this, android.R.layout.simple_spinner_item, items) + var adapter: ArrayAdapter = ArrayAdapter( + this, + android.R.layout.simple_spinner_item, + items + ) adapter.setDropDownViewResource(android.R.layout.simple_spinner_item) spinnerCurrency.adapter = adapter @@ -98,5 +117,7 @@ class SettingsActivity : AppCompatActivity() { lblServerVersion.text = DataModel.mainResponseData?.serverversion ?: getString( R.string.not_connected ) + + lblCurrentWormhole.text = DataModel.getWormholeServer() } } diff --git a/app/src/main/res/layout/activity_about.xml b/app/src/main/res/layout/activity_about.xml index 1a7f629..bf2a6a2 100644 --- a/app/src/main/res/layout/activity_about.xml +++ b/app/src/main/res/layout/activity_about.xml @@ -158,6 +158,41 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/TwitterText" /> + + + + + + + app:layout_constraintTop_toBottomOf="@id/divider4" /> + app:layout_constraintTop_toBottomOf="@id/divider5" /> + app:layout_constraintTop_toBottomOf="@id/divider6" /> + app:layout_constraintTop_toBottomOf="@id/divider7" /> - + app:layout_constraintTop_toBottomOf="@id/divider8" /> + app:layout_constraintTop_toBottomOf="@id/divider9" /> - - - + app:layout_constraintVertical_bias="1.0" + android:focusable="true" + android:focusableInTouchMode="true"> + app:layout_constraintTop_toBottomOf="@+id/divider" /> + + + + + + + +