From 0915d477feb9c20190f9f8303de6277e8f298b60 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Wed, 30 Oct 2019 16:06:53 +0000 Subject: [PATCH 01/12] Global alert --- babel.config.js | 8 ++++ package-lock.json | 2 +- package.json | 6 +-- scripts/publish.sh | 2 +- src/alertContext/AlertContext.js | 24 +++++++++--- .../__tests__/AlertContext.test.js | 25 +++++++++--- .../__snapshots__/AlertContext.test.js.snap | 8 +++- src/bootstrap/Alert.css | 17 +++++++++ src/bootstrap/Alert.js | 29 +++++++++++--- src/bootstrap/Modal.js | 2 +- src/index.js | 8 +++- src/testUtils/alertContextMock.js | 23 +++++++++++ src/testUtils/customTestRender.js | 38 +++++++++++-------- src/testUtils/network.js | 12 ++++++ src/testUtils/setup.js | 7 +++- 15 files changed, 168 insertions(+), 43 deletions(-) create mode 100644 src/bootstrap/Alert.css create mode 100644 src/testUtils/alertContextMock.js create mode 100644 src/testUtils/network.js diff --git a/babel.config.js b/babel.config.js index fcf53b6..cb37526 100644 --- a/babel.config.js +++ b/babel.config.js @@ -14,4 +14,12 @@ module.exports = { }, }], ], + env: { + development: { + ignore: ["**/__tests__", "./scripts"], + }, + test: { + ignore: ["./scripts"], + }, + }, }; diff --git a/package-lock.json b/package-lock.json index 7f32ef6..2d3efca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "foris", - "version": "1.2.0", + "version": "1.3.1", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 19a00cd..c2e8123 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "foris", - "version": "1.2.0", + "version": "1.3.1", "description": "Set of components and utils for Foris and its plugins.", "author": "CZ.NIC, z.s.p.o.", "repository": { @@ -66,8 +66,8 @@ "webpack": "^4.41.0" }, "scripts": { - "build": "rm -rf dist; babel src --out-dir dist --ignore '**/__tests__' --source-maps inline --copy-files", - "build:watch": "babel src --verbose --watch --out-dir dist --ignore '**/__tests__' --source-maps inline --copy-files", + "build": "rm -rf dist; babel src --out-dir dist --source-maps inline --copy-files", + "build:watch": "babel src --verbose --watch --out-dir dist --source-maps inline --copy-files", "prepare": "rm -rf ./dist && npm run build", "lint": "eslint src", "test": "jest", diff --git a/scripts/publish.sh b/scripts/publish.sh index 6aa73cd..e18e977 100755 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -5,7 +5,7 @@ then echo "\$NPM_TOKEN is not set" exit 1 else - # Need to replace "_" with "_" as GitLab CI won't accept secret vars with "-" + # Need to replace "_" with "-" as GitLab CI won't accept secret vars with "-" echo "//registry.npmjs.org/:_authToken=$(echo "$NPM_TOKEN" | tr _ -)" > .npmrc echo "unsafe-perm = true" >> ~/.npmrc if test "$1" = "beta" diff --git a/src/alertContext/AlertContext.js b/src/alertContext/AlertContext.js index bcdb347..48f64bd 100644 --- a/src/alertContext/AlertContext.js +++ b/src/alertContext/AlertContext.js @@ -5,10 +5,10 @@ * See /LICENSE for more information. */ -import React, { useState } from "react"; +import React, { useState, useContext, useCallback } from "react"; import PropTypes from "prop-types"; -import { Alert } from "bootstrap/Alert"; +import { Alert, ALERT_TYPES } from "bootstrap/Alert"; const AlertContext = React.createContext(); @@ -22,14 +22,28 @@ AlertContextProvider.propTypes = { function AlertContextProvider({ children }) { const [alert, setAlert] = useState(null); + const setAlertWrapper = useCallback((message, type = ALERT_TYPES.DANGER) => { + setAlert({ message, type }); + }, [setAlert]); + + const dismissAlert = useCallback(() => setAlert(null), [setAlert]); + return ( <> - {alert && setAlert(null)} />} - + {alert && ( + + {alert.message} + + )} + { children } ); } -export { AlertContext, AlertContextProvider }; +function useAlert() { + return useContext(AlertContext); +} + +export { AlertContext, AlertContextProvider, useAlert }; diff --git a/src/alertContext/__tests__/AlertContext.test.js b/src/alertContext/__tests__/AlertContext.test.js index 3c986a3..7801731 100644 --- a/src/alertContext/__tests__/AlertContext.test.js +++ b/src/alertContext/__tests__/AlertContext.test.js @@ -5,14 +5,19 @@ * See /LICENSE for more information. */ -import React, { useContext } from "react"; +import React from "react"; import { render, getByText, queryByText, fireEvent } from "customTestRender"; -import { AlertContext, AlertContextProvider } from "../AlertContext"; +import { useAlert, AlertContextProvider } from "../AlertContext"; function AlertTest() { - const setAlert = useContext(AlertContext); - return ; + const [setAlert, dismissAlert] = useAlert(); + return ( + <> + + + + ); }; describe("AlertContext", () => { @@ -36,7 +41,7 @@ describe("AlertContext", () => { expect(componentContainer).toMatchSnapshot(); }); - it("should dismiss alert", () => { + it("should dismiss alert with alert button", () => { fireEvent.click(getByText(componentContainer, "Set alert")); // Alert is present expect(getByText(componentContainer, "Alert content")).toBeDefined(); @@ -45,4 +50,14 @@ describe("AlertContext", () => { // Alert is gone expect(queryByText(componentContainer, "Alert content")).toBeNull(); }); + + it("should dismiss alert with external button", () => { + fireEvent.click(getByText(componentContainer, "Set alert")); + // Alert is present + expect(getByText(componentContainer, "Alert content")).toBeDefined(); + + fireEvent.click(getByText(componentContainer, "Dismiss alert")); + // Alert is gone + expect(queryByText(componentContainer, "Alert content")).toBeNull(); + }); }); diff --git a/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap b/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap index 97a4dc3..9f13a93 100644 --- a/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap +++ b/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap @@ -3,7 +3,7 @@ exports[`AlertContext should render alert 1`] = `
+
`; @@ -24,5 +27,8 @@ exports[`AlertContext should render component without alert 1`] = ` +
`; diff --git a/src/bootstrap/Alert.css b/src/bootstrap/Alert.css new file mode 100644 index 0000000..520d6fb --- /dev/null +++ b/src/bootstrap/Alert.css @@ -0,0 +1,17 @@ +.floating-alert { + /* Display alert above other components */ + z-index: 2000; +} + +@media(max-width: 768px) { + .floating-alert { + margin: 0.5rem; + } +} + +@media(min-width: 769px) { + .floating-alert { + width: 75%; + margin: 0.5rem auto; + } +} diff --git a/src/bootstrap/Alert.js b/src/bootstrap/Alert.js index 902bede..a63a6f7 100644 --- a/src/bootstrap/Alert.js +++ b/src/bootstrap/Alert.js @@ -8,11 +8,22 @@ import React from "react"; import PropTypes from "prop-types"; +import "./Alert.css"; + +export const ALERT_TYPES = Object.freeze({ + PRIMARY: "primary", + SECONDARY: "secondary", + SUCCESS: "success", + DANGER: "danger", + WARNING: "warning", + INFO: "info", + LIGHT: "light", + DARK: "dark", +}); + Alert.propTypes = { /** Type of the alert it adds as `alert-${type}` class. */ - type: PropTypes.string.isRequired, - /** Alert message. */ - message: PropTypes.string, + type: PropTypes.oneOf(Object.values(ALERT_TYPES)), /** Alert content. */ children: PropTypes.oneOfType([ PropTypes.arrayOf(PropTypes.node), @@ -20,15 +31,21 @@ Alert.propTypes = { ]), /** onDismiss handler. */ onDismiss: PropTypes.func, + /** Floating alerts stay on top of the page */ + floating: PropTypes.bool, +}; + +Alert.defaultProps = { + type: ALERT_TYPES.DANGER, + floating: false, }; export function Alert({ - type, message, onDismiss, children, + type, onDismiss, floating, children, }) { return ( -
+
{onDismiss ? : false} - {message} {children}
); diff --git a/src/bootstrap/Modal.js b/src/bootstrap/Modal.js index d0e02b0..4fc381f 100644 --- a/src/bootstrap/Modal.js +++ b/src/bootstrap/Modal.js @@ -41,7 +41,7 @@ export function Modal({ shown, setShown, children }) { return (
-
+
{children}
diff --git a/src/index.js b/src/index.js index 9561621..c412869 100644 --- a/src/index.js +++ b/src/index.js @@ -12,7 +12,7 @@ export { useAPIDelete } from "api/delete"; export { useAPIPatch } from "api/patch"; // Bootstrap -export { Alert } from "bootstrap/Alert"; +export { Alert, ALERT_TYPES } from "bootstrap/Alert"; export { Button } from "bootstrap/Button"; export { CheckBox } from "bootstrap/CheckBox"; export { DownloadButton } from "bootstrap/DownloadButton"; @@ -66,4 +66,8 @@ export { } from "validations"; // Alert context -export { AlertContext, AlertContextProvider } from "alertContext/AlertContext"; +export { AlertContext, AlertContextProvider, useAlert } from "alertContext/AlertContext"; + +// Testing utilities +export { mockJSONError } from "testUtils/network"; +export { mockSetAlert, mockDismissAlert } from "testUtils/alertContextMock"; diff --git a/src/testUtils/alertContextMock.js b/src/testUtils/alertContextMock.js new file mode 100644 index 0000000..22347e3 --- /dev/null +++ b/src/testUtils/alertContextMock.js @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import React from "react"; + +import { AlertContext } from "../alertContext/AlertContext"; + +const mockSetAlert = jest.fn(); +const mockDismissAlert = jest.fn(); + +function AlertContextMock({ children }) { + return ( + + { children } + + ); +} + +export { AlertContextMock, mockSetAlert, mockDismissAlert }; diff --git a/src/testUtils/customTestRender.js b/src/testUtils/customTestRender.js index ee927de..9092f72 100644 --- a/src/testUtils/customTestRender.js +++ b/src/testUtils/customTestRender.js @@ -7,31 +7,37 @@ /* eslint import/export: "off" */ -import React from 'react'; -import PropTypes from 'prop-types'; -import {UIDReset} from 'react-uid'; -import {StaticRouter} from 'react-router'; -import {render} from '@testing-library/react' +import React from "react"; +import { UIDReset } from "react-uid"; +import { StaticRouter } from "react-router"; +import { render } from "@testing-library/react"; +import PropTypes from "prop-types"; + +import { AlertContextMock } from "alertContextMock"; Wrapper.propTypes = { children: PropTypes.oneOfType([ PropTypes.arrayOf(PropTypes.node), - PropTypes.node - ]) + PropTypes.node, + ]), }; -function Wrapper({children}) { - return - - {children} - - +function Wrapper({ children }) { + return ( + + + + {children} + + + + ); } -const customTestRender = (ui, options) => render(ui, {wrapper: Wrapper, ...options}); +const customTestRender = (ui, options) => render(ui, { wrapper: Wrapper, ...options }); // re-export everything -export * from '@testing-library/react' +export * from "@testing-library/react"; // override render method -export {customTestRender as render} +export { customTestRender as render }; diff --git a/src/testUtils/network.js b/src/testUtils/network.js new file mode 100644 index 0000000..05efa59 --- /dev/null +++ b/src/testUtils/network.js @@ -0,0 +1,12 @@ +/* + * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import mockAxios from 'jest-mock-axios'; + +export function mockJSONError(data) { + mockAxios.mockError({ response: { data, headers: { "content-type": "application/json" } } }); +} diff --git a/src/testUtils/setup.js b/src/testUtils/setup.js index af4800b..5c9ca17 100644 --- a/src/testUtils/setup.js +++ b/src/testUtils/setup.js @@ -15,12 +15,15 @@ global.afterEach(() => { // Mock babel (gettext) global._ = str => str; +global.ngettext = str => str; global.babel = {format: (str) => str}; global.ForisTranslations = {}; +// Mock web sockets +window.WebSocket = jest.fn(); + // Mock scrollIntoView -global.HTMLElement.prototype.scrollIntoView = () => { -}; +global.HTMLElement.prototype.scrollIntoView = () => {}; jest.doMock('moment', () => { moment.tz.setDefault('UTC'); From 0984c4516194705704c7a0b4f927b6260f78d4c7 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Fri, 1 Nov 2019 09:28:28 +0000 Subject: [PATCH 02/12] Flat structure of published package --- .gitlab-ci.yml | 13 +++++++------ Makefile | 11 ++++++++++- babel.config.js | 4 ++-- package.json | 9 ++------- scripts/collect_files.sh | 9 +++++++++ scripts/publish.sh | 4 ++-- src/index.js | 4 ---- src/testUtils/customTestRender.js | 2 +- 8 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 scripts/collect_files.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dac26a3..76aa24e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -6,25 +6,26 @@ stages: - publish before_script: + - apk add make - npm install test: stage: test script: - - npm test + - make test lint: stage: test script: - - npm run lint + - make lint build: stage: build script: - - npm pack + - make pack artifacts: paths: - - foris-*.tgz + - dist/foris-*.tgz publish_beta: stage: publish @@ -32,7 +33,7 @@ publish_beta: refs: - dev script: - - sh scripts/publish.sh beta + - make publish-beta publish_latest: stage: publish @@ -40,4 +41,4 @@ publish_latest: refs: - master script: - - sh scripts/publish.sh latest + - make publish-latest diff --git a/Makefile b/Makefile index 2ddbdea..1d58e95 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: all install-js watch-js build-js lint-js test-js create-messages update-messages docs clean +.PHONY: all install-js watch-js build-js collect-files pack publish-beta publish-latest lint test test-js-update-snapshots create-messages update-messages docs docs-watch clean all: @echo "make install-js" @@ -30,6 +30,15 @@ watch-js: build-js: npm run build +collect-files: + sh scripts/collect_files.sh +pack: collect-files + cd dist && npm pack +publish-beta: collect-files + sh scripts/publish.sh beta +publish-latest: collect-files + sh scripts/publish.sh latest + lint: npm run lint diff --git a/babel.config.js b/babel.config.js index cb37526..5d9e8a8 100644 --- a/babel.config.js +++ b/babel.config.js @@ -16,10 +16,10 @@ module.exports = { ], env: { development: { - ignore: ["**/__tests__", "./scripts"], + ignore: ["**/__tests__/**", "**/__mocks__/**"], }, test: { - ignore: ["./scripts"], + ignore: [], }, }, }; diff --git a/package.json b/package.json index c2e8123..ce38bc6 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "reforis" ], "license": "GPL-3.0", - "main": "./dist/index.js", + "main": "index.js", "dependencies": { "axios": "^0.19.0", "immutability-helper": "^3.0.0", @@ -68,16 +68,11 @@ "scripts": { "build": "rm -rf dist; babel src --out-dir dist --source-maps inline --copy-files", "build:watch": "babel src --verbose --watch --out-dir dist --source-maps inline --copy-files", - "prepare": "rm -rf ./dist && npm run build", "lint": "eslint src", "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage --colors", "docs": "npx styleguidist build ", "docs:watch": "styleguidist server" - }, - "files": [ - "dist/**", - "translations" - ] + } } diff --git a/scripts/collect_files.sh b/scripts/collect_files.sh new file mode 100644 index 0000000..6d45f1b --- /dev/null +++ b/scripts/collect_files.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +# Collect files +npm run build +cp package.json dist +cp -rf translations dist +# Remove unwanted files +rm -rf dist/**/__tests__ +rm -rf dist/__mocks__ diff --git a/scripts/publish.sh b/scripts/publish.sh index e18e977..ce3dc5e 100755 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -12,10 +12,10 @@ else then BETA_VERSION=$(npx -c 'echo "$npm_package_version"')-beta.$CI_COMMIT_SHORT_SHA npm version "$BETA_VERSION" --git-tag-version false - npm publish --tag beta + cd dist && npm publish --tag beta elif test "$1" = "latest" then - npm publish + cd dist && npm publish else echo "Usage: publish.sh [ beta | latest ]" exit 1 diff --git a/src/index.js b/src/index.js index c412869..851d2ba 100644 --- a/src/index.js +++ b/src/index.js @@ -67,7 +67,3 @@ export { // Alert context export { AlertContext, AlertContextProvider, useAlert } from "alertContext/AlertContext"; - -// Testing utilities -export { mockJSONError } from "testUtils/network"; -export { mockSetAlert, mockDismissAlert } from "testUtils/alertContextMock"; diff --git a/src/testUtils/customTestRender.js b/src/testUtils/customTestRender.js index 9092f72..fbf1718 100644 --- a/src/testUtils/customTestRender.js +++ b/src/testUtils/customTestRender.js @@ -13,7 +13,7 @@ import { StaticRouter } from "react-router"; import { render } from "@testing-library/react"; import PropTypes from "prop-types"; -import { AlertContextMock } from "alertContextMock"; +import { AlertContextMock } from "./alertContextMock"; Wrapper.propTypes = { children: PropTypes.oneOfType([ From 031b53f03c83be8006ad8a6786f89f286649ad47 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Fri, 1 Nov 2019 10:49:45 +0100 Subject: [PATCH 03/12] Fixed publish script --- scripts/publish.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/publish.sh b/scripts/publish.sh index ce3dc5e..172b7a7 100755 --- a/scripts/publish.sh +++ b/scripts/publish.sh @@ -5,6 +5,7 @@ then echo "\$NPM_TOKEN is not set" exit 1 else + cd dist # Need to replace "_" with "-" as GitLab CI won't accept secret vars with "-" echo "//registry.npmjs.org/:_authToken=$(echo "$NPM_TOKEN" | tr _ -)" > .npmrc echo "unsafe-perm = true" >> ~/.npmrc @@ -12,10 +13,10 @@ else then BETA_VERSION=$(npx -c 'echo "$npm_package_version"')-beta.$CI_COMMIT_SHORT_SHA npm version "$BETA_VERSION" --git-tag-version false - cd dist && npm publish --tag beta + npm publish --tag beta elif test "$1" = "latest" then - cd dist && npm publish + npm publish else echo "Usage: publish.sh [ beta | latest ]" exit 1 From 7f8aaea7b8f29aa4c92aa71ab2fcfc1778da04ee Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Tue, 5 Nov 2019 11:10:50 +0000 Subject: [PATCH 04/12] Resolve "Discuss and implement proper API methods." --- src/api/delete.js | 41 --------------- src/api/get.js | 65 ------------------------ src/api/hooks.js | 86 ++++++++++++++++++++++++++++++++ src/api/patch.js | 40 --------------- src/api/post.js | 45 ----------------- src/api/utils.js | 76 +++++++++++----------------- src/form/components/ForisForm.js | 2 +- src/form/hooks.js | 3 +- src/index.js | 8 +-- 9 files changed, 122 insertions(+), 244 deletions(-) delete mode 100644 src/api/delete.js delete mode 100644 src/api/get.js create mode 100644 src/api/hooks.js delete mode 100644 src/api/patch.js delete mode 100644 src/api/post.js diff --git a/src/api/delete.js b/src/api/delete.js deleted file mode 100644 index dc4574f..0000000 --- a/src/api/delete.js +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) - * - * This is free software, licensed under the GNU General Public License v3. - * See /LICENSE for more information. - */ - -import { useReducer, useCallback } from "react"; -import axios from "axios"; - -import { - API_ACTIONS, TIMEOUT, HEADERS, APIReducer, getErrorMessage, -} from "./utils"; - -export function useAPIDelete(url) { - const [state, dispatch] = useReducer(APIReducer, { - isSending: false, - isError: false, - isSuccess: false, - data: null, - }); - - const requestDelete = useCallback(async () => { - dispatch({ type: API_ACTIONS.INIT }); - try { - await axios.delete(url, { - timeout: TIMEOUT, - headers: HEADERS, - }); - dispatch({ type: API_ACTIONS.SUCCESS }); - } catch (error) { - dispatch({ - type: API_ACTIONS.FAILURE, - payload: getErrorMessage(error), - status: error.response.status, - }); - } - }, [url]); - - return [state, requestDelete]; -} diff --git a/src/api/get.js b/src/api/get.js deleted file mode 100644 index 14c9d69..0000000 --- a/src/api/get.js +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) - * - * This is free software, licensed under the GNU General Public License v3. - * See /LICENSE for more information. - */ - -import { useReducer, useCallback } from "react"; -import axios from "axios"; - -import { ForisURLs } from "forisUrls"; -import { API_ACTIONS, TIMEOUT } from "./utils"; - -const APIGetReducer = (state, action) => { - switch (action.type) { - case API_ACTIONS.INIT: - return { - ...state, - isLoading: true, - isError: false, - }; - case API_ACTIONS.SUCCESS: - return { - ...state, - isLoading: false, - isError: false, - data: action.payload, - }; - case API_ACTIONS.FAILURE: - if (action.status === 403) window.location.assign(ForisURLs.login); - return { - ...state, - isLoading: false, - isError: true, - data: action.payload, - }; - default: - throw new Error(); - } -}; - -export function useAPIGet(url) { - const [state, dispatch] = useReducer(APIGetReducer, { - isLoading: false, - isError: false, - data: null, - }); - const get = useCallback(async () => { - dispatch({ type: API_ACTIONS.INIT }); - try { - const result = await axios.get(url, { - timeout: TIMEOUT, - }); - dispatch({ type: API_ACTIONS.SUCCESS, payload: result.data }); - } catch (error) { - dispatch({ - type: API_ACTIONS.FAILURE, - payload: error.response.data, - status: error.response.status, - }); - } - }, [url]); - - return [state, get]; -} diff --git a/src/api/hooks.js b/src/api/hooks.js new file mode 100644 index 0000000..a30bd8d --- /dev/null +++ b/src/api/hooks.js @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import { useReducer, useCallback } from "react"; + +import { ForisURLs } from "forisUrls"; +import { + API_STATE, API_ACTIONS, API_METHODS, TIMEOUT, HEADERS, getErrorMessage, +} from "./utils"; + +const DATA_METHODS = ["POST", "PATCH", "PUT"]; + +function createAPIHook(method) { + return (url, contentType) => { + const [state, dispatch] = useReducer(APIReducer, { + state: API_STATE.INIT, + data: null, + }); + + const sendRequest = useCallback(async (data) => { + const headers = { ...HEADERS }; + if (contentType) { + headers["Content-Type"] = contentType; + } + + dispatch({ type: API_ACTIONS.INIT }); + try { + const request = API_METHODS[method]; + const config = { timeout: TIMEOUT, headers }; + let result; + if (DATA_METHODS.includes(method)) { + result = await request(url, data, config); + } else { + result = await request(url, config); + } + dispatch({ type: API_ACTIONS.SUCCESS, payload: result.data }); + } catch (error) { + dispatch({ + type: API_ACTIONS.FAILURE, + payload: getErrorMessage(error), + status: error.response.status, + }); + } + }, [url, contentType]); + return [state, sendRequest]; + }; +} + +function APIReducer(state, action) { + switch (action.type) { + case API_ACTIONS.INIT: + return { + ...state, + state: API_STATE.SENDING, + }; + case API_ACTIONS.SUCCESS: + return { + state: API_STATE.SUCCESS, + data: action.payload, + }; + case API_ACTIONS.FAILURE: + if (action.status === 403) { + window.location.assign(ForisURLs.login); + } + return { + state: API_STATE.ERROR, + data: action.payload, + }; + default: + throw new Error(); + } +} + +const useAPIGet = createAPIHook("GET"); +const useAPIPost = createAPIHook("POST"); +const useAPIPatch = createAPIHook("PATCH"); +const useAPIPut = createAPIHook("PUT"); +const useAPIDelete = createAPIHook("DELETE"); + +export { + useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete, +}; diff --git a/src/api/patch.js b/src/api/patch.js deleted file mode 100644 index ba3ed9e..0000000 --- a/src/api/patch.js +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) - * - * This is free software, licensed under the GNU General Public License v3. - * See /LICENSE for more information. - */ - -import { useReducer } from "react"; -import axios from "axios"; - -import { - API_ACTIONS, TIMEOUT, HEADERS, APIReducer, getErrorMessage, -} from "./utils"; - -export function useAPIPatch(url) { - const [state, dispatch] = useReducer(APIReducer, { - isSending: false, - isError: false, - isSuccess: false, - data: null, - }); - - const patch = async (data) => { - dispatch({ type: API_ACTIONS.INIT }); - try { - const result = await axios.patch(url, data, { - timeout: TIMEOUT, - headers: HEADERS, - }); - dispatch({ type: API_ACTIONS.SUCCESS, payload: result.data }); - } catch (error) { - dispatch({ - type: API_ACTIONS.FAILURE, - payload: getErrorMessage(error), - status: error.response.status, - }); - } - }; - return [state, patch]; -} diff --git a/src/api/post.js b/src/api/post.js deleted file mode 100644 index 6a3933a..0000000 --- a/src/api/post.js +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) - * - * This is free software, licensed under the GNU General Public License v3. - * See /LICENSE for more information. - */ - -import { useReducer } from "react"; -import axios from "axios"; - -import { - API_ACTIONS, TIMEOUT, HEADERS, APIReducer, getErrorMessage, -} from "./utils"; - -export function useAPIPost(url, contentType) { - const [state, dispatch] = useReducer(APIReducer, { - isSending: false, - isError: false, - isSuccess: false, - data: null, - }); - - const headers = { ...HEADERS }; - if (contentType) { - headers["Content-Type"] = contentType; - } - - const post = async (data) => { - dispatch({ type: API_ACTIONS.INIT }); - try { - const result = await axios.post(url, data, { - timeout: TIMEOUT, - headers, - }); - dispatch({ type: API_ACTIONS.SUCCESS, payload: result.data }); - } catch (error) { - dispatch({ - type: API_ACTIONS.FAILURE, - payload: getErrorMessage(error), - status: error.response.status, - }); - } - }; - return [state, post]; -} diff --git a/src/api/utils.js b/src/api/utils.js index fd85c8c..18a76e3 100644 --- a/src/api/utils.js +++ b/src/api/utils.js @@ -5,7 +5,36 @@ * See /LICENSE for more information. */ -import { ForisURLs } from "forisUrls"; +import axios from "axios"; + +export const HEADERS = { + Accept: "application/json", + "Content-Type": "application/json", + "X-CSRFToken": getCookie("_csrf_token"), +}; + +export const TIMEOUT = 5000; + +export const API_ACTIONS = { + INIT: 1, + SUCCESS: 2, + FAILURE: 3, +}; + +export const API_STATE = { + INIT: "init", + SENDING: "sending", + SUCCESS: "success", + ERROR: "error", +}; + +export const API_METHODS = { + GET: axios.get, + POST: axios.post, + PATCH: axios.patch, + PUT: axios.put, + DELETE: axios.delete, +}; function getCookie(name) { let cookieValue = null; @@ -23,51 +52,6 @@ function getCookie(name) { return cookieValue; } -export const HEADERS = { - Accept: "application/json", - "Content-Type": "application/json", - "X-CSRFToken": getCookie("_csrf_token"), -}; - -export const TIMEOUT = 5000; - -export const API_ACTIONS = { - INIT: 1, - SUCCESS: 2, - FAILURE: 3, -}; - -export function APIReducer(state, action) { - switch (action.type) { - case API_ACTIONS.INIT: - return { - ...state, - isSending: true, - isError: false, - isSuccess: false, - }; - case API_ACTIONS.SUCCESS: - return { - ...state, - isSending: false, - isError: false, - isSuccess: true, - data: action.payload, - }; - case API_ACTIONS.FAILURE: - if (action.status === 403) window.location.assign(ForisURLs.login); - return { - ...state, - isSending: false, - isError: true, - isSuccess: false, - data: action.payload, - }; - default: - throw new Error(); - } -} - export function getErrorMessage(error) { let payload = "An unknown error occurred"; if (error.response.headers["content-type"] === "application/json") { diff --git a/src/form/components/ForisForm.js b/src/form/components/ForisForm.js index 12e1854..c03badc 100644 --- a/src/form/components/ForisForm.js +++ b/src/form/components/ForisForm.js @@ -9,7 +9,7 @@ import React, { useEffect, useState } from "react"; import PropTypes from "prop-types"; import { Spinner } from "bootstrap/Spinner"; -import { useAPIPost } from "api/post"; +import { useAPIPost } from "api/hooks"; import { Prompt } from "react-router"; import { useForisModule, useForm } from "../hooks"; diff --git a/src/form/hooks.js b/src/form/hooks.js index 3b14499..ebc48c5 100644 --- a/src/form/hooks.js +++ b/src/form/hooks.js @@ -8,10 +8,9 @@ import { useCallback, useEffect, useReducer } from "react"; import update from "immutability-helper"; -import { useAPIGet } from "api/get"; +import { useAPIGet } from "api/hooks"; import { useWSForisModule } from "webSockets/hooks"; - const FORM_ACTIONS = { updateValue: 1, resetData: 2, diff --git a/src/index.js b/src/index.js index 851d2ba..aad3f7e 100644 --- a/src/index.js +++ b/src/index.js @@ -6,10 +6,10 @@ */ // API -export { useAPIGet } from "api/get"; -export { useAPIPost } from "api/post"; -export { useAPIDelete } from "api/delete"; -export { useAPIPatch } from "api/patch"; +export { + useAPIGet, useAPIPost, useAPIDelete, useAPIPatch, +} from "api/hooks"; +export { API_STATE } from "api/utils"; // Bootstrap export { Alert, ALERT_TYPES } from "bootstrap/Alert"; From 654ae6914af504c09ae9726a6bbb5547d0364563 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Tue, 5 Nov 2019 13:00:44 +0100 Subject: [PATCH 05/12] Added missing hook to index.js --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index aad3f7e..22cfc23 100644 --- a/src/index.js +++ b/src/index.js @@ -7,7 +7,7 @@ // API export { - useAPIGet, useAPIPost, useAPIDelete, useAPIPatch, + useAPIGet, useAPIPost, useAPIPatch, useAPIPut, useAPIDelete, } from "api/hooks"; export { API_STATE } from "api/utils"; From 8b39bf4193c9f404c7752d3a8f08cd027ea33001 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Thu, 7 Nov 2019 17:21:14 +0000 Subject: [PATCH 06/12] Loading and errors HOCs --- src/bootstrap/Spinner.js | 2 +- src/form/components/ForisForm.js | 57 +++++---- src/form/components/alerts.js | 46 -------- src/index.js | 4 + src/utils/ErrorMessage.js | 16 +++ .../conditionalHOCs.test.js.snap | 61 ++++++++++ src/utils/__tests__/conditionalHOCs.test.js | 110 ++++++++++++++++++ src/utils/conditionalHOCs.js | 52 +++++++++ 8 files changed, 276 insertions(+), 72 deletions(-) delete mode 100644 src/form/components/alerts.js create mode 100644 src/utils/ErrorMessage.js create mode 100644 src/utils/__tests__/__snapshots__/conditionalHOCs.test.js.snap create mode 100644 src/utils/__tests__/conditionalHOCs.test.js create mode 100644 src/utils/conditionalHOCs.js diff --git a/src/bootstrap/Spinner.js b/src/bootstrap/Spinner.js index c45776a..43ca59f 100644 --- a/src/bootstrap/Spinner.js +++ b/src/bootstrap/Spinner.js @@ -28,7 +28,7 @@ export function Spinner({ }) { if (!fullScreen) { return ( -
+
{children}
); diff --git a/src/form/components/ForisForm.js b/src/form/components/ForisForm.js index c03badc..f739f5b 100644 --- a/src/form/components/ForisForm.js +++ b/src/form/components/ForisForm.js @@ -5,16 +5,19 @@ * See /LICENSE for more information. */ -import React, { useEffect, useState } from "react"; +import React, { useEffect } from "react"; import PropTypes from "prop-types"; import { Spinner } from "bootstrap/Spinner"; import { useAPIPost } from "api/hooks"; import { Prompt } from "react-router"; +import { API_STATE } from "api/utils"; +import { ErrorMessage } from "utils/ErrorMessage"; +import { useAlert } from "alertContext/AlertContext"; +import { ALERT_TYPES } from "bootstrap/Alert"; import { useForisModule, useForm } from "../hooks"; import { STATES as SUBMIT_BUTTON_STATES, SubmitButton } from "./SubmitButton"; -import { FailAlert, SuccessAlert } from "./alerts"; ForisForm.propTypes = { /** WebSocket object see `scr/common/WebSockets.js`. */ @@ -69,22 +72,34 @@ export function ForisForm({ children, }) { const [formState, onFormChangeHandler, resetFormData] = useForm(validator, prepData); + const [setAlert] = useAlert(); const [forisModuleState] = useForisModule(ws, forisConfig); useEffect(() => { - if (forisModuleState.data) { + if (forisModuleState.state === API_STATE.SUCCESS) { resetFormData(forisModuleState.data); } - }, [forisModuleState.data, resetFormData, prepData]); + }, [forisModuleState, resetFormData, prepData]); const [postState, post] = useAPIPost(forisConfig.endpoint); useEffect(() => { - if (postState.isSuccess) postCallback(); - }, [postCallback, postState.isSuccess]); + if (postState.state === API_STATE.SUCCESS) { + postCallback(); + setAlert(_("Settings saved successfully"), ALERT_TYPES.SUCCESS); + } else if (postState.state === API_STATE.ERROR) { + setAlert(_("Cannot save settings")); + } + }, [postCallback, postState.state, setAlert]); + if (forisModuleState.state === API_STATE.ERROR) { + return ; + } + if (!formState.data) { + return ; + } - function onSubmitHandler(e) { - e.preventDefault(); + function onSubmitHandler(event) { + event.preventDefault(); resetFormData(); const copiedFormData = JSON.parse(JSON.stringify(formState.data)); const preparedData = prepDataToSubmit(copiedFormData); @@ -92,16 +107,18 @@ export function ForisForm({ } function getSubmitButtonState() { - if (postState.isSending) return SUBMIT_BUTTON_STATES.SAVING; - if (forisModuleState.isLoading) return SUBMIT_BUTTON_STATES.LOAD; + if (postState.state === API_STATE.SENDING) { + return SUBMIT_BUTTON_STATES.SAVING; + } + if (forisModuleState.state === API_STATE.SENDING) { + return SUBMIT_BUTTON_STATES.LOAD; + } return SUBMIT_BUTTON_STATES.READY; } - const [alertIsDismissed, setAlertIsDismissed] = useState(false); - - if (!formState.data) return ; - - const formIsDisabled = disabled || forisModuleState.isLoading || postState.isSending; + const formIsDisabled = (disabled + || forisModuleState.state === API_STATE.SENDING + || postState.state === API_STATE.SENDING); const submitButtonIsDisabled = disabled || !!formState.errors; const childrenWithFormProps = React.Children.map( @@ -123,19 +140,9 @@ export function ForisForm({ return _("Changes you made may not be saved. Are you sure you want to leave?"); } - let alert = null; - if (!alertIsDismissed) { - if (postState.isSuccess) { - alert = setAlertIsDismissed(true)} />; - } else if (postState.isError) { - alert = setAlertIsDismissed(true)} />; - } - } - return ( <> - {alert}
{childrenWithFormProps} - - - ); -} - -FailAlert.propTypes = { - onDismiss: PropTypes.func.isRequired, -}; - -export function FailAlert({ onDismiss }) { - return ( - - - - ); -} diff --git a/src/index.js b/src/index.js index 22cfc23..5f755d9 100644 --- a/src/index.js +++ b/src/index.js @@ -50,6 +50,10 @@ export { WebSockets } from "webSockets/WebSockets"; // Utils export { Portal } from "utils/Portal"; export { undefinedIfEmpty, withoutUndefinedKeys, onlySpecifiedKeys } from "utils/objectHelpers"; +export { + withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage, +} from "utils/conditionalHOCs"; +export { ErrorMessage } from "utils/ErrorMessage"; // Foris URL export { ForisURLs, REFORIS_URL_PREFIX } from "forisUrls"; diff --git a/src/utils/ErrorMessage.js b/src/utils/ErrorMessage.js new file mode 100644 index 0000000..22e4f7b --- /dev/null +++ b/src/utils/ErrorMessage.js @@ -0,0 +1,16 @@ +/* + * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import React from "react"; + +export function ErrorMessage() { + return ( +

+ {_("An error occurred while fetching data.")} +

+ ); +} diff --git a/src/utils/__tests__/__snapshots__/conditionalHOCs.test.js.snap b/src/utils/__tests__/__snapshots__/conditionalHOCs.test.js.snap new file mode 100644 index 0000000..f2e1040 --- /dev/null +++ b/src/utils/__tests__/__snapshots__/conditionalHOCs.test.js.snap @@ -0,0 +1,61 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`conditional HOCs withError should render error message 1`] = ` +
+

+ An error occurred while fetching data. +

+
+`; + +exports[`conditional HOCs withErrorMessage should render error message 1`] = ` +
+

+ An error occurred while fetching data. +

+
+`; + +exports[`conditional HOCs withSpinner should render spinner 1`] = ` +
+
+
+ +
+
+
+
+`; + +exports[`conditional HOCs withSpinnerOnSending should render spinner 1`] = ` +
+
+
+ +
+
+
+
+`; diff --git a/src/utils/__tests__/conditionalHOCs.test.js b/src/utils/__tests__/conditionalHOCs.test.js new file mode 100644 index 0000000..eb8985e --- /dev/null +++ b/src/utils/__tests__/conditionalHOCs.test.js @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import React from "react"; +import { render } from "customTestRender"; +import { + withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage, +} from "../conditionalHOCs"; +import { API_STATE } from "api/utils"; + +describe("conditional HOCs", () => { + const First = () =>

First

; + const Alternative = () =>

Alternative

; + + describe("withEither", () => { + it("should render First component", () => { + const withAlternative = withEither(() => false, Alternative); + const FirstWithConditional = withAlternative(First); + const { getByText } = render(); + expect(getByText("First")).toBeDefined(); + }); + + it("should render Alternative component", () => { + const withAlternative = withEither(() => true, Alternative); + const FirstWithConditional = withAlternative(First); + const { getByText } = render(); + expect(getByText("Alternative")).toBeDefined(); + }); + }); + + describe("withSpinner", () => { + it("should render First component", () => { + const withSpinnerHidden = withSpinner(() => false); + const FirstWithConditional = withSpinnerHidden(First); + const { getByText } = render(); + expect(getByText("First")).toBeDefined(); + }); + + it("should render spinner", () => { + const withSpinnerVisible = withSpinner(() => true); + const FirstWithConditional = withSpinnerVisible(First); + const { container } = render(); + expect(container).toMatchSnapshot(); + }); + }); + + describe("withSending", () => { + it("should render First component", () => { + const withAlternative = withSending(Alternative); + const FirstWithConditional = withAlternative(First); + const { getByText } = render(); + expect(getByText("First")).toBeDefined(); + }); + + it("should render Alternative component", () => { + const withAlternative = withSending(Alternative); + const FirstWithConditional = withAlternative(First); + const { getByText } = render(); + expect(getByText("Alternative")).toBeDefined(); + }); + }); + + describe("withSpinnerOnSending", () => { + it("should render First component", () => { + const FirstWithConditional = withSpinnerOnSending(First); + const { getByText } = render(); + expect(getByText("First")).toBeDefined(); + }); + + it("should render spinner", () => { + const FirstWithConditional = withSpinnerOnSending(First); + const { container } = render(); + expect(container).toMatchSnapshot(); + }); + }); + + describe("withError", () => { + it("should render First component", () => { + const withErrorHidden = withError(() => false); + const FirstWithConditional = withErrorHidden(First); + const { getByText } = render(); + expect(getByText("First")).toBeDefined(); + }); + + it("should render error message", () => { + const withErrorVisible = withError(() => true); + const FirstWithConditional = withErrorVisible(First); + const { container } = render(); + expect(container).toMatchSnapshot(); + }); + }); + + describe("withErrorMessage", () => { + it("should render First component", () => { + const FirstWithConditional = withErrorMessage(First); + const { getByText } = render(); + expect(getByText("First")).toBeDefined(); + }); + + it("should render error message", () => { + const FirstWithConditional = withErrorMessage(First); + const { container } = render(); + expect(container).toMatchSnapshot(); + }); + }); +}); diff --git a/src/utils/conditionalHOCs.js b/src/utils/conditionalHOCs.js new file mode 100644 index 0000000..4c38fb4 --- /dev/null +++ b/src/utils/conditionalHOCs.js @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import React from "react"; + +import { Spinner } from "bootstrap/Spinner"; +import { API_STATE } from "api/utils"; +import { ErrorMessage } from "./ErrorMessage"; + +function withEither(conditionalFn, Either) { + return (Component) => (props) => { + if (conditionalFn(props)) { + return ; + } + return ; + }; +} + +// Loading + +function isSending(props) { + if (Array.isArray(props.apiState)) { + return props.apiState.some( + (state) => [API_STATE.INIT, API_STATE.SENDING].includes(state), + ); + } + return [API_STATE.INIT, API_STATE.SENDING].includes(props.apiState); +} + +const withSpinner = (conditionalFn) => withEither(conditionalFn, Spinner); +const withSending = (Either) => withEither(isSending, Either); +const withSpinnerOnSending = withSpinner(isSending); + +// Error handling + +const withError = (conditionalFn) => withEither(conditionalFn, ErrorMessage); +const withErrorMessage = withError( + (props) => { + if (Array.isArray(props.apiState)) { + return props.apiState.includes(API_STATE.ERROR); + } + return props.apiState === API_STATE.ERROR; + }, +); + +export { + withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage, +}; From a51ba0630df6b38ceff8585064edd8d952ce4986 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Tue, 12 Nov 2019 12:50:29 +0000 Subject: [PATCH 07/12] Move alert to portal --- src/alertContext/AlertContext.js | 9 +++++--- .../__tests__/AlertContext.test.js | 2 ++ .../__snapshots__/AlertContext.test.js.snap | 21 ++++++++++++------- src/bootstrap/Alert.css | 17 --------------- src/bootstrap/Alert.js | 9 ++------ 5 files changed, 24 insertions(+), 34 deletions(-) delete mode 100644 src/bootstrap/Alert.css diff --git a/src/alertContext/AlertContext.js b/src/alertContext/AlertContext.js index 48f64bd..c262dba 100644 --- a/src/alertContext/AlertContext.js +++ b/src/alertContext/AlertContext.js @@ -9,6 +9,7 @@ import React, { useState, useContext, useCallback } from "react"; import PropTypes from "prop-types"; import { Alert, ALERT_TYPES } from "bootstrap/Alert"; +import { Portal } from "utils/Portal"; const AlertContext = React.createContext(); @@ -31,9 +32,11 @@ function AlertContextProvider({ children }) { return ( <> {alert && ( - - {alert.message} - + + + {alert.message} + + )} { children } diff --git a/src/alertContext/__tests__/AlertContext.test.js b/src/alertContext/__tests__/AlertContext.test.js index 7801731..012b692 100644 --- a/src/alertContext/__tests__/AlertContext.test.js +++ b/src/alertContext/__tests__/AlertContext.test.js @@ -12,8 +12,10 @@ import { useAlert, AlertContextProvider } from "../AlertContext"; function AlertTest() { const [setAlert, dismissAlert] = useAlert(); + // alert-container serves as an output for Portal which renders Alert return ( <> +
diff --git a/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap b/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap index 9f13a93..8117aa5 100644 --- a/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap +++ b/src/alertContext/__tests__/__snapshots__/AlertContext.test.js.snap @@ -3,15 +3,19 @@ exports[`AlertContext should render alert 1`] = `
- - Alert content + + Alert content +
diff --git a/src/bootstrap/Alert.css b/src/bootstrap/Alert.css deleted file mode 100644 index 520d6fb..0000000 --- a/src/bootstrap/Alert.css +++ /dev/null @@ -1,17 +0,0 @@ -.floating-alert { - /* Display alert above other components */ - z-index: 2000; -} - -@media(max-width: 768px) { - .floating-alert { - margin: 0.5rem; - } -} - -@media(min-width: 769px) { - .floating-alert { - width: 75%; - margin: 0.5rem auto; - } -} diff --git a/src/bootstrap/Alert.js b/src/bootstrap/Alert.js index a63a6f7..5671f89 100644 --- a/src/bootstrap/Alert.js +++ b/src/bootstrap/Alert.js @@ -8,8 +8,6 @@ import React from "react"; import PropTypes from "prop-types"; -import "./Alert.css"; - export const ALERT_TYPES = Object.freeze({ PRIMARY: "primary", SECONDARY: "secondary", @@ -31,20 +29,17 @@ Alert.propTypes = { ]), /** onDismiss handler. */ onDismiss: PropTypes.func, - /** Floating alerts stay on top of the page */ - floating: PropTypes.bool, }; Alert.defaultProps = { type: ALERT_TYPES.DANGER, - floating: false, }; export function Alert({ - type, onDismiss, floating, children, + type, onDismiss, children, }) { return ( -
+
{onDismiss ? : false} {children}
From 6e02f1d19495250ce447d7c79bf07a036cfc5012 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Wed, 13 Nov 2019 10:11:11 +0000 Subject: [PATCH 08/12] Shared lint configs --- .eslintrc.js | 64 +------------------------ package-lock.json | 94 ++++++++++++++++++++++++++++++------- package.json | 7 +-- src/bootstrap/EmailInput.js | 1 - src/bootstrap/Modal.js | 1 - src/bootstrap/RadioSet.js | 1 - src/bootstrap/Select.js | 1 - src/bootstrap/TextInput.js | 2 - src/form/hooks.js | 1 - src/validations.js | 1 - 10 files changed, 80 insertions(+), 93 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index d783c34..9ca1dc3 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,66 +1,6 @@ -const path = require("path"); - module.exports = { - "env": { - "browser": true, - "node": true, - "es6": true, - "jest": true - }, - "extends": [ - "airbnb", - "airbnb/hooks" - ], - "globals": { - "_": "readonly", - "babel": "readonly", - "ForisTranslations": "readonly", - "ngettext": "readonly", - "ForisPlugins": "readonly" - }, - "parser": "babel-eslint", - "rules": { - "quotes": ["error", "double"], - "indent": ["error", 4], - "react/jsx-indent": ["error", 4], - "react/jsx-indent-props": ["error", 4], - "react/prop-types": "warn", - "react/no-array-index-key": "warn", - "react/button-has-type": "warn", + extends: "eslint-config-reforis", + rules: { "import/prefer-default-export": "off", - "import/no-unresolved": [ - "error", - // Ignore imports used only in tests - { ignore: ["customTestRender"] } - ], - "import/no-cycle": "warn", - "no-console": "error", - "no-use-before-define": ["error", { - functions: false, - classes: true, - variables: true - }], - "no-restricted-syntax": "warn", - // Should be enabled in the future - "camelcase": "off", - "no-param-reassign": "off", - "react/jsx-props-no-spreading": "off", - "react/require-default-props": "off", - "react/default-props-match-prop-types": "off", - "react/forbid-prop-types": "off", - // Permanently disabled - "react/jsx-filename-extension": "off", - "no-plusplus": "off", - "consistent-return": "off", - "radix": "off", - "no-continue": "off", - "react/no-danger": "off", }, - "settings": { - "import/resolver": { - "node": { - "paths": ["src"] - } - } - } }; diff --git a/package-lock.json b/package-lock.json index 2d3efca..c8ff325 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3001,9 +3001,9 @@ } }, "confusing-browser-globals": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.8.tgz", - "integrity": "sha512-lI7asCibVJ6Qd3FGU7mu4sfG4try4LX3+GVS+Gv8UlrEf2AeW57piecapnog2UHZSbcX/P/1UDWVaTsblowlZg==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", "dev": true }, "connect-history-api-fallback": { @@ -4098,6 +4098,20 @@ "object.entries": "^1.1.0" } }, + "eslint-config-reforis": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-reforis/-/eslint-config-reforis-1.0.0.tgz", + "integrity": "sha512-c0IgYlGfFMfhXmGilDVgkFIcUU34/i6wUiOzdRmg0CRi2Ko5LgmW/jRT5vdiXlFKYOk5WK1UWFbC19KBdGQEig==", + "dev": true, + "requires": { + "babel-eslint": "^9.0.0", + "eslint-config-airbnb": "^18.0.1", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^1.7.0" + } + }, "eslint-import-resolver-node": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", @@ -4356,20 +4370,20 @@ } }, "eslint-plugin-react": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.3.tgz", - "integrity": "sha512-EzdyyBWC4Uz2hPYBiEJrKCUi2Fn+BJ9B/pJQcjw5X+x/H2Nm59S4MJIvL4O5NEE0+WbnQwEBxWY03oUk+Bc3FA==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.16.0.tgz", + "integrity": "sha512-GacBAATewhhptbK3/vTP09CbFrgUJmBSaaRcWdbQLFvUZy9yVcQxigBNHGPU/KE2AyHpzj3AWXpxoMTsIDiHug==", "dev": true, "requires": { "array-includes": "^3.0.3", "doctrine": "^2.1.0", "has": "^1.0.3", - "jsx-ast-utils": "^2.1.0", + "jsx-ast-utils": "^2.2.1", "object.entries": "^1.1.0", "object.fromentries": "^2.0.0", "object.values": "^1.1.0", "prop-types": "^15.7.2", - "resolve": "^1.10.1" + "resolve": "^1.12.0" }, "dependencies": { "doctrine": { @@ -7546,9 +7560,9 @@ } }, "jsx-ast-utils": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz", - "integrity": "sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.3.tgz", + "integrity": "sha512-EdIHFMm+1BPynpKOpdPqiOsvnIrInRGJD7bzPZdPkjitQEqpdpUuFpq4T0npZFKTiB3RhWFdGN+oqOJIdhDhQA==", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -8345,6 +8359,12 @@ } } }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, "object-is": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", @@ -8391,15 +8411,35 @@ } }, "object.fromentries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz", - "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.1.tgz", + "integrity": "sha512-PUQv8Hbg3j2QX0IQYv3iAGCbGcu4yY4KQ92/dhA4sFSixBmSmp13UpDLs6jGK8rBtbmhNNIK99LD2k293jpiGA==", "dev": true, "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.11.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.15.0", "function-bind": "^1.1.1", - "has": "^1.0.1" + "has": "^1.0.3" + }, + "dependencies": { + "es-abstract": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.0" + } + } } }, "object.getownpropertydescriptors": { @@ -11163,6 +11203,26 @@ "strip-ansi": "^4.0.0" } }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", diff --git a/package.json b/package.json index ce38bc6..2e72014 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,6 @@ "@babel/preset-react": "^7.0.0", "@fortawesome/fontawesome-free": "^5.11.2", "@testing-library/react": "^8.0.9", - "babel-eslint": "^9.0.0", "babel-jest": "^24.8.0", "babel-loader": "^8.0.6", "babel-plugin-module-resolver": "^3.2.0", @@ -48,11 +47,7 @@ "copy-webpack-plugin": "^5.0.4", "css-loader": "^3.2.0", "eslint": "^6.1.0", - "eslint-config-airbnb": "^18.0.1", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.14.3", - "eslint-plugin-react-hooks": "^1.7.0", + "eslint-config-reforis": "^1.0.0", "file-loader": "^4.2.0", "jest": "^24.8.0", "jest-mock-axios": "^3.0.0", diff --git a/src/bootstrap/EmailInput.js b/src/bootstrap/EmailInput.js index 9e499cd..44e78de 100644 --- a/src/bootstrap/EmailInput.js +++ b/src/bootstrap/EmailInput.js @@ -12,7 +12,6 @@ import { Input } from "./Input"; export const EmailInput = ({ ...props }) => ; - EmailInput.propTypes = { /** Field label. */ label: PropTypes.string.isRequired, diff --git a/src/bootstrap/Modal.js b/src/bootstrap/Modal.js index 4fc381f..a212c1f 100644 --- a/src/bootstrap/Modal.js +++ b/src/bootstrap/Modal.js @@ -37,7 +37,6 @@ export function Modal({ shown, setShown, children }) { }; }, [setShown]); - return (
diff --git a/src/bootstrap/RadioSet.js b/src/bootstrap/RadioSet.js index 48017a4..63af8f0 100644 --- a/src/bootstrap/RadioSet.js +++ b/src/bootstrap/RadioSet.js @@ -11,7 +11,6 @@ import { useUID } from "react-uid"; import { formFieldsSize } from "./constants"; - RadioSet.propTypes = { /** Name attribute of the input HTML tag. */ name: PropTypes.string.isRequired, diff --git a/src/bootstrap/Select.js b/src/bootstrap/Select.js index bc524c4..0d90752 100644 --- a/src/bootstrap/Select.js +++ b/src/bootstrap/Select.js @@ -9,7 +9,6 @@ import React from "react"; import PropTypes from "prop-types"; import { useUID } from "react-uid"; - Select.propTypes = { /** Select field Label. */ label: PropTypes.string.isRequired, diff --git a/src/bootstrap/TextInput.js b/src/bootstrap/TextInput.js index 137e114..be60bb6 100644 --- a/src/bootstrap/TextInput.js +++ b/src/bootstrap/TextInput.js @@ -10,10 +10,8 @@ import PropTypes from "prop-types"; import { Input } from "./Input"; - export const TextInput = ({ ...props }) => ; - TextInput.propTypes = { /** Field label. */ label: PropTypes.string.isRequired, diff --git a/src/form/hooks.js b/src/form/hooks.js index ebc48c5..f91b5da 100644 --- a/src/form/hooks.js +++ b/src/form/hooks.js @@ -48,7 +48,6 @@ export function useForm(validator, dataPreprocessor) { ]; } - function formReducer(state, action) { switch (action.type) { case FORM_ACTIONS.updateValue: { diff --git a/src/validations.js b/src/validations.js index 692d005..2af2855 100644 --- a/src/validations.js +++ b/src/validations.js @@ -29,7 +29,6 @@ const REs = { MultipleEmails: /^([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)( *, *[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ *)*$/, }; - const createValidator = (fieldType) => (value) => { if (value && value !== "") return REs[fieldType].test(value) ? undefined : ERROR_MESSAGES[fieldType]; }; From b831d664a93059f5c3915605cc742e559e61f889 Mon Sep 17 00:00:00 2001 From: Bogdan Bodnar Date: Tue, 12 Nov 2019 15:26:54 +0100 Subject: [PATCH 09/12] Add timout handling. --- src/api/hooks.js | 2 +- src/api/utils.js | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/api/hooks.js b/src/api/hooks.js index a30bd8d..aa19988 100644 --- a/src/api/hooks.js +++ b/src/api/hooks.js @@ -42,7 +42,7 @@ function createAPIHook(method) { dispatch({ type: API_ACTIONS.FAILURE, payload: getErrorMessage(error), - status: error.response.status, + status: error.response && error.response.status, }); } }, [url, contentType]); diff --git a/src/api/utils.js b/src/api/utils.js index 18a76e3..d727c80 100644 --- a/src/api/utils.js +++ b/src/api/utils.js @@ -53,9 +53,12 @@ function getCookie(name) { } export function getErrorMessage(error) { - let payload = "An unknown error occurred"; - if (error.response.headers["content-type"] === "application/json") { + let payload = _("An unknown error occurred."); + if (error.response && error.response.headers["content-type"] === "application/json") { payload = error.response.data; } + if (error.code === "ECONNABORTED") { + payload = _("Timeout error occurred."); + } return payload; } From 7e6e6f8c87cfacf071c7bea0a867fe7ec40a778f Mon Sep 17 00:00:00 2001 From: Bogdan Bodnar Date: Tue, 12 Nov 2019 15:27:40 +0100 Subject: [PATCH 10/12] Use generic error message in the ForisForm. --- src/form/components/ForisForm.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/form/components/ForisForm.js b/src/form/components/ForisForm.js index f739f5b..86b552b 100644 --- a/src/form/components/ForisForm.js +++ b/src/form/components/ForisForm.js @@ -87,9 +87,9 @@ export function ForisForm({ postCallback(); setAlert(_("Settings saved successfully"), ALERT_TYPES.SUCCESS); } else if (postState.state === API_STATE.ERROR) { - setAlert(_("Cannot save settings")); + setAlert(postState.data); } - }, [postCallback, postState.state, setAlert]); + }, [postCallback, postState.state, postState.data, setAlert]); if (forisModuleState.state === API_STATE.ERROR) { return ; From 23029470b9abb101f39b0442b5e5d1057179f272 Mon Sep 17 00:00:00 2001 From: Bogdan Bodnar Date: Wed, 13 Nov 2019 12:59:38 +0100 Subject: [PATCH 11/12] Improve error handling + small refactoring. --- src/api/hooks.js | 16 +++++++++++----- src/api/utils.js | 26 ++++++++++++++++++++------ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/api/hooks.js b/src/api/hooks.js index aa19988..da236d0 100644 --- a/src/api/hooks.js +++ b/src/api/hooks.js @@ -5,11 +5,11 @@ * See /LICENSE for more information. */ -import { useReducer, useCallback } from "react"; +import { useCallback, useReducer } from "react"; import { ForisURLs } from "forisUrls"; import { - API_STATE, API_ACTIONS, API_METHODS, TIMEOUT, HEADERS, getErrorMessage, + API_ACTIONS, API_METHODS, API_STATE, getErrorPayload, HEADERS, TIMEOUT, } from "./utils"; const DATA_METHODS = ["POST", "PATCH", "PUT"]; @@ -30,19 +30,25 @@ function createAPIHook(method) { dispatch({ type: API_ACTIONS.INIT }); try { const request = API_METHODS[method]; - const config = { timeout: TIMEOUT, headers }; + const config = { + timeout: TIMEOUT, + headers, + }; let result; if (DATA_METHODS.includes(method)) { result = await request(url, data, config); } else { result = await request(url, config); } - dispatch({ type: API_ACTIONS.SUCCESS, payload: result.data }); + dispatch({ + type: API_ACTIONS.SUCCESS, + payload: result.data, + }); } catch (error) { dispatch({ type: API_ACTIONS.FAILURE, - payload: getErrorMessage(error), status: error.response && error.response.status, + payload: getErrorPayload(error), }); } }, [url, contentType]); diff --git a/src/api/utils.js b/src/api/utils.js index d727c80..8e6c23b 100644 --- a/src/api/utils.js +++ b/src/api/utils.js @@ -52,13 +52,27 @@ function getCookie(name) { return cookieValue; } -export function getErrorMessage(error) { - let payload = _("An unknown error occurred."); - if (error.response && error.response.headers["content-type"] === "application/json") { - payload = error.response.data; +export function getErrorPayload(error) { + if (error.response) { + if (error.response.status === 403) { + return _("The session is expired. Please log in again."); + } + return getJSONErrorMessage(error); } if (error.code === "ECONNABORTED") { - payload = _("Timeout error occurred."); + return _("Timeout error occurred."); } - return payload; + if (error.request) { + return _("No response received."); + } + /* eslint no-console: "off" */ + console.error(error); + return _("An unknown error occurred. Check the console for more info."); +} + +export function getJSONErrorMessage(error) { + if (error.response.headers["content-type"] === "application/json") { + return error.response.data; + } + return _("An unknown API error occurred."); } From 73f4ab48c37725c5f712599769fc7784bc7fe561 Mon Sep 17 00:00:00 2001 From: Maciej Lenartowicz Date: Thu, 14 Nov 2019 11:28:25 +0100 Subject: [PATCH 12/12] Added virtual environment and packages required for translations. --- .gitignore | 3 ++ Makefile | 18 ++++++-- requirements.txt | 1 + translations/cs/LC_MESSAGES/forisjs.po | 52 +++++++++++++++++------ translations/da/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/de/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/el/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/en/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/fi/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/fo/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/forisjs.pot | 36 ++++++++++++---- translations/fr/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/hr/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/hu/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/it/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/ja/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/ko/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/lt/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/nb/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/nb_NO/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/nl/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/pl/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/ro/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/ru/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/sk/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- translations/sv/LC_MESSAGES/forisjs.po | 42 ++++++++++++++---- 26 files changed, 799 insertions(+), 193 deletions(-) create mode 100644 requirements.txt diff --git a/.gitignore b/.gitignore index f668a42..1ce182b 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ logs *.log +# Python +venv/ + # NodeJS ## Logs npm-debug.log* diff --git a/Makefile b/Makefile index 1d58e95..f01f172 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,9 @@ .PHONY: all install-js watch-js build-js collect-files pack publish-beta publish-latest lint test test-js-update-snapshots create-messages update-messages docs docs-watch clean +DEV_PYTHON=python3.7 +VENV_NAME?=venv +VENV_BIN=$(shell pwd)/$(VENV_NAME)/bin + all: @echo "make install-js" @echo " Install dependencies" @@ -22,6 +26,12 @@ all: @echo "make clean" @echo " Remove python artifacts and virtualenv." +venv: $(VENV_NAME)/bin/activate +$(VENV_NAME)/bin/activate: + test -d $(VENV_NAME) || $(DEV_PYTHON) -m virtualenv -p $(DEV_PYTHON) $(VENV_NAME) + $(VENV_BIN)/$(DEV_PYTHON) -m pip install -r requirements.txt + touch $(VENV_NAME)/bin/activate + install-js: package.json npm install --save-dev @@ -47,10 +57,10 @@ test: test-js-update-snapshots: npm test -- -u -create-messages: - pybabel extract -F babel.cfg -o ./translations/forisjs.pot . -update-messages: - pybabel update -i translations/forisjs.pot -d translations +create-messages: venv + $(VENV_BIN)/pybabel extract -F babel.cfg -o ./translations/forisjs.pot . +update-messages: venv + $(VENV_BIN)/pybabel update -i ./translations/forisjs.pot -d ./translations -D forisjs docs: npm run-script docs diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..01cbce3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +Babel diff --git a/translations/cs/LC_MESSAGES/forisjs.po b/translations/cs/LC_MESSAGES/forisjs.po index 085c508..51cac6a 100644 --- a/translations/cs/LC_MESSAGES/forisjs.po +++ b/translations/cs/LC_MESSAGES/forisjs.po @@ -1,4 +1,4 @@ -# Translations template for PROJECT. +# Czech translations for PROJECT. # Copyright (C) 2019 ORGANIZATION # This file is distributed under the same license as the PROJECT project. # FIRST AUTHOR , 2019. @@ -7,17 +7,16 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 12:55+0000\n" "Last-Translator: Stepan Henek \n" -"Language-Team: Czech \n" "Language: cs\n" +"Language-Team: Czech \n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" -"X-Generator: Weblate 3.9-dev\n" "Generated-By: Babel 2.7.0\n" #: src/validations.js:13 @@ -48,7 +47,31 @@ msgstr "Tohle není platná MAC adresa." msgid "Doesn't contain a list of emails separated by commas." msgstr "Neobsahuje seznam e-mailů oddělených čárkou." -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" "Změny, které byly provedeny, nebyly uloženy. Jste si jistý, že chcete " @@ -66,10 +89,13 @@ msgstr "Načítám nastavení" msgid "Save" msgstr "Uložit" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." -msgstr "Nastavení bylo úspěšně uloženo." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." +msgstr "" + +#~ msgid "Settings were successfully saved." +#~ msgstr "Nastavení bylo úspěšně uloženo." + +#~ msgid "Settings update was failed." +#~ msgstr "Ukládání nastavení selhalo." -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "Ukládání nastavení selhalo." diff --git a/translations/da/LC_MESSAGES/forisjs.po b/translations/da/LC_MESSAGES/forisjs.po index 6df1d29..f8c53dc 100644 --- a/translations/da/LC_MESSAGES/forisjs.po +++ b/translations/da/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:54+0200\n" "Last-Translator: FULL NAME \n" "Language: da\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/de/LC_MESSAGES/forisjs.po b/translations/de/LC_MESSAGES/forisjs.po index 3c3cff0..8e247a3 100644 --- a/translations/de/LC_MESSAGES/forisjs.po +++ b/translations/de/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:54+0200\n" "Last-Translator: FULL NAME \n" "Language: de\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/el/LC_MESSAGES/forisjs.po b/translations/el/LC_MESSAGES/forisjs.po index ae15ae1..3591b4d 100644 --- a/translations/el/LC_MESSAGES/forisjs.po +++ b/translations/el/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:54+0200\n" "Last-Translator: FULL NAME \n" "Language: el\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/en/LC_MESSAGES/forisjs.po b/translations/en/LC_MESSAGES/forisjs.po index 070c293..7a20e38 100644 --- a/translations/en/LC_MESSAGES/forisjs.po +++ b/translations/en/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:21+0200\n" "Last-Translator: FULL NAME \n" "Language: en\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/fi/LC_MESSAGES/forisjs.po b/translations/fi/LC_MESSAGES/forisjs.po index e510d10..ac64b52 100644 --- a/translations/fi/LC_MESSAGES/forisjs.po +++ b/translations/fi/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:54+0200\n" "Last-Translator: FULL NAME \n" "Language: fi\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/fo/LC_MESSAGES/forisjs.po b/translations/fo/LC_MESSAGES/forisjs.po index 2559f6d..a795b2a 100644 --- a/translations/fo/LC_MESSAGES/forisjs.po +++ b/translations/fo/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:54+0200\n" "Last-Translator: FULL NAME \n" "Language: fo\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/forisjs.pot b/translations/forisjs.pot index 6f2cf22..13921da 100644 --- a/translations/forisjs.pot +++ b/translations/forisjs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -45,7 +45,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -61,11 +85,7 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." -msgstr "" - -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" diff --git a/translations/fr/LC_MESSAGES/forisjs.po b/translations/fr/LC_MESSAGES/forisjs.po index 031bc27..60af4c6 100644 --- a/translations/fr/LC_MESSAGES/forisjs.po +++ b/translations/fr/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:54+0200\n" "Last-Translator: FULL NAME \n" "Language: fr\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/hr/LC_MESSAGES/forisjs.po b/translations/hr/LC_MESSAGES/forisjs.po index 8143216..d0b6b2b 100644 --- a/translations/hr/LC_MESSAGES/forisjs.po +++ b/translations/hr/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: hr\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -47,7 +47,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -63,11 +87,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/hu/LC_MESSAGES/forisjs.po b/translations/hu/LC_MESSAGES/forisjs.po index ed637f5..639b6bd 100644 --- a/translations/hu/LC_MESSAGES/forisjs.po +++ b/translations/hu/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: hu\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/it/LC_MESSAGES/forisjs.po b/translations/it/LC_MESSAGES/forisjs.po index 8fb67f4..33e6b01 100644 --- a/translations/it/LC_MESSAGES/forisjs.po +++ b/translations/it/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: it\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/ja/LC_MESSAGES/forisjs.po b/translations/ja/LC_MESSAGES/forisjs.po index 766c8f8..c3e8a0b 100644 --- a/translations/ja/LC_MESSAGES/forisjs.po +++ b/translations/ja/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: ja\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/ko/LC_MESSAGES/forisjs.po b/translations/ko/LC_MESSAGES/forisjs.po index 1d98f8e..24bb8d1 100644 --- a/translations/ko/LC_MESSAGES/forisjs.po +++ b/translations/ko/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: ko\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/lt/LC_MESSAGES/forisjs.po b/translations/lt/LC_MESSAGES/forisjs.po index c186bb9..a4b8957 100644 --- a/translations/lt/LC_MESSAGES/forisjs.po +++ b/translations/lt/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: lt\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -47,7 +47,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -63,11 +87,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/nb/LC_MESSAGES/forisjs.po b/translations/nb/LC_MESSAGES/forisjs.po index 6890f9d..0e62422 100644 --- a/translations/nb/LC_MESSAGES/forisjs.po +++ b/translations/nb/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: nb\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/nb_NO/LC_MESSAGES/forisjs.po b/translations/nb_NO/LC_MESSAGES/forisjs.po index 9e67527..26865a1 100644 --- a/translations/nb_NO/LC_MESSAGES/forisjs.po +++ b/translations/nb_NO/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:55+0200\n" "Last-Translator: FULL NAME \n" "Language: nb_NO\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/nl/LC_MESSAGES/forisjs.po b/translations/nl/LC_MESSAGES/forisjs.po index ebe6210..208b636 100644 --- a/translations/nl/LC_MESSAGES/forisjs.po +++ b/translations/nl/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: nl\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/pl/LC_MESSAGES/forisjs.po b/translations/pl/LC_MESSAGES/forisjs.po index fd803d9..35715ea 100644 --- a/translations/pl/LC_MESSAGES/forisjs.po +++ b/translations/pl/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: pl\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -47,7 +47,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -63,11 +87,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/ro/LC_MESSAGES/forisjs.po b/translations/ro/LC_MESSAGES/forisjs.po index a2a451a..6213ccc 100644 --- a/translations/ro/LC_MESSAGES/forisjs.po +++ b/translations/ro/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: ro\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -47,7 +47,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -63,11 +87,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/ru/LC_MESSAGES/forisjs.po b/translations/ru/LC_MESSAGES/forisjs.po index 8232f2a..9c81ac8 100644 --- a/translations/ru/LC_MESSAGES/forisjs.po +++ b/translations/ru/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: ru\n" @@ -17,7 +17,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -47,7 +47,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -63,11 +87,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/sk/LC_MESSAGES/forisjs.po b/translations/sk/LC_MESSAGES/forisjs.po index b890ff6..ab80b80 100644 --- a/translations/sk/LC_MESSAGES/forisjs.po +++ b/translations/sk/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: sk\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr "" diff --git a/translations/sv/LC_MESSAGES/forisjs.po b/translations/sv/LC_MESSAGES/forisjs.po index d8fd25f..e06729b 100644 --- a/translations/sv/LC_MESSAGES/forisjs.po +++ b/translations/sv/LC_MESSAGES/forisjs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2019-08-28 14:34+0200\n" +"POT-Creation-Date: 2019-11-14 11:13+0100\n" "PO-Revision-Date: 2019-08-28 17:56+0200\n" "Last-Translator: FULL NAME \n" "Language: sv\n" @@ -16,7 +16,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.6.0\n" +"Generated-By: Babel 2.7.0\n" #: src/validations.js:13 msgid "This is not a valid IPv4 address." @@ -46,7 +46,31 @@ msgstr "" msgid "Doesn't contain a list of emails separated by commas." msgstr "" -#: src/form/components/ForisForm.js:123 +#: src/api/utils.js:58 +msgid "The session is expired. Please log in again." +msgstr "" + +#: src/api/utils.js:63 +msgid "Timeout error occurred." +msgstr "" + +#: src/api/utils.js:66 +msgid "No response received." +msgstr "" + +#: src/api/utils.js:70 +msgid "An unknown error occurred. Check the console for more info." +msgstr "" + +#: src/api/utils.js:77 +msgid "An unknown API error occurred." +msgstr "" + +#: src/form/components/ForisForm.js:88 +msgid "Settings saved successfully" +msgstr "" + +#: src/form/components/ForisForm.js:140 msgid "Changes you made may not be saved. Are you sure you want to leave?" msgstr "" @@ -62,11 +86,13 @@ msgstr "" msgid "Save" msgstr "" -#: src/form/components/alerts.js:25 -msgid "Settings were successfully saved." +#: src/utils/ErrorMessage.js:13 +msgid "An error occurred while fetching data." msgstr "" -#: src/form/components/alerts.js:41 -msgid "Settings update was failed." -msgstr "" +#~ msgid "Settings were successfully saved." +#~ msgstr "" + +#~ msgid "Settings update was failed." +#~ msgstr ""