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