mirror of
https://github.com/pezkuwichain/pezkuwi-wallet-android.git
synced 2026-04-22 02:07:58 +00:00
Initial commit: Pezkuwi Wallet Android
Security hardened release: - Code obfuscation enabled (minifyEnabled=true, shrinkResources=true) - Sensitive files excluded (google-services.json, keystores) - Branch.io key moved to BuildConfig placeholder - Updated dependencies: OkHttp 4.12.0, Gson 2.10.1, BouncyCastle 1.77 - Comprehensive ProGuard rules for crypto wallet - Navigation 2.7.7, Lifecycle 2.7.0, ConstraintLayout 2.1.4
This commit is contained in:
@@ -0,0 +1 @@
|
||||
/build
|
||||
@@ -0,0 +1,23 @@
|
||||
apply plugin: 'kotlin-parcelize'
|
||||
|
||||
android {
|
||||
namespace 'io.novafoundation.nova.feature_wallet_connect_api'
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation project(':feature-account-api')
|
||||
implementation project(':feature-external-sign-api')
|
||||
implementation project(':feature-deep-linking')
|
||||
|
||||
implementation project(':common')
|
||||
|
||||
implementation coroutinesDep
|
||||
|
||||
implementation androidDep
|
||||
implementation materialDep
|
||||
implementation constraintDep
|
||||
|
||||
testImplementation jUnitDep
|
||||
testImplementation mockitoDep
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
|
||||
</manifest>
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package io.novafoundation.nova.feature_wallet_connect_api.di
|
||||
|
||||
import io.novafoundation.nova.feature_wallet_connect_api.di.deeplinks.WalletConnectDeepLinks
|
||||
import io.novafoundation.nova.feature_wallet_connect_api.domain.sessions.WalletConnectSessionsUseCase
|
||||
import io.novafoundation.nova.feature_wallet_connect_api.presentation.WalletConnectService
|
||||
|
||||
interface WalletConnectFeatureApi {
|
||||
|
||||
val walletConnectService: WalletConnectService
|
||||
|
||||
val sessionsUseCase: WalletConnectSessionsUseCase
|
||||
|
||||
val walletConnectDeepLinks: WalletConnectDeepLinks
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package io.novafoundation.nova.feature_wallet_connect_api.di.deeplinks
|
||||
|
||||
import io.novafoundation.nova.feature_deep_linking.presentation.handling.DeepLinkHandler
|
||||
|
||||
class WalletConnectDeepLinks(val deepLinkHandlers: List<DeepLinkHandler>)
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package io.novafoundation.nova.feature_wallet_connect_api.domain.sessions
|
||||
|
||||
import io.novafoundation.nova.feature_account_api.domain.model.MetaAccount
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
interface WalletConnectSessionsUseCase {
|
||||
|
||||
fun activeSessionsNumberFlow(): Flow<Int>
|
||||
|
||||
fun activeSessionsNumberFlow(metaAccount: MetaAccount): Flow<Int>
|
||||
|
||||
suspend fun activeSessionsNumber(): Int
|
||||
|
||||
suspend fun syncActiveSessions()
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
package io.novafoundation.nova.feature_wallet_connect_api.presentation
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import io.novafoundation.nova.common.utils.Event
|
||||
|
||||
interface WalletConnectService {
|
||||
|
||||
val onPairErrorLiveData: LiveData<Event<Throwable>>
|
||||
|
||||
fun connect()
|
||||
|
||||
fun disconnect()
|
||||
|
||||
fun pair(uri: String)
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
package io.novafoundation.nova.feature_wallet_connect_api.presentation
|
||||
|
||||
import io.novafoundation.nova.common.utils.formatting.format
|
||||
|
||||
class WalletConnectSessionsModel(val connections: String?)
|
||||
|
||||
fun mapNumberOfActiveSessionsToUi(activeSessions: Int): WalletConnectSessionsModel {
|
||||
return if (activeSessions > 0) {
|
||||
WalletConnectSessionsModel(activeSessions.format())
|
||||
} else {
|
||||
WalletConnectSessionsModel(null)
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package io.novafoundation.nova.feature_wallet_connect_api.presentation.utils
|
||||
|
||||
import android.net.Uri
|
||||
|
||||
object WalletConnectUtils {
|
||||
fun isWalletConnectPairingLink(data: Uri): Boolean {
|
||||
val isPezkuwiLink = data.scheme == "pezkuwiwallet" && data.host == "wc"
|
||||
val isLinkFromOtherSource = data.scheme == "wc"
|
||||
val isWalletConnectLink = isPezkuwiLink || isLinkFromOtherSource
|
||||
|
||||
val isPairing = "symKey" in data.toString()
|
||||
return isWalletConnectLink && isPairing
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user