diff --git a/frontend/package.json b/frontend/package.json index 9114ed9..79a469a 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -27,20 +27,12 @@ "@web3modal/wagmi": "^5.1.11", "bootstrap": "^5", "bootstrap-icons": "^1.11.3", - "near-api-js": "^5.0.1", + "near-api-js": "^4.0.3", "next": "14.2.5", "react": "^18", "react-dom": "^18", "wagmi": "^2.13.3" }, - "overrides": { - "@near-wallet-selector/ethereum-wallets": { - "near-api-js": "4.0.3" - } - }, - "resolutions": { - "near-api-js": "4.0.3" - }, "devDependencies": { "encoding": "^0.1.13", "eslint": "^9", diff --git a/frontend/src/components/Messages.jsx b/frontend/src/components/Messages.jsx index a658431..c058a33 100644 --- a/frontend/src/components/Messages.jsx +++ b/frontend/src/components/Messages.jsx @@ -1,23 +1,33 @@ +import { useEffect, useState } from "react"; + +function Message({ sender, premium, text }) { + + const [show, setShow] = useState(''); + + useEffect(() => { + setTimeout(() => setShow('show'), 100); + }, []); + + return ( +
+
+
+ {sender} + {premium && ( + Premium + )} +
+

{text}

+
+
+ ); +} + export default function Messages({ messages }) { return ( -
+

Messages

- {messages.map((message, i) => ( -
-
-
- {message.sender} - {message.premium && ( - Premium - )} -
-

{message.text}

-
-
- ))} + {messages.map((message, i) => )}
); } diff --git a/frontend/src/pages/_app.js b/frontend/src/pages/_app.js index 506902a..0d8c2ce 100644 --- a/frontend/src/pages/_app.js +++ b/frontend/src/pages/_app.js @@ -8,13 +8,13 @@ import { Wallet } from "@/wallets/near"; import { NetworkId, GuestbookNearContract } from "@/config"; // Wallet instance -const wallet = new Wallet({ networkId: NetworkId }); +// const wallet = new Wallet({ networkId: NetworkId }); // Optional: Create an access key so the user does not need to sign transactions. Read more about access keys here: https://docs.near.org/concepts/protocol/access-keys -// const wallet = new Wallet({ -// createAccessKeyFor: GuestbookNearContract, -// networkId: NetworkId, -// }); +const wallet = new Wallet({ + createAccessKeyFor: GuestbookNearContract, + networkId: NetworkId, +}); export default function MyApp({ Component, pageProps }) { const [signedAccountId, setSignedAccountId] = useState(""); diff --git a/frontend/src/pages/index.js b/frontend/src/pages/index.js index b78d013..959b1f9 100644 --- a/frontend/src/pages/index.js +++ b/frontend/src/pages/index.js @@ -36,7 +36,7 @@ export default function Home() { const { fieldset, message, donation } = e.target.elements; fieldset.disabled = true; - + // Add message to the guest book const deposit = utils.format.parseNearAmount(donation.value); wallet.callMethod({ @@ -44,16 +44,14 @@ export default function Home() { method: "add_message", args: { text: message.value }, deposit, - }).catch(()=>{ - setMessages(messages.slice(1)); + }).catch(() => { + // rollback to the current messages + setMessages(messages); }); await new Promise(resolve => setTimeout(resolve, 300)); - setMessages([{ sender: signedAccountId, text: message.value, premium: donation.value >= 1 }, ...messages]); - message.value = ""; - donation.value = "0"; fieldset.disabled = false; - message.focus(); + setMessages([{ sender: signedAccountId, text: message.value, premium: donation.value >= 1 }, ...messages]); }; return ( diff --git a/frontend/src/styles/globals.css b/frontend/src/styles/globals.css index a2d80cd..3905a56 100644 --- a/frontend/src/styles/globals.css +++ b/frontend/src/styles/globals.css @@ -115,3 +115,14 @@ a { color-scheme: dark; } } + +.fade-animation .card { + transition: all 0.4s ease-out; + opacity: 0; + background-color: #ffebae +} + +.fade-animation .card.show { + opacity: 1; + background-color: #fff; +} \ No newline at end of file