Approved Transactions don't show up in Gnosis Safe under Transaction Queue

Hi

I sent multiple transactions to Gnosis Safe via gnosis-core-sdk according to their README, approved the transaction by MetaMask and can see the approval also in Etherscan.io. However, at Gnosis Safe I can't find these transactions in the Transaction Queue and thus the other required parties can't give their own approval.

Here is the Gnosis Safe: https://rinkeby.etherscan.io/address/0x57A7629def42E074d115ADAeEa2711232AB56759

Two times an "Approve Hash" transaction can be found which was done by function-calls in the core-sdk. The third transaction "Execute" was an example made directly within the UI of Gnosis Safe (failed due to some errors, but this doesn't matter for now)

Here is my code:

export async function createTransactions(safeAddress: string) {
    const prov: any = await detectEthereumProvider();
    const provider = new ethers.providers.Web3Provider(prov);

    const owner1 = provider.getSigner(0);

    const safe = await loadSafe(safeAddress)

    const contractAddress = "0xB848Fe6cE7B8294E11309e12F50DFc3baC5D7Ae8";

    const contract = new ethers.Contract(contractAddress, abi, provider);

    const ethAdapter = new EthersAdapter({
        ethers,
        signer: owner1
    })


    const txs: MetaTransactionData[] = [
        {
            to: contract.address,
            value: '0',
            data: contract.interface.encodeFunctionData('mint', [
                await owner1.getAddress(),
                '1100000000000000000' // 1.1 ERC20
            ])
        },
        {
            to: contract.address,
            value: '0',
            data: contract.interface.encodeFunctionData('mint', [
                '0xC16f5C62b29704F79BECb2733cb7E12a91383261',
                '100000000000000000' // 0.1 ERC20
            ])
        }
    ]

    console.log(txs);

    const safeSdk = await safe.connect({ ethAdapter, safeAddress, isL1SafeMasterCopy: false })
    const multiSendTx = await safeSdk.createTransaction(txs)
    console.log(multiSendTx);
    const txHash = await safeSdk.getTransactionHash(multiSendTx)
    console.log("Sign", txHash)

    const txResponse1 = await safeSdk.approveTransactionHash(txHash)
    await txResponse1.transactionResponse?.wait()

    console.log('HASH', txResponse1.hash)

    await safeSdk.signTransaction(multiSendTx)

    /*const txResponse = await safeSdk.executeTransaction(multiSendTx)
    console.log('HASH', txResponse.hash)
    await txResponse.transactionResponse?.wait()*/
}

I had to comment out the latest 3 lines with "executeTransaction" because it returned an error
"Error: There is 1 signature missing", which is actually true because the 2. owner is still missing giving their approval. But as I wrote above, the second owner can't approve at Gnosis Safe because this contract interaction won't show up there in the Gnosis Safe UI.

What do I wrong here?

Hey did you figure this out? Same boat.

I had a call with nice people from Gnosis Safe about my issue. They pointed me into the repository https://github.com/gnosis/safe-apps-sdk, where a proposeTransaction method exists which will lead to a listing under pending transactions in Gnosis Safe App according to their statements.

They also referred to this folder "guides" in the core-sdk: https://github.com/gnosis/safe-core-sdk/tree/main/packages/guides, which is very helpful to undestand the different packages and repositories and how they play well together.

I could not try this yet, my team plan this in for next week.
However, I think it is worth to already tell you about what they told me at least :slight_smile:

Please tell here as soon as you could solve the problem, I will do it too.