Skip to content

Commit eeec470

Browse files
[98] add a visual indicator of a successful copy
1 parent 7a00f7f commit eeec470

File tree

3 files changed

+18
-12
lines changed

3 files changed

+18
-12
lines changed

package-lock.json

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,21 @@
1414
"@types/jest": "^29.5.12",
1515
"flag-icons": "^7.2.2",
1616
"jest": "^29.7.0",
17-
"jsdom": "24.1.0",
1817
"jest-environment-jsdom": "^29.7.0",
18+
"jsdom": "24.1.0",
1919
"next": "^14.1.0",
2020
"react": "^18",
2121
"react-dom": "^18",
2222
"react-use": "^17.5.0",
23+
"sonner": "^1.5.0",
2324
"ts-jest": "^29.1.4",
2425
"ts-node": "^10.9.2",
2526
"use-sound": "^4.0.1"
2627
},
2728
"devDependencies": {
29+
"@playwright/test": "^1.45.1",
2830
"@testing-library/dom": "^10.1.0",
2931
"@testing-library/react": "^16.0.0",
30-
"@playwright/test": "^1.45.1",
3132
"@types/node": "^20",
3233
"@types/react": "^18.3.3",
3334
"@types/react-dom": "^18.3.0",

src/components/MotionGenerator.tsx

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@ import { MotionDisplay } from "./MotionDisplay";
1111
import { MotionsFilter } from "./MotionsFilter";
1212
import { useLang } from "@/lib/useLang";
1313
import { IconCopy } from "./icons/Copy";
14+
import { toast, Toaster } from "sonner";
1415

1516
const MotionGenerator = () => {
1617
const [motion, setMotion] = useState<motion | null>(null);
1718
const debateContext = useContext(DebateContext);
1819
const router = useRouter();
1920
const infoslideLabel = useLang("infoslide");
21+
const successfulCopyMessage = useLang("motionCopiedSuccess");
2022

2123
function generateMotion(): motion {
2224
const filteredMotions = motions.filter((motion) => {
@@ -39,7 +41,7 @@ const MotionGenerator = () => {
3941
navigator.clipboard.writeText(
4042
`${motion.motion}\n${infoslideLine}${sourceLine}`
4143
);
42-
displayMotionCopiedMessage();
44+
toast.success(successfulCopyMessage);
4345
}
4446

4547
function saveMotionToContext(): void {
@@ -64,17 +66,9 @@ const MotionGenerator = () => {
6466
setEnabledMotionTypes(newState as any);
6567
};
6668

67-
const [motionCopiedRecently, setMotionCopiedRecently] = useState(false);
68-
69-
function displayMotionCopiedMessage() {
70-
setMotionCopiedRecently(true);
71-
setTimeout(() => {
72-
setMotionCopiedRecently(false);
73-
}, 1000);
74-
}
75-
7669
return (
7770
<div className="flex flex-col items-center text-center">
71+
<Toaster richColors position="bottom-center" />
7872
<section className="hidden xl:flex flex-col space-y-2 max-w-[400px]">
7973
<GenericButton
8074
text={useLang("debateMotionGeneratorRegenerate")}

0 commit comments

Comments
 (0)