npx create-soon-app
npx create-soon-app my-favorites-app
anchor-program/programs/favorites/src/lib.rs
#[account] #[derive(InitSpace)] pub struct Favorites { pub number: u64, #[max_len(50)] pub color: String, #[max_len(5, 50)] pub hobbies: Vec<String> }
pub fn set_favorites( ctx: Context<SetFavorites>, number: u64, color: String, hobbies: Vec<String> ) -> Result<()> { // Store user's favorites context.accounts.favorites.set_inner(Favorites { number, color, hobbies }); Ok(()) }
const wallet = useWallet(); const { publicKey, sendTransaction } = useWallet();
const [number, setNumber] = useState(""); const [color, setColor] = useState(""); const [hobbies, setHobbies] = useState<string[]>([]);
const setFavorites = async () => { const [favoritesPda] = PublicKey.findProgramAddressSync( [Buffer.from("favorites"), publicKey.toBuffer()], programId ); const transaction = await program.methods .setFavorites(new BN(number), color, hobbies) .accounts({ user: wallet.publicKey, favorites: favoritesPda, systemProgram: SystemProgram.programId, }) .transaction(); const hash = await sendTransaction(transaction, connection); };