mirror of
https://github.com/shlinkio/shlink-web-client.git
synced 2026-03-13 11:03:50 +00:00
Minor refactoring on ImportServersBtn
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { UncontrolledTooltip } from 'reactstrap';
|
import { UncontrolledTooltip } from 'reactstrap';
|
||||||
import serversImporter from '../services/ServersImporter';
|
import serversImporter, { serversImporterType } from '../services/ServersImporter';
|
||||||
import { createServers } from '../reducers/server';
|
import { createServers } from '../reducers/server';
|
||||||
import { assoc } from 'ramda';
|
import { assoc } from 'ramda';
|
||||||
import { v4 as uuid } from 'uuid';
|
import { v4 as uuid } from 'uuid';
|
||||||
@@ -11,7 +11,9 @@ const defaultProps = {
|
|||||||
serversImporter,
|
serversImporter,
|
||||||
};
|
};
|
||||||
const propTypes = {
|
const propTypes = {
|
||||||
onChange: PropTypes.func,
|
onImport: PropTypes.func,
|
||||||
|
serversImporter: serversImporterType,
|
||||||
|
createServers: PropTypes.func,
|
||||||
};
|
};
|
||||||
|
|
||||||
export class ImportServersBtn extends React.Component {
|
export class ImportServersBtn extends React.Component {
|
||||||
@@ -21,15 +23,12 @@ export class ImportServersBtn extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { serversImporter, onImport } = this.props;
|
const { serversImporter: { importServersFromFile }, onImport, createServers } = this.props;
|
||||||
const onChange = e => serversImporter.importServersFromFile(e.target.files[0]).then(
|
const onChange = e =>
|
||||||
servers => {
|
importServersFromFile(e.target.files[0])
|
||||||
const { createServers } = this.props;
|
.then(servers => servers.map(server => assoc('id', uuid(), server)))
|
||||||
const serversWithIds = servers.map(server => assoc('id', uuid(), server));
|
.then(createServers)
|
||||||
createServers(serversWithIds);
|
.then(onImport);
|
||||||
onImport(serversWithIds);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
@@ -41,10 +40,10 @@ export class ImportServersBtn extends React.Component {
|
|||||||
>
|
>
|
||||||
Import from file
|
Import from file
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<UncontrolledTooltip placement="top" target="importBtn">
|
<UncontrolledTooltip placement="top" target="importBtn">
|
||||||
You can create servers by importing a CSV file with columns "name", "apiKey" and "url"
|
You can create servers by importing a CSV file with columns "name", "apiKey" and "url"
|
||||||
</UncontrolledTooltip>
|
</UncontrolledTooltip>
|
||||||
|
|
||||||
<input
|
<input
|
||||||
type="file"
|
type="file"
|
||||||
onChange={onChange}
|
onChange={onChange}
|
||||||
|
|||||||
@@ -1,4 +1,9 @@
|
|||||||
import csvjson from 'csvjson';
|
import csvjson from 'csvjson';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
export const serversImporterType = PropTypes.shape({
|
||||||
|
importServersFromFile: PropTypes.func,
|
||||||
|
});
|
||||||
|
|
||||||
export class ServersImporter {
|
export class ServersImporter {
|
||||||
constructor(csvjson) {
|
constructor(csvjson) {
|
||||||
|
|||||||
Reference in New Issue
Block a user