Skip to content
Snippets Groups Projects
Commit 27379b1b authored by xaralis's avatar xaralis
Browse files

feat: handle 429 when adding new posts

parent a250460b
Branches
No related tags found
No related merge requests found
Pipeline #2053 passed
...@@ -21,10 +21,15 @@ const AddPostForm = ({ className }) => { ...@@ -21,10 +21,15 @@ const AddPostForm = ({ className }) => {
const [addingPost, addingPostError] = useActionState(addPost, { const [addingPost, addingPostError] = useActionState(addPost, {
content: text, content: text,
}); });
const [addingProposal, addingProposalError] = useActionState(addPost, { const [addingProposal, addingProposalError] = useActionState(addProposal, {
content: text, content: text,
}); });
const apiError = addingPostError || addingProposalError;
const is429ApiError =
apiError &&
apiError.toString().indexOf("Unexpected status code 429") !== -1;
const onOutsideClick = useCallback(() => { const onOutsideClick = useCallback(() => {
setExpanded(false); setExpanded(false);
}, [setExpanded]); }, [setExpanded]);
...@@ -113,14 +118,18 @@ const AddPostForm = ({ className }) => { ...@@ -113,14 +118,18 @@ const AddPostForm = ({ className }) => {
} }
> >
<div className="space-y-4"> <div className="space-y-4">
{addingPostError && ( {apiError && is429ApiError && (
<ErrorMessage> <div className="alert alert--warning">
Při přidávání příspěvku došlo k problému: {addingPostError}. <i className="alert__icon ico--clock text-lg" />
</ErrorMessage> <span>
<strong>Zpomal!</strong> Další příspěvek můžeš přidat nejdříve
po 1 minutě od přidání posledního.
</span>
</div>
)} )}
{addingProposalError && ( {apiError && !is429ApiError && (
<ErrorMessage> <ErrorMessage>
Při přidávání příspěvku došlo k problému: {addingProposalError}. Při přidávání příspěvku došlo k problému: {apiError}.
</ErrorMessage> </ErrorMessage>
)} )}
......
...@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useState } from "react"; ...@@ -2,6 +2,7 @@ import React, { useCallback, useEffect, useState } from "react";
import { Helmet } from "react-helmet-async"; import { Helmet } from "react-helmet-async";
import Joyride, { EVENTS } from "react-joyride"; import Joyride, { EVENTS } from "react-joyride";
import ReactPlayer from "react-player/lazy"; import ReactPlayer from "react-player/lazy";
import { useKeycloak } from "@react-keycloak/web";
import useWindowSize from "@rooks/use-window-size"; import useWindowSize from "@rooks/use-window-size";
import { import {
...@@ -66,6 +67,11 @@ const Home = () => { ...@@ -66,6 +67,11 @@ const Home = () => {
onEndProgramPointConfirm, onEndProgramPointConfirm,
onEndProgramPointCancel, onEndProgramPointCancel,
] = useActionConfirm(endProgramPoint, programEntry); ] = useActionConfirm(endProgramPoint, programEntry);
const { keycloak } = useKeycloak();
const login = useCallback(() => {
keycloak.login();
}, [keycloak]);
useEffect(() => { useEffect(() => {
if (isLg && !localStorage.getItem(tourLSKey)) { if (isLg && !localStorage.getItem(tourLSKey)) {
...@@ -303,6 +309,18 @@ const Home = () => { ...@@ -303,6 +309,18 @@ const Home = () => {
Rozprava je uzavřena - příspěvky teď nelze přidávat. Rozprava je uzavřena - příspěvky teď nelze přidávat.
</p> </p>
)} )}
{programEntry.discussionOpened && !isAuthenticated && (
<p className="alert alert--light items-center mb-4">
<i className="alert__icon ico--info text-lg" />
<span>
Pokud chceš přidat nový příspěvek,{" "}
<button onClick={login} className="underline cursor-pointer">
přihlaš se pomocí Pirátské identity
</button>
.
</span>
</p>
)}
{programEntry.discussionOpened && isAuthenticated && user.isBanned && ( {programEntry.discussionOpened && isAuthenticated && user.isBanned && (
<p className="alert alert--error items-center mb-4"> <p className="alert alert--error items-center mb-4">
<i className="alert__icon ico--warning text-lg" /> <i className="alert__icon ico--warning text-lg" />
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment