Merged in feature/fix_sonar_and_lifecycle (pull request #345)

Feature/fix sonar and lifecycle
This commit is contained in:
Eduard Heimbuch
2019-11-01 09:13:35 +00:00
7 changed files with 65 additions and 20 deletions

View File

@@ -0,0 +1,25 @@
import { chooseLocale, supportedLocales } from "./DateFromNow";
describe("test choose locale", () => {
it("should choose de", () => {
const locale = chooseLocale("de_DE", ["de", "en"]);
expect(locale).toBe(supportedLocales.de);
});
it("should choose de, even without language array", () => {
const locale = chooseLocale("de", []);
expect(locale).toBe(supportedLocales.de);
});
it("should choose es", () => {
const locale = chooseLocale("de", ["af", "be", "es"]);
expect(locale).toBe(supportedLocales.es);
});
it("should fallback en", () => {
const locale = chooseLocale("af", ["af", "be"]);
expect(locale).toBe(supportedLocales.en);
});
});

View File

@@ -10,8 +10,9 @@ type LocaleMap = {
type DateInput = Date | string;
const supportedLocales: LocaleMap = {
export const supportedLocales: LocaleMap = {
enUS,
en: enUS,
de,
es
};
@@ -40,14 +41,26 @@ const DateElement = styled.time`
cursor: help;
`;
export const chooseLocale = (language: string, languages?: string[]) => {
for (const lng of languages || []) {
const locale = supportedLocales[lng];
if (locale) {
return locale;
}
}
const locale = supportedLocales[language];
if (locale) {
return locale;
}
return enUS;
};
class DateFromNow extends React.Component<Props> {
getLocale = (): Locale => {
const { i18n } = this.props;
const locale = supportedLocales[i18n.language];
if (!locale) {
return enUS;
}
return locale;
return chooseLocale(i18n.language, i18n.languages);
};
createOptions = () => {
@@ -64,7 +77,7 @@ class DateFromNow extends React.Component<Props> {
toDate = (value: DateInput): Date => {
if (value instanceof Date) {
return value as Date;
return value;
}
return parseISO(value);
};