Transferring a NFT token based on a trade offer

I’ve successfully used the Moralis.transfer function to transfer just ETH or just a NFT token. I have closely followed the Cloning Rarible Series and would like to implement a trading system.

User A [Nft1, Nft2, Nft3][100ETH]
User B [][100ETH]

User B sends a trade offer to user A for Nft1 and 5ETH (paying 5ETH for Nft1). If User A likes the trade offer, he accepts it and exchanges Nft1 for 5ETH of User B.

Now we have
User A [Nft2, Nf3][105ETH]
User B [Nft1][95ETH]

I am a beginner to blockchain development but I am a fast learner. How would one go about implementing a trade offer system?

It sounds to me that you describe a marketplace smart contract where user A ads Nft1, Nft2, Nft3 and user B buys Nft1 from the marketplace and the marketplace smart contract intermediates that trade.

The marketplace smart contract regarding this functionality (user A adds the nft to marketplace and user B buys it from the marketplace) is already integrated, the rarible cloning video series already covered that. What is missing and I am interested in is P2P trading not public marketplace trading.
ex: user A offers 2 ETH to user B for Nft1. (this offer is not listed on public marketplace and only user B can accept or deny this offer).

Ok, then you can modify the marketplace smart contract to also use an address field for who is allowed to buy an nft, and user A will set the address of user B as the only address that can buy that nft.