diff --git a/package.json b/package.json index eb837a6ff9b010af92d89bb729f1471d68200b07..ada8ebb33a1bb911c21955b80df3a68349087c35 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "react-dom": "^17.0.2", "react-router-dom": "^5.2.0", "react-scripts": "4.0.3", + "react-toastify": "^7.0.4", "sass": "^1.35.2", "typescript": "^4.1.2", "web-vitals": "^1.0.1" diff --git a/src/App.tsx b/src/App.tsx index 346a66d2c96875749143bd1d3e98d297e82d7188..919aef497e28e0a971fd6f8e308ffb8e44109365 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,7 +5,8 @@ import Routes from './components/Routes/Routes' import { useAuth } from './hooks/useAuth' import { UserContext } from './hooks/userContext' import { User } from './models/user.model' - +import { ToastContainer } from 'react-toastify' +import 'react-toastify/dist/ReactToastify.css' function App() { const { loginUser, error, isUserLogged, getUser, logoutUser } = useAuth() const [isLogged, setisLogged] = useState<boolean>(false) @@ -35,6 +36,10 @@ function App() { <Routes /> </Layout> </UserContext.Provider> + <ToastContainer + progressClassName="toastProgress" + bodyClassName="toastBody" + /> </BrowserRouter> ) } diff --git a/src/services/monthlyNews.service.ts b/src/services/monthlyNews.service.ts index 5bc55139c5916e3c6b200f50f1ef3c3ca8a86182..81a04a3e8db1fd2ae992e01cdf1374729588067b 100644 --- a/src/services/monthlyNews.service.ts +++ b/src/services/monthlyNews.service.ts @@ -1,6 +1,7 @@ import axios from 'axios' import { IMonthlyNews } from '../models/monthlyNews.model' import { IPoll } from '../models/poll.model' +import { toast } from 'react-toastify' export class MonthlyNewsService { private readonly _apiUrl: string constructor() { @@ -33,7 +34,9 @@ export class MonthlyNewsService { }, } ) + toast.success('Monthly news succesfully created !') } catch (e) { + toast.error('Failed to create monthly news') console.log(e) } } @@ -59,6 +62,7 @@ export class MonthlyNewsService { if (data == {}) { return null } + return data as IMonthlyNews } catch (e) { console.log('error', e) @@ -120,7 +124,9 @@ export class MonthlyNewsService { }, } ) + toast.success('Poll succesfully created !') } catch (e) { + toast.error('Failed to create poll') console.log(e) } } diff --git a/src/styles/_toast.scss b/src/styles/_toast.scss new file mode 100644 index 0000000000000000000000000000000000000000..d9073c1932b5bfa240f71cd3f46dd39ec8194008 --- /dev/null +++ b/src/styles/_toast.scss @@ -0,0 +1,10 @@ +@import 'config/colors'; + +.toastBody { + color: $dark-light; + font-size: 1rem !important; + font-weight: bold; +} +.toastProgress { + background: white !important; +} diff --git a/src/styles/index.scss b/src/styles/index.scss index 222fb1933bf89cb70182a2a4bc1919e7d1d8f041..7f768636cde527ced4eb2eba22fbc3bca3eedb64 100644 --- a/src/styles/index.scss +++ b/src/styles/index.scss @@ -2,9 +2,8 @@ @import 'config/colors'; @import 'config/typography'; @import 'config/layout'; - -// To customize bulma variables, we set them before importing bulma -// @import 'bulma/bulma.sass'; +@import 'config/layout'; +@import 'toast'; * { margin: 0; diff --git a/yarn.lock b/yarn.lock index 796a535d18d6220b3c74d1fad02d4ef79c4b3388..615e127188890abf2a22512ae99474769186a768 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3435,11 +3435,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@^2.2.6: - version "2.3.1" - resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" - integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== - clean-css@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" @@ -3470,6 +3465,11 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +clsx@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -4395,11 +4395,6 @@ dotenv@8.2.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== -draftjs-utils@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/draftjs-utils/-/draftjs-utils-0.10.2.tgz#a7f16d2c1c174ac38ba3bbf700c256f176b2699c" - integrity sha512-EstHqr3R3JVcilJrBaO/A+01GvwwKmC7e4TCjC7S94ZeMh4IVmf60OuQXtHHpwItK8C2JCi3iljgN5KHkJboUg== - duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -5927,11 +5922,6 @@ html-minifier-terser@^5.0.1: relateurl "^0.2.7" terser "^4.6.3" -html-to-draftjs@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/html-to-draftjs/-/html-to-draftjs-1.5.0.tgz#0df0eabf429deaedb63f5c859889e2c983606e86" - integrity sha512-kggLXBNciKDwKf+KYsuE+V5gw4dZ7nHyGMX9m0wy7urzWjKGWyNFetmArRLvRV0VrxKN70WylFsJvMTJx02OBQ== - html-webpack-plugin@4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-4.5.0.tgz#625097650886b97ea5dae331c320e3238f6c121c" @@ -7322,13 +7312,6 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= -linkify-it@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-2.2.0.tgz#e3b54697e78bf915c70a38acd78fd09e0058b1cf" - integrity sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw== - dependencies: - uc.micro "^1.0.1" - load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" @@ -9573,17 +9556,6 @@ react-dom@^17.0.2: object-assign "^4.1.1" scheduler "^0.20.2" -react-draft-wysiwyg@^1.14.7: - version "1.14.7" - resolved "https://registry.yarnpkg.com/react-draft-wysiwyg/-/react-draft-wysiwyg-1.14.7.tgz#5d27fe8ad87de7c692dad739b8787f3ac1f3c24e" - integrity sha512-D4X8F/ourvQZuqHzCQ6Vs6Tnt6TbGH58kvHQxC+aZGq+45ko2EyatL6G5C/paMaNKDZq2JRe7yAzykneMLpNOg== - dependencies: - classnames "^2.2.6" - draftjs-utils "^0.10.2" - html-to-draftjs "^1.5.0" - linkify-it "^2.2.0" - prop-types "^15.7.2" - react-error-overlay@^6.0.9: version "6.0.9" resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.9.tgz#3c743010c9359608c375ecd6bc76f35d93995b0a" @@ -9699,6 +9671,13 @@ react-scripts@4.0.3: optionalDependencies: fsevents "^2.1.3" +react-toastify@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/react-toastify/-/react-toastify-7.0.4.tgz#7d0b743f2b96f65754264ca6eae31911a82378db" + integrity sha512-Rol7+Cn39hZp5hQ/k6CbMNE2CKYV9E5OQdC/hBLtIQU2xz7DdAm7xil4NITQTHR6zEbE5RVFbpgSwTD7xRGLeQ== + dependencies: + clsx "^1.1.1" + react@^17.0.2: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" @@ -11416,11 +11395,6 @@ typescript@^4.1.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== -uc.micro@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - unbox-primitive@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471"