Skip to content

Commit

Permalink
PWN-897 - Add JS bridge for paste (#2182)
Browse files Browse the repository at this point in the history
  • Loading branch information
gslevinkov authored Feb 7, 2024
1 parent c0e0488 commit 7a7412b
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
<uses-permission android:name="android.permission.USE_BIOMETRIC" />

<uses-permission android:name="com.google.android.gms.permission.AD_ID" />

<application
Expand Down
3 changes: 3 additions & 0 deletions app/src/main/assets/referral_bridge_provider.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,9 @@ window.ReferralBridge = {
showShareDialog: function(link) {
AndroidReferralBridge.showShareDialog(link);
},
getClipboardContent: function() {
return AndroidReferralBridge.getClipboardValue();
},
signMessageAsync: async function(message) {
const result = AndroidReferralBridge.signMessageAsync(message);
return JSON.parse(result)
Expand Down
7 changes: 7 additions & 0 deletions app/src/main/java/org/p2p/wallet/referral/ReferralBridge.kt
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import kotlinx.coroutines.withContext
import org.p2p.core.crypto.toBase64Instance
import org.p2p.solanaj.utils.SolanaMessageSigner
import org.p2p.wallet.infrastructure.network.provider.TokenKeyProvider
import org.p2p.wallet.utils.getClipboardText

private typealias JsResultWrapper = String

Expand Down Expand Up @@ -128,6 +129,12 @@ class ReferralWebViewBridge(
wrapInJsResult(tokenKeyProvider.publicKey)
}

@JavascriptInterface
fun getClipboardValue(): JsResultWrapper {
val context = referralWebView?.context ?: return wrapInJsResult("No Android context found")
return wrapInJsResult(context.getClipboardText(trimmed = true).orEmpty())
}

private fun wrapInJsResult(value: String): JsResultWrapper {
return JsonObject()
.apply { addProperty("value", value) }
Expand Down

0 comments on commit 7a7412b

Please sign in to comment.