|
1 | 1 | import { commons, universal, v1, v2 } from '@0xsequence/core'
|
2 | 2 | import { migrator } from '@0xsequence/migration'
|
3 | 3 | import { ethers } from 'ethers'
|
4 |
| -import { ConfigTracker, PresignedConfig, PresignedConfigLink } from '../../tracker' |
| 4 | +import { ConfigTracker, PresignedConfig, PresignedConfigLink, SignerSignature } from '../../tracker' |
5 | 5 | import { Sessions, SignatureType, Transaction } from './sessions.gen'
|
6 | 6 |
|
7 | 7 | export class RemoteConfigTracker implements ConfigTracker, migrator.PresignedMigrationTracker {
|
@@ -56,21 +56,36 @@ export class RemoteConfigTracker implements ConfigTracker, migrator.PresignedMig
|
56 | 56 | wallet: string
|
57 | 57 | digest: string
|
58 | 58 | chainId: ethers.BigNumberish
|
59 |
| - signatures: string[] |
| 59 | + signatures: string[] | SignerSignature[] |
60 | 60 | }): Promise<void> {
|
61 | 61 | let filteredSignatures = args.signatures
|
62 | 62 | if (this.onlyRecoverable) {
|
63 | 63 | filteredSignatures = filteredSignatures.filter(signature => {
|
64 |
| - return commons.signer.canRecover(signature) |
65 |
| - }) |
| 64 | + if (typeof signature === 'string') { |
| 65 | + return commons.signer.canRecover(signature) |
| 66 | + } else { |
| 67 | + // We "recover" using the included address |
| 68 | + return !!signature.address |
| 69 | + } |
| 70 | + }) as string[] | SignerSignature[] |
66 | 71 | }
|
67 | 72 |
|
68 |
| - await this.sessions.saveSignerSignatures({ |
69 |
| - wallet: args.wallet, |
70 |
| - digest: args.digest, |
71 |
| - chainID: numberString(args.chainId), |
72 |
| - signatures: filteredSignatures |
73 |
| - }) |
| 73 | + if (filteredSignatures.length === 0 || typeof args.signatures[0] === 'string') { |
| 74 | + await this.sessions.saveSignerSignatures({ |
| 75 | + wallet: args.wallet, |
| 76 | + digest: args.digest, |
| 77 | + chainID: numberString(args.chainId), |
| 78 | + signatures: filteredSignatures as string[] |
| 79 | + }) |
| 80 | + } else { |
| 81 | + await this.sessions.saveSignerSignatures2({ |
| 82 | + wallet: args.wallet, |
| 83 | + digest: args.digest, |
| 84 | + chainID: numberString(args.chainId), |
| 85 | + // Rename "address" to "signer" |
| 86 | + signatures: (filteredSignatures as SignerSignature[]).map(({ address, signature }) => ({ signer: address, signature })) |
| 87 | + }) |
| 88 | + } |
74 | 89 | }
|
75 | 90 |
|
76 | 91 | async configOfImageHash(args: { imageHash: string }): Promise<commons.config.Config | undefined> {
|
|
0 commit comments