mirror of
https://github.com/mollyim/monero-wallet-sdk.git
synced 2025-02-05 09:25:32 -05:00
demo: add user settings repository
This commit is contained in:
parent
08de472199
commit
c468972738
@ -0,0 +1,34 @@
|
|||||||
|
package im.molly.monero.demo.data
|
||||||
|
|
||||||
|
import androidx.datastore.core.DataStore
|
||||||
|
import androidx.datastore.preferences.core.Preferences
|
||||||
|
import androidx.datastore.preferences.core.edit
|
||||||
|
import androidx.datastore.preferences.core.stringPreferencesKey
|
||||||
|
import im.molly.monero.demo.data.model.SocksProxy
|
||||||
|
import im.molly.monero.demo.data.model.UserSettings
|
||||||
|
import im.molly.monero.demo.data.model.toSocketAddress
|
||||||
|
import kotlinx.coroutines.flow.map
|
||||||
|
|
||||||
|
class SettingsRepository(
|
||||||
|
private val dataStore: DataStore<Preferences>,
|
||||||
|
) {
|
||||||
|
companion object {
|
||||||
|
val PREF_SOCKS_PROXY = stringPreferencesKey("socks_proxy")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getUserSettings() = dataStore.data.map { prefs ->
|
||||||
|
UserSettings(
|
||||||
|
socksProxy = prefs[PREF_SOCKS_PROXY]?.let { SocksProxy(it.toSocketAddress()) }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun setSocksProxy(socksProxy: SocksProxy?) {
|
||||||
|
dataStore.edit { prefs ->
|
||||||
|
if (socksProxy != null) {
|
||||||
|
prefs[PREF_SOCKS_PROXY] = socksProxy.address().toString()
|
||||||
|
} else {
|
||||||
|
prefs.remove(PREF_SOCKS_PROXY)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package im.molly.monero.demo.data.model
|
||||||
|
|
||||||
|
import java.net.InetSocketAddress
|
||||||
|
import java.net.Proxy
|
||||||
|
import java.net.SocketAddress
|
||||||
|
|
||||||
|
data class SocksProxy(val socketAddress: SocketAddress) : Proxy(Type.SOCKS, socketAddress)
|
||||||
|
|
||||||
|
fun String.toSocketAddress(): SocketAddress =
|
||||||
|
try {
|
||||||
|
val index = lastIndexOf(':')
|
||||||
|
val host = substring(0, index)
|
||||||
|
val port = substring(index + 1).toInt()
|
||||||
|
InetSocketAddress.createUnresolved(host, port)
|
||||||
|
} catch (t: IndexOutOfBoundsException) {
|
||||||
|
throw IllegalArgumentException()
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package im.molly.monero.demo.data.model
|
||||||
|
|
||||||
|
import java.net.Proxy
|
||||||
|
|
||||||
|
data class UserSettings(
|
||||||
|
val socksProxy: SocksProxy?,
|
||||||
|
) {
|
||||||
|
val activeProxy: Proxy = socksProxy ?: Proxy.NO_PROXY
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user