Migrated to TS main services except ShlinkApiClient

This commit is contained in:
Alejandro Celaya
2020-08-29 18:51:03 +02:00
parent 64a968711c
commit ebd7a76896
6 changed files with 30 additions and 29 deletions

View File

@@ -35,3 +35,6 @@ export const isReachableServer = (server: SelectedServer): server is ReachableSe
export const isServerWithId = (server: SelectedServer | ServerWithId): server is ServerWithId =>
!!server?.hasOwnProperty('id');
export const isNotFoundServer = (server: SelectedServer): server is NotFoundServer =>
!!server?.hasOwnProperty('serverNotFound');

View File

@@ -1,7 +1,7 @@
import React, { FC, useEffect } from 'react';
import { RouteChildrenProps } from 'react-router';
import Message from '../../utils/Message';
import { isReachableServer, SelectedServer } from '../data';
import { isNotFoundServer, SelectedServer } from '../data';
interface WithSelectedServerProps extends RouteChildrenProps<{ serverId: string }> {
selectServer: (serverId: string) => void;
@@ -21,7 +21,7 @@ export const withSelectedServer = (WrappedComponent: FC<WithSelectedServerProps>
return <Message loading />;
}
if (!isReachableServer(selectedServer)) {
if (isNotFoundServer(selectedServer)) {
return <ServerError />;
}

View File

@@ -1,20 +1,21 @@
import PropTypes from 'prop-types';
import { rangeOf } from '../utils';
import LocalStorage from './LocalStorage';
const HEX_COLOR_LENGTH = 6;
const { floor, random } = Math;
const letters = '0123456789ABCDEF';
const buildRandomColor = () =>
`#${rangeOf(HEX_COLOR_LENGTH, () => letters[floor(random() * letters.length)]).join('')}`;
const normalizeKey = (key) => key.toLowerCase().trim();
const buildRandomColor = () => `#${rangeOf(HEX_COLOR_LENGTH, () => letters[floor(random() * letters.length)]).join('')}`;
const normalizeKey = (key: string) => key.toLowerCase().trim();
export default class ColorGenerator {
constructor(storage) {
this.storage = storage;
this.colors = this.storage.get('colors') || {};
private readonly colors: Record<string, string>;
public constructor(private readonly storage: LocalStorage) {
this.colors = this.storage.get<Record<string, string>>('colors') || {};
}
getColorForKey = (key) => {
public readonly getColorForKey = (key: string) => {
const normalizedKey = normalizeKey(key);
const color = this.colors[normalizedKey];
@@ -26,7 +27,7 @@ export default class ColorGenerator {
return color;
};
setColorForKey = (key, color) => {
public readonly setColorForKey = (key: string, color: string) => {
const normalizedKey = normalizeKey(key);
this.colors[normalizedKey] = color;
@@ -36,6 +37,7 @@ export default class ColorGenerator {
};
}
/** @deprecated Use ColorGenerator class instead */
export const colorGeneratorType = PropTypes.shape({
getColorForKey: PropTypes.func,
setColorForKey: PropTypes.func,