Skip to content

Commit

Permalink
add session properties builder
Browse files Browse the repository at this point in the history
  • Loading branch information
llbartekll committed Sep 12, 2024
1 parent 5fe606c commit 4d8a36d
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 17 deletions.
4 changes: 3 additions & 1 deletion Example/WalletApp/BusinessLayer/SmartAccount.swift
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@ class SmartAccount {

private var config: Config?

private init() {}
private init() {

}

public func configure(entryPoint: String, chainId: Int) {
self.config = Config(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ final class SessionProposalInteractor {

let supportedRequiredChains = proposal.requiredNamespaces["eip155"]?.chains ?? []
let supportedOptionalChains = proposal.optionalNamespaces?["eip155"]?.chains ?? []
var supportedChains = [Blockchain("eip155:11155111")!]
var supportedChains = supportedRequiredChains + supportedOptionalChains

let smartAccountAddress = try await SmartAccount.instance.getClient().getAddress()

Expand Down Expand Up @@ -44,22 +44,9 @@ final class SessionProposalInteractor {
AlertPresenter.present(message: error.localizedDescription, type: .error)
return false
}
let capabilities = """
{
"0x0B0D91cF5541673b69bA4a1f596E84146Ddd006C":{
"0xaa36a7":{
"atomicBatch":{
"supported":true
}
}
}
}
"""

let sessionProperties: [String: String] = [
"bundler_name": "pimlico",
"capabilities": capabilities
]

let sessionProperties = getSessionProperties()
_ = try await WalletKit.instance.approve(proposalId: proposal.id, namespaces: sessionNamespaces, sessionProperties: sessionProperties)
if let uri = proposal.proposer.redirect?.native {
ReownRouter.goBack(uri: uri)
Expand All @@ -69,6 +56,34 @@ final class SessionProposalInteractor {
}
}

private func getSessionProperties() -> [String: String] {

let sepoliaAtomicBatchCapability = """
{
"0xaa36a7":{
"atomicBatch":{
"supported":true
}
}
}
"""
let capabilities = ["capabilities": sepoliaAtomicBatchCapability]

if let capabilitiesData = try? JSONSerialization.data(withJSONObject: capabilities, options: []),
let capabilitiesJSONString = String(data: capabilitiesData, encoding: .utf8) {

// Create the sessionProperties dictionary with the stringified capabilities
let sessionProperties: [String: String] = [
"bundler_name": "pimlico",
"capabilities": capabilitiesJSONString
]

print(sessionProperties)
return sessionProperties
}
return [:]
}

func reject(proposal: Session.Proposal, reason: RejectionReason = .userRejected) async throws {
try await WalletKit.instance.rejectSession(proposalId: proposal.id, reason: .userRejected)
/* Redirect */
Expand Down

0 comments on commit 4d8a36d

Please sign in to comment.