From 35ae223db6cd308e474e64a359a8d2f4195d4401 Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 09:50:53 +0200 Subject: [PATCH 01/10] Isolate Attachment state --- .../sider/vedlegg/VedleggSide.tsx | 35 ++----------------- .../AttachmentUploader.tsx | 16 --------- .../redux/attachmentActionCreators.ts | 24 +++++-------- .../redux/attachmentActionDefinitions.ts | 2 +- .../attachment/redux/attachmentReducer.ts | 4 +-- 5 files changed, 15 insertions(+), 66 deletions(-) diff --git a/src/app/connected-components/sider/vedlegg/VedleggSide.tsx b/src/app/connected-components/sider/vedlegg/VedleggSide.tsx index 647aac90a5..598081fc44 100644 --- a/src/app/connected-components/sider/vedlegg/VedleggSide.tsx +++ b/src/app/connected-components/sider/vedlegg/VedleggSide.tsx @@ -1,11 +1,8 @@ import * as React from 'react'; import Applikasjonsside from '../Applikasjonsside'; import DocumentTitle from 'react-document-title'; -import { connect } from 'react-redux'; -import { AppState } from '../../../redux/reducers'; import { DispatchProps } from 'common/redux/types'; import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg'; -import søknadActions from './../../../redux/actions/søknad/søknadActionCreators'; import AttachmentUploader from 'storage/attachment/connected-components/attachment-uploader/AttachmentUploader'; export interface StateProps { @@ -16,46 +13,20 @@ export type Props = StateProps & DispatchProps; class VedleggSide extends React.Component { render() { - const { vedlegg } = this.props; return (

Adopsjonsvedtak

- { - this.props.dispatch( - søknadActions.updateVedlegg({ - adopsjonsvedtak: files - }) - ); - }} - /> +

Fødselsattest

- { - this.props.dispatch( - søknadActions.updateVedlegg({ - fødselsattest: files - }) - ); - }} - /> +
); } } -const mapStateToProps = (state: AppState): StateProps => { - return { - vedlegg: state.søknad.vedlegg - }; -}; -export default connect(mapStateToProps)(VedleggSide); +export default VedleggSide; diff --git a/src/storage/attachment/connected-components/attachment-uploader/AttachmentUploader.tsx b/src/storage/attachment/connected-components/attachment-uploader/AttachmentUploader.tsx index 4670884300..366223f13f 100644 --- a/src/storage/attachment/connected-components/attachment-uploader/AttachmentUploader.tsx +++ b/src/storage/attachment/connected-components/attachment-uploader/AttachmentUploader.tsx @@ -12,8 +12,6 @@ import { AttachmentAppState } from '../../redux/attachmentReducer'; export interface OwnProps { group: string; - attachments?: Attachment[]; - onChange: (attachment: Attachment[]) => void; } export interface StateProps { @@ -40,20 +38,6 @@ class AttachmentsUploader extends React.Component { this.uploadNewFiles = this.uploadNewFiles.bind(this); } - componentWillReceiveProps(nextProps: Props) { - const curr = getGroupedAttachments( - this.props.attachments, - this.props.group - ); - const next = getGroupedAttachments( - nextProps.attachments, - nextProps.group - ); - if (JSON.stringify(curr) !== JSON.stringify(next)) { - this.props.onChange(nextProps.attachments); - } - } - onFilesSelect(files: Attachment[]) { this.props.dispatch(addAttachments(files, this.props.group)); this.uploadNewFiles(files); diff --git a/src/storage/attachment/redux/attachmentActionCreators.ts b/src/storage/attachment/redux/attachmentActionCreators.ts index 39899872a3..39204f93e0 100644 --- a/src/storage/attachment/redux/attachmentActionCreators.ts +++ b/src/storage/attachment/redux/attachmentActionCreators.ts @@ -1,5 +1,5 @@ import { - AttachmentActionTypes, + AttachmentAction, AttachmentActionKeys } from './attachmentActionDefinitions'; import { Attachment } from '../types/Attachment'; @@ -7,7 +7,7 @@ import { Attachment } from '../types/Attachment'; export function addAttachments( attachments: Attachment[], group?: string -): AttachmentActionTypes { +): AttachmentAction { return { type: AttachmentActionKeys.ADD, attachments, @@ -15,27 +15,21 @@ export function addAttachments( }; } -export function deleteAttachment( - attachment: Attachment -): AttachmentActionTypes { +export function deleteAttachment(attachment: Attachment): AttachmentAction { return { type: AttachmentActionKeys.DELETE, attachment }; } -export function uploadAttachment( - attachment: Attachment -): AttachmentActionTypes { +export function uploadAttachment(attachment: Attachment): AttachmentAction { return { type: AttachmentActionKeys.UPLOAD, attachment }; } -export function attachmentPending( - attachment: Attachment -): AttachmentActionTypes { +export function attachmentPending(attachment: Attachment): AttachmentAction { return { type: AttachmentActionKeys.PENDING, attachment @@ -45,7 +39,7 @@ export function attachmentPending( export function attachmentUploadSuccess( url: string, attachment: Attachment -): AttachmentActionTypes { +): AttachmentAction { return { type: AttachmentActionKeys.UPLOAD_SUCCESS, attachment, @@ -56,7 +50,7 @@ export function attachmentUploadSuccess( export function attachmentUploadFailed( error: string, attachment: Attachment -): AttachmentActionTypes { +): AttachmentAction { return { type: AttachmentActionKeys.UPLOAD_FAILED, attachment, @@ -66,7 +60,7 @@ export function attachmentUploadFailed( export function attachmentDeleteSuccess( attachment: Attachment -): AttachmentActionTypes { +): AttachmentAction { return { type: AttachmentActionKeys.DELETE_SUCCESS, attachment @@ -76,7 +70,7 @@ export function attachmentDeleteSuccess( export function attachmentDeleteFailed( error: string, attachment: Attachment -): AttachmentActionTypes { +): AttachmentAction { return { type: AttachmentActionKeys.DELETE_FAILED, attachment, diff --git a/src/storage/attachment/redux/attachmentActionDefinitions.ts b/src/storage/attachment/redux/attachmentActionDefinitions.ts index b053217dca..574f22712f 100644 --- a/src/storage/attachment/redux/attachmentActionDefinitions.ts +++ b/src/storage/attachment/redux/attachmentActionDefinitions.ts @@ -55,7 +55,7 @@ interface AttachmentDeleteFailed { error: string; } -export type AttachmentActionTypes = +export type AttachmentAction = | Add | UploadPending | UploadAttachment diff --git a/src/storage/attachment/redux/attachmentReducer.ts b/src/storage/attachment/redux/attachmentReducer.ts index ead68e0296..f8ee108608 100644 --- a/src/storage/attachment/redux/attachmentReducer.ts +++ b/src/storage/attachment/redux/attachmentReducer.ts @@ -1,6 +1,6 @@ import { Attachment } from '../types/Attachment'; import { - AttachmentActionTypes, + AttachmentAction, AttachmentActionKeys } from './attachmentActionDefinitions'; @@ -65,7 +65,7 @@ const setAttachmentUploaded = ( const attachmentReducer = ( state = getDefaultState(), - action: AttachmentActionTypes + action: AttachmentAction ): AttachmentReducerState => { switch (action.type) { case AttachmentActionKeys.ADD: From 1d711e6deb7c3e2ccd5080372aaf3f5021d1428f Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 12:51:19 +0200 Subject: [PATCH 02/10] =?UTF-8?q?Change=20SendS=C3=B8knad=20to=20send=20on?= =?UTF-8?q?ly=20meta=20about=20Vedlegg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/api.ts | 22 ++++++--- .../S\303\270knadsvedlegg.tsx" | 13 ++++++ .../Eksempels\303\270knad.tsx" | 11 ++++- .../sider/inngangsside/Inngangsside.tsx | 2 +- .../sider/vedlegg/VedleggSide.tsx | 10 +---- .../RelasjonTilBarnAdopsjonSteg.tsx | 45 ++++--------------- .../RelasjonTilBarnForeldreansvar.tsx | 44 ++---------------- .../RelasjonTilBarnF\303\270dselSteg.tsx" | 23 +++++++--- .../partials/F\303\270dtBarnPartial.tsx" | 39 +++------------- .../partials/Uf\303\270dtBarnPartial.tsx" | 39 +++------------- .../RelasjonTilBarnStebarnsadopsjon.tsx | 40 ++--------------- .../redux/actions/api/apiActionCreators.ts | 9 +++- .../redux/actions/api/apiActionDefinitions.ts | 2 + .../s\303\270knadActionCreators.ts" | 10 +---- .../s\303\270knadActionDefinitions.ts" | 7 --- .../redux/reducers/s\303\270knadReducer.ts" | 18 -------- src/app/redux/sagas/innsendingSaga.ts | 6 ++- .../app/types/s\303\270knad/S\303\270knad.ts" | 23 ++++++++-- .../s\303\270knad/S\303\270knadsvedlegg.ts" | 25 ----------- .../types/s\303\270knad/Utenlandsopphold.ts" | 12 ++--- src/app/util/vedleggConfig.ts | 2 +- src/app/util/vedleggUtil.ts | 9 ++++ src/storage/attachment/util/attachmentUtil.ts | 7 +++ tslint.json | 2 - 24 files changed, 142 insertions(+), 278 deletions(-) create mode 100644 "src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" delete mode 100644 "src/app/types/s\303\270knad/S\303\270knadsvedlegg.ts" create mode 100644 src/app/util/vedleggUtil.ts create mode 100644 src/storage/attachment/util/attachmentUtil.ts diff --git a/src/app/api/api.ts b/src/app/api/api.ts index 488e62e3a1..1433b90326 100644 --- a/src/app/api/api.ts +++ b/src/app/api/api.ts @@ -1,6 +1,10 @@ import axios from 'axios'; -import Søknad from '../types/søknad/Søknad'; +import Søknad, { + Søknadsvedlegginfo, + SøknadsvedleggType +} from '../types/søknad/Søknad'; import Environment from '../../app/Environment'; +import { Attachment } from 'storage/attachment/types/Attachment'; function getPerson() { const endpoint = Environment.REST_API_URL; @@ -10,8 +14,19 @@ function getPerson() { }); } -function sendSøknad(søknad: Søknad) { +const mapAttachmentTilSøknadsvedlegginfo = ( + attachment: Attachment +): Søknadsvedlegginfo => ({ + id: attachment.id, + filnavn: attachment.filename, + url: attachment.url as string, + type: attachment.group as SøknadsvedleggType, + filstørrelse: attachment.filesize +}); + +function sendSøknad(søknad: Søknad, vedlegg: Attachment[]) { const formData = new FormData(); + søknad.vedlegg = vedlegg.map((v) => mapAttachmentTilSøknadsvedlegginfo(v)); formData.append( 'soknad', new Blob([JSON.stringify(søknad)], { @@ -19,9 +34,6 @@ function sendSøknad(søknad: Søknad) { }) ); - const { vedlegg } = søknad; - formData.append('vedlegg', vedlegg[0]); - const url = `${Environment.REST_API_URL}/soknad`; return axios.post(url, formData, { withCredentials: true, diff --git "a/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" "b/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" new file mode 100644 index 0000000000..f62f63bbf8 --- /dev/null +++ "b/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" @@ -0,0 +1,13 @@ +import * as React from 'react'; +import AttachmentUploader from 'storage/attachment/connected-components/attachment-uploader/AttachmentUploader'; +import { SøknadsvedleggType } from '../../types/s\u00F8knad/S\u00F8knad'; + +export interface Props { + type: SøknadsvedleggType; +} + +const Søknadsvedlegg: React.StatelessComponent = ({ type }) => ( + +); + +export default Søknadsvedlegg; diff --git "a/src/app/connected-components/Eksempels\303\270knad.tsx" "b/src/app/connected-components/Eksempels\303\270knad.tsx" index 84f3e1424d..2a948b44f5 100644 --- "a/src/app/connected-components/Eksempels\303\270knad.tsx" +++ "b/src/app/connected-components/Eksempels\303\270knad.tsx" @@ -33,6 +33,8 @@ import { getSøkerrollerForBruker } from '../util/søkerrollerUtils'; import { Periode } from 'uttaksplan/types'; import Uttaksplan from 'uttaksplan/components/uttaksplan/Uttaksplan'; import { Språkkode } from 'common/intl/types'; +import { Attachment } from 'storage/attachment/types/Attachment'; +import { AppState } from '../redux/reducers'; interface StateProps { annenForelder: AnnenForelderPartial; @@ -42,6 +44,7 @@ interface StateProps { perioder: Periode[]; roller?: SøkerRolle[]; søknad: Søknad; + vedlegg: Attachment[]; språkkode: Språkkode; } @@ -58,6 +61,7 @@ class Eksempelsøknad extends React.Component { annenForelder, utenlandsopphold, perioder, + vedlegg, intl } = this.props; @@ -291,7 +295,9 @@ class Eksempelsøknad extends React.Component { )} dispatch(apiActions.sendSøknad(søknad))}> + onClick={() => + dispatch(apiActions.sendSøknad(søknad, vedlegg)) + }> Send søknad @@ -299,7 +305,7 @@ class Eksempelsøknad extends React.Component { } } -export default connect((state: any) => { +export default connect((state: AppState) => { const { situasjon } = state.søknad; const kjønn = state.api.person ? state.api.person.kjønn : undefined; @@ -310,6 +316,7 @@ export default connect((state: any) => { return { søknad: state.søknad, + vedlegg: state.attachments, annenForelder: state.søknad.annenForelder, barn: state.søknad.barn, utenlandsopphold: state.søknad.utenlandsopphold, diff --git a/src/app/connected-components/sider/inngangsside/Inngangsside.tsx b/src/app/connected-components/sider/inngangsside/Inngangsside.tsx index 76889c9896..f2e5a8430e 100644 --- a/src/app/connected-components/sider/inngangsside/Inngangsside.tsx +++ b/src/app/connected-components/sider/inngangsside/Inngangsside.tsx @@ -14,7 +14,7 @@ import { injectIntl, InjectedIntlProps } from 'react-intl'; import BekreftCheckboksPanel from 'nav-frontend-skjema/lib/bekreft-checkboks-panel'; import { HistoryProps } from '../../../types/common'; import { DispatchProps } from 'common/redux/types'; -import Spørsmål from 'common/components/sp\u00F8rsm\u00E5l/Sp\u00F8rsm\u00E5l'; +import Spørsmål from 'common/components/spørsm\u00E5l/Spørsm\u00E5l'; import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp'; export interface StateProps { diff --git a/src/app/connected-components/sider/vedlegg/VedleggSide.tsx b/src/app/connected-components/sider/vedlegg/VedleggSide.tsx index 598081fc44..0ca07eab99 100644 --- a/src/app/connected-components/sider/vedlegg/VedleggSide.tsx +++ b/src/app/connected-components/sider/vedlegg/VedleggSide.tsx @@ -1,17 +1,9 @@ import * as React from 'react'; import Applikasjonsside from '../Applikasjonsside'; import DocumentTitle from 'react-document-title'; -import { DispatchProps } from 'common/redux/types'; -import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg'; import AttachmentUploader from 'storage/attachment/connected-components/attachment-uploader/AttachmentUploader'; -export interface StateProps { - vedlegg: Søknadsvedlegg; -} - -export type Props = StateProps & DispatchProps; - -class VedleggSide extends React.Component { +class VedleggSide extends React.Component<{}, {}> { render() { return ( diff --git a/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx b/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx index c580a900e2..34f1b0242f 100644 --- a/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx +++ b/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx @@ -15,20 +15,15 @@ import DatoInput from 'common/components/dato-input/DatoInput'; import FødselsdatoerSpørsmål from '../../../spørsmål/FødselsdatoerSpørsmål'; import utils from '../../../util/fødselsdato'; -import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg'; -import { - removeFileFromArray, - concatNewFiles -} from 'common/components/vedlegg/util'; - -import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt'; import { AppState } from '../../../redux/reducers'; import Steg from '../../../components/layout/Steg'; import Bolk from '../../../components/layout/Bolk'; +import Søknadsvedlegg from '../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import { getSøknadsvedlegg } from '../../../util/vedleggUtil'; interface StateProps { barn: FødtBarn; - vedlegg: Søknadsvedlegg; + visSpørsmålOmAntallBarn: boolean; } type Props = StateProps & InjectedIntlProps & DispatchProps; @@ -52,7 +47,7 @@ class RelasjonTilBarnAdopsjonSteg extends React.Component { } render() { - const { vedlegg, barn, dispatch, intl } = this.props; + const { visSpørsmålOmAntallBarn, barn, dispatch, intl } = this.props; return ( @@ -78,36 +73,11 @@ class RelasjonTilBarnAdopsjonSteg extends React.Component { intl, 'vedlegg.tittel.omsorgsovertakelse' )} - render={() => ( - { - dispatch( - søknadActions.updateVedlegg({ - omsorgsovertakelse: concatNewFiles( - attachment, - vedlegg.omsorgsovertakelse - ) - }) - ); - }} - onFileDelete={(attachment) => - dispatch( - søknadActions.updateVedlegg({ - omsorgsovertakelse: removeFileFromArray( - attachment, - vedlegg.omsorgsovertakelse - ) - }) - ) - } - /> - )} + render={() => } /> 0} + synlig={visSpørsmålOmAntallBarn} render={() => ( { const mapStateToProps = (state: AppState): StateProps => ({ barn: state.søknad.barn as FødtBarn, - vedlegg: state.søknad.vedlegg + visSpørsmålOmAntallBarn: + getSøknadsvedlegg('omsorgsovertakelse', state).length > 0 }); export default connect(mapStateToProps)( diff --git a/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx b/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx index 87f9a77549..1c9a8dfe58 100644 --- a/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx +++ b/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx @@ -19,17 +19,11 @@ import { ForeldreansvarBarnPartial } from '../../../types/søknad/Barn'; import Veilederinfo from 'common/components/veileder-info/Veilederinfo'; import { Fødselsdato } from '../../../types/common'; import { getAlderFraDato } from '../../../util/dates'; -import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt'; -import { - concatNewFiles, - removeFileFromArray -} from 'common/components/vedlegg/util'; -import SøknadsvedleggType from '../../../types/søknad/Søknadsvedlegg'; +import Søknadsvedlegg from '../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; export interface StateProps { barn: ForeldreansvarBarnPartial; visOver15årMelding: boolean; - vedlegg: SøknadsvedleggType; } export type Props = DispatchProps & StateProps & InjectedIntlProps; @@ -53,13 +47,7 @@ class RelasjonTilBarnForeldreansvar extends React.Component { } render() { - const { - barn, - visOver15årMelding, - vedlegg, - intl, - dispatch - } = this.props; + const { barn, visOver15årMelding, intl, dispatch } = this.props; return ( { ( - { - dispatch( - søknadActions.updateVedlegg({ - adopsjonsvedtak: concatNewFiles( - files, - vedlegg.adopsjonsvedtak - ) - }) - ); - }} - onFileDelete={(file) => - dispatch( - søknadActions.updateVedlegg({ - adopsjonsvedtak: removeFileFromArray( - file, - vedlegg.adopsjonsvedtak - ) - }) - ) - } - /> - )} + render={() => } /> { const barn = state.søknad.barn as ForeldreansvarBarnPartial; return { barn, - vedlegg: state.søknad.vedlegg, visOver15årMelding: erAlderOver15År(barn.fødselsdatoer || []) }; }; diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" index aae4b2c609..87c7431d69 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" @@ -15,19 +15,29 @@ import Søknad, { SøkerRolle } from '../../../types/søknad/Søknad'; import { AppState } from '../../../redux/reducers'; import Person from '../../../types/Person'; import { HistoryProps, Kjønn } from '../../../types/common'; -import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg'; +import { Attachment } from 'storage/attachment/types/Attachment'; +import { getSøknadsvedlegg } from '../../../util/vedleggUtil'; interface StateProps { barn: BarnPartial; søknad: Søknad; - vedlegg: Søknadsvedlegg; + fødselsattest: Attachment[]; + terminbekreftelse: Attachment[]; person?: Person; } type Props = StateProps & InjectedIntlProps & DispatchProps & HistoryProps; class RelasjonTilBarnFødsel extends React.Component { render() { - const { barn, dispatch, person, søknad, vedlegg, history } = this.props; + const { + barn, + dispatch, + person, + søknad, + fødselsattest, + terminbekreftelse, + history + } = this.props; if (person) { const { søkerRolle } = søknad; @@ -56,14 +66,14 @@ class RelasjonTilBarnFødsel extends React.Component { ) : ( { const mapStateToProps = (state: AppState): StateProps => ({ søknad: state.søknad, barn: state.søknad.barn, - vedlegg: state.søknad.vedlegg, + fødselsattest: getSøknadsvedlegg('fødselsattest', state), + terminbekreftelse: getSøknadsvedlegg('terminbekreftelse', state), person: state.api.person }); diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" index e412e5712e..31ac285af8 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" @@ -2,11 +2,6 @@ import * as React from 'react'; import { InjectedIntlProps, injectIntl } from 'react-intl'; import Spørsmål from 'common/components/spørsmål/Spørsmål'; import Bolk from 'app/components/layout/Bolk'; -import { - concatNewFiles, - removeFileFromArray -} from 'common/components/vedlegg/util'; -import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt'; import søknadActions from '../../../../redux/actions/søknad/søknadActionCreators'; import AntallBarnSpørsmål from '../../../../spørsmål/AntallBarnSpørsmål'; @@ -17,13 +12,14 @@ import utils from '../../../../util/fødselsdato'; import { søknadStegPath } from '../../StegRoutes'; import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp'; import { HistoryProps } from '../../../../types/common'; -import Søknadsvedlegg from '../../../../types/søknad/Søknadsvedlegg'; import { DispatchProps } from 'common/redux/types'; import getMessage from 'common/util/i18nUtils'; +import Søknadsvedlegg from '../../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import { Attachment } from 'storage/attachment/types/Attachment'; interface StateProps { barn: FødtBarn; - vedlegg: Søknadsvedlegg; + vedlegg: Attachment[]; } type Props = StateProps & InjectedIntlProps & DispatchProps & HistoryProps; @@ -88,35 +84,10 @@ class FødtBarnPartial extends React.Component { ) } tittel={getMessage(intl, 'vedlegg.tittel.fødselsattest')} - render={() => ( - { - dispatch( - søknadActions.updateVedlegg({ - fødselsattest: concatNewFiles( - files, - vedlegg.fødselsattest - ) - }) - ); - }} - onFileDelete={(file) => - dispatch( - søknadActions.updateVedlegg({ - fødselsattest: removeFileFromArray( - file, - vedlegg.fødselsattest - ) - }) - ) - } - /> - )} + render={() => } /> - {vedlegg.fødselsattest.length > 0 && ( + {vedlegg.length > 0 && ( diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" index bdd15432e8..6c8b796ca9 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" @@ -5,11 +5,6 @@ import Spørsmål from 'common/components/spørsmål/Spørsmål'; import MorForSykSpørsmål from '../../../../spørsmål/MorForSykSpørsmål'; import DatoInput from 'common/components/dato-input/DatoInput'; import Bolk from 'app/components/layout/Bolk'; -import { - concatNewFiles, - removeFileFromArray -} from 'common/components/vedlegg/util'; -import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt'; import søknadActions from '../../../../redux/actions/søknad/søknadActionCreators'; import Veilederinfo from 'common/components/veileder-info/Veilederinfo'; @@ -18,14 +13,15 @@ import AntallBarnSpørsmål from '../../../../spørsmål/AntallBarnSpørsmål'; import { søknadStegPath } from '../../StegRoutes'; import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp'; import { HistoryProps } from '../../../../types/common'; -import SøknadsvedleggType from '../../../../types/søknad/Søknadsvedlegg'; import { DispatchProps } from 'common/redux/types'; import getMessage from 'common/util/i18nUtils'; +import Søknadsvedlegg from '../../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import { Attachment } from 'storage/attachment/types/Attachment'; interface UfødtBarnPartialProps { barn: UfødtBarn; søknad: SøknadPartial; - vedlegg: SøknadsvedleggType; + vedlegg: Attachment[]; erFarEllerMedmor: boolean; } @@ -123,36 +119,13 @@ class UfødtBarnPartial extends React.Component { 'vedlegg.tittel.terminbekreftelse' )} render={() => ( - { - dispatch( - søknadActions.updateVedlegg({ - terminbekreftelse: concatNewFiles( - files, - vedlegg.terminbekreftelse - ) - }) - ); - }} - onFileDelete={(file) => - dispatch( - søknadActions.updateVedlegg({ - terminbekreftelse: removeFileFromArray( - file, - vedlegg.terminbekreftelse - ) - }) - ) - } - /> + )} /> 0 && + vedlegg.length > 0 && barn.termindato !== undefined } render={() => ( @@ -175,7 +148,7 @@ class UfødtBarnPartial extends React.Component { /> {barn.terminbekreftelseDato && - vedlegg.terminbekreftelse.length > 0 && ( + vedlegg.length > 0 && ( diff --git a/src/app/connected-components/steg/relasjon-til-barn-stebarnsadopsjon/RelasjonTilBarnStebarnsadopsjon.tsx b/src/app/connected-components/steg/relasjon-til-barn-stebarnsadopsjon/RelasjonTilBarnStebarnsadopsjon.tsx index 3fd31f8cbb..55f75f6e6c 100644 --- a/src/app/connected-components/steg/relasjon-til-barn-stebarnsadopsjon/RelasjonTilBarnStebarnsadopsjon.tsx +++ b/src/app/connected-components/steg/relasjon-til-barn-stebarnsadopsjon/RelasjonTilBarnStebarnsadopsjon.tsx @@ -16,16 +16,10 @@ import FødselsdatoerSpørsmål from '../../../spørsmål/FødselsdatoerSpørsm import Labeltekst from 'common/components/labeltekst/Labeltekst'; import utils from '../../../util/fødselsdato'; -import VedleggOversikt from 'common/components/vedlegg/VedleggOversikt'; -import Søknadsvedlegg from '../../../types/søknad/Søknadsvedlegg'; -import { - concatNewFiles, - removeFileFromArray -} from 'common/components/vedlegg/util'; +import Søknadsvedlegg from '../../../components/søknadsvedlegg/Søknadsvedlegg'; export interface StateProps { barn: Adopsjonsbarn; - vedlegg: Søknadsvedlegg; } export type Props = DispatchProps & StateProps & InjectedIntlProps; @@ -52,7 +46,7 @@ class RelasjonTilBarnStebarnsadopsjon extends React.Component { } render() { - const { barn, intl, vedlegg, dispatch } = this.props; + const { barn, intl, dispatch } = this.props; return ( { ( - { - dispatch( - søknadActions.updateVedlegg({ - adopsjonsvedtak: concatNewFiles( - files, - vedlegg.adopsjonsvedtak - ) - }) - ); - }} - onFileDelete={(file) => - dispatch( - søknadActions.updateVedlegg({ - adopsjonsvedtak: removeFileFromArray( - file, - vedlegg.adopsjonsvedtak - ) - }) - ) - } - /> - )} + render={() => } /> { const mapStateToProps = (state: AppState): StateProps => { return { - barn: state.søknad.barn as Adopsjonsbarn, - vedlegg: state.søknad.vedlegg + barn: state.søknad.barn as Adopsjonsbarn }; }; diff --git a/src/app/redux/actions/api/apiActionCreators.ts b/src/app/redux/actions/api/apiActionCreators.ts index ce6aa4abb4..4d34762f19 100644 --- a/src/app/redux/actions/api/apiActionCreators.ts +++ b/src/app/redux/actions/api/apiActionCreators.ts @@ -1,5 +1,6 @@ import { ApiActionKeys, ApiActionTypes } from './apiActionDefinitions'; import Søknad from '../../../types/søknad/Søknad'; +import { Attachment } from 'storage/attachment/types/Attachment'; export function getPerson(): ApiActionTypes { return { @@ -7,10 +8,14 @@ export function getPerson(): ApiActionTypes { }; } -export function sendSøknad(søknad: Søknad): ApiActionTypes { +export function sendSøknad( + søknad: Søknad, + vedlegg: Attachment[] +): ApiActionTypes { return { type: ApiActionKeys.SEND_SØKNAD_REQUEST, - søknad + søknad, + vedlegg }; } diff --git a/src/app/redux/actions/api/apiActionDefinitions.ts b/src/app/redux/actions/api/apiActionDefinitions.ts index dc94cda1a3..8a621bb101 100644 --- a/src/app/redux/actions/api/apiActionDefinitions.ts +++ b/src/app/redux/actions/api/apiActionDefinitions.ts @@ -1,5 +1,6 @@ import Person from '../../../types/Person'; import Søknad from '../../../types/søknad/Søknad'; +import { Attachment } from 'storage/attachment/types/Attachment'; export enum ApiActionKeys { 'GET_PERSON_REQUEST' = 'getPersonRequest', @@ -28,6 +29,7 @@ interface GetPersonFailed { export interface SendSøknadRequest { type: ApiActionKeys.SEND_SØKNAD_REQUEST; søknad: Søknad; + vedlegg: Attachment[]; } interface SendSøknadSuccess { diff --git "a/src/app/redux/actions/s\303\270knad/s\303\270knadActionCreators.ts" "b/src/app/redux/actions/s\303\270knad/s\303\270knadActionCreators.ts" index 7e57181be4..76d7d28835 100644 --- "a/src/app/redux/actions/s\303\270knad/s\303\270knadActionCreators.ts" +++ "b/src/app/redux/actions/s\303\270knad/s\303\270knadActionCreators.ts" @@ -3,7 +3,6 @@ import { SøknadActionKeys, UpdateBarn, UpdateSøknad, - UpdateVedlegg, UpdateUtenlandsopphold } from './søknadActionDefinitions'; import { @@ -12,7 +11,6 @@ import { AdopsjonsbarnPartial, ForeldreansvarBarnPartial } from '../../../types/søknad/Barn'; -import { SøknadsvedleggPartial } from '../../../types/søknad/Søknadsvedlegg'; import { AnnenForelderPartial } from '../../../types/søknad/AnnenForelder'; import { UtenlandsoppholdPartial } from '../../../types/søknad/Utenlandsopphold'; @@ -44,15 +42,9 @@ const updateSøknad = (payload: Skjemadata): UpdateSøknad => ({ payload }); -const updateVedlegg = (payload: SøknadsvedleggPartial): UpdateVedlegg => ({ - type: SøknadActionKeys.UPDATE_VEDLEGG, - payload -}); - export default { updateAnnenForelder, updateBarn, updateUtenlandsopphold, - updateSøknad, - updateVedlegg + updateSøknad }; diff --git "a/src/app/redux/actions/s\303\270knad/s\303\270knadActionDefinitions.ts" "b/src/app/redux/actions/s\303\270knad/s\303\270knadActionDefinitions.ts" index 5691c83bca..461d0e267e 100644 --- "a/src/app/redux/actions/s\303\270knad/s\303\270knadActionDefinitions.ts" +++ "b/src/app/redux/actions/s\303\270knad/s\303\270knadActionDefinitions.ts" @@ -1,6 +1,5 @@ import { Skjemadata } from '../../../types/søknad/Søknad'; import { BarnPartial } from '../../../types/søknad/Barn'; -import { SøknadsvedleggPartial } from '../../../types/søknad/Søknadsvedlegg'; import { AnnenForelderPartial } from '../../../types/søknad/AnnenForelder'; import { UtenlandsoppholdPartial } from '../../../types/søknad/Utenlandsopphold'; @@ -32,14 +31,8 @@ export interface UpdateSøknad { payload: Skjemadata; } -export interface UpdateVedlegg { - type: SøknadActionKeys.UPDATE_VEDLEGG; - payload: SøknadsvedleggPartial; -} - export type SøknadAction = | UpdateBarn | UpdateSøknad - | UpdateVedlegg | UpdateAnnenForelder | UpdateUtenlandsopphold; diff --git "a/src/app/redux/reducers/s\303\270knadReducer.ts" "b/src/app/redux/reducers/s\303\270knadReducer.ts" index 2e9ad48770..3e6c63ccf2 100644 --- "a/src/app/redux/reducers/s\303\270knadReducer.ts" +++ "b/src/app/redux/reducers/s\303\270knadReducer.ts" @@ -3,7 +3,6 @@ import { SøknadActionKeys } from '../actions/søknad/søknadActionDefinitions'; import { SøknadPartial } from '../../types/søknad/Søknad'; -import { SøknadsvedleggPartial } from '../../types/søknad/Søknadsvedlegg'; const getDefaultState = (): SøknadPartial => { return { @@ -13,25 +12,10 @@ const getDefaultState = (): SøknadPartial => { fødselsdatoer: [] }, utenlandsopphold: {}, - vedlegg: { - omsorgsovertakelse: [], - adopsjonsvedtak: [], - overtakelsedokumentasjon: [], - terminbekreftelse: [], - fødselsattest: [] - }, harGodkjentVilkår: false }; }; -const updateVedlegg = ( - state: SøknadPartial, - vedlegg: SøknadsvedleggPartial -) => ({ - ...state, - vedlegg: { ...state.vedlegg, ...vedlegg } -}); - const søknadReducer = (state = getDefaultState(), action: SøknadAction) => { switch (action.type) { case SøknadActionKeys.UPDATE_BARN: @@ -57,8 +41,6 @@ const søknadReducer = (state = getDefaultState(), action: SøknadAction) => { ...state, ...action.payload }; - case SøknadActionKeys.UPDATE_VEDLEGG: - return updateVedlegg(state, action.payload); } return state; }; diff --git a/src/app/redux/sagas/innsendingSaga.ts b/src/app/redux/sagas/innsendingSaga.ts index 64ce3984bb..c8d633d485 100644 --- a/src/app/redux/sagas/innsendingSaga.ts +++ b/src/app/redux/sagas/innsendingSaga.ts @@ -7,7 +7,11 @@ import { function* sendSøknad(action: SendSøknadRequest) { try { - const response = yield call(Api.sendSøknad, action.søknad); + const response = yield call( + Api.sendSøknad, + action.søknad, + action.vedlegg + ); yield put({ type: ApiActionKeys.SEND_SØKNAD_SUCCESS, response }); } catch (error) { yield put({ type: ApiActionKeys.SEND_SØKNAD_FAILED, error }); diff --git "a/src/app/types/s\303\270knad/S\303\270knad.ts" "b/src/app/types/s\303\270knad/S\303\270knad.ts" index 14c97caddf..3317a03448 100644 --- "a/src/app/types/s\303\270knad/S\303\270knad.ts" +++ "b/src/app/types/s\303\270knad/S\303\270knad.ts" @@ -1,4 +1,3 @@ -import Søknadsvedlegg from './Søknadsvedlegg'; import AnnenForelder, { AnnenForelderPartial } from './AnnenForelder'; import Utenlandsopphold, { UtenlandsoppholdPartial } from './Utenlandsopphold'; @@ -33,11 +32,11 @@ interface Søknad { barn: Barn; utenlandsopphold: Utenlandsopphold; uttaksplan: Periode[]; - vedlegg: Søknadsvedlegg; søkerRolle: SøkerRolle; erSelvstendigNæringsdrivende: boolean; erFrilanser: boolean; erMorForSyk: boolean; + vedlegg: Søknadsvedlegginfo[]; } export interface SøknadPartial { @@ -48,7 +47,6 @@ export interface SøknadPartial { barn: BarnPartial; utenlandsopphold: UtenlandsoppholdPartial; uttaksplan?: Periode[]; - vedlegg: Søknadsvedlegg; søkerRolle?: SøkerRolle; erSelvstendigNæringsdrivende?: boolean; erFrilanser?: boolean; @@ -57,4 +55,23 @@ export interface SøknadPartial { export type Skjemadata = Partial; +export type SøknadsvedleggType = + | 'omsorgsovertakelse' + | 'adopsjonsvedtak' + | 'overtakelsedokumentasjon' + | 'terminbekreftelse' + | 'fødselsattest'; + +export interface Søknadsvedlegginfo { + id: string; + url: string; + filnavn: string; + type: SøknadsvedleggType; + filstørrelse: number; +} +export interface SøknadsvedleggMetadata { + beskrivelse: string; + skjemanummer: string; +} + export default Søknad; diff --git "a/src/app/types/s\303\270knad/S\303\270knadsvedlegg.ts" "b/src/app/types/s\303\270knad/S\303\270knadsvedlegg.ts" deleted file mode 100644 index 78d72ee874..0000000000 --- "a/src/app/types/s\303\270knad/S\303\270knadsvedlegg.ts" +++ /dev/null @@ -1,25 +0,0 @@ -import { Attachment } from 'storage/attachment/types/Attachment'; - -export type SøknadsvedleggKey = - | 'omsorgsovertakelse' - | 'adopsjonsvedtak' - | 'overtakelsedokumentasjon' - | 'terminbekreftelse' - | 'fødselsattest'; - -interface Søknadsvedlegg { - omsorgsovertakelse: Attachment[]; - adopsjonsvedtak: Attachment[]; - overtakelsedokumentasjon: Attachment[]; - terminbekreftelse: Attachment[]; - fødselsattest: Attachment[]; -} - -export interface SøknadsvedleggMetadata { - beskrivelse: string; - skjemanummer: string; -} - -export type SøknadsvedleggPartial = Partial; - -export default Søknadsvedlegg; diff --git "a/src/app/types/s\303\270knad/Utenlandsopphold.ts" "b/src/app/types/s\303\270knad/Utenlandsopphold.ts" index 270a7d8bed..f404d1107e 100644 --- "a/src/app/types/s\303\270knad/Utenlandsopphold.ts" +++ "b/src/app/types/s\303\270knad/Utenlandsopphold.ts" @@ -1,21 +1,21 @@ -export type UtenlandsoppholdPeriode = { +export interface UtenlandsoppholdPeriode { land: string; varighet: Varighet; -}; +} -export type Varighet = { +export interface Varighet { tom: string; fom: string; -}; +} -type Utenlandsopphold = { +interface Utenlandsopphold { jobbetINorgeSiste12Mnd: boolean; fødselINorge: boolean; iNorgeSiste12Mnd: boolean; iNorgeNeste12Mnd: boolean; tidligerePerioder: UtenlandsoppholdPeriode[]; senerePerioder: UtenlandsoppholdPeriode[]; -}; +} export type UtenlandsoppholdPartial = Partial; diff --git a/src/app/util/vedleggConfig.ts b/src/app/util/vedleggConfig.ts index e8f47ff860..ebe787130a 100644 --- a/src/app/util/vedleggConfig.ts +++ b/src/app/util/vedleggConfig.ts @@ -1,4 +1,4 @@ -import { SøknadsvedleggMetadata } from '../types/søknad/Søknadsvedlegg'; +import { SøknadsvedleggMetadata } from '../types/s\u00F8knad/S\u00F8knad'; export interface VedleggConfig { [key: string]: SøknadsvedleggMetadata; diff --git a/src/app/util/vedleggUtil.ts b/src/app/util/vedleggUtil.ts new file mode 100644 index 0000000000..fe4e52c4b0 --- /dev/null +++ b/src/app/util/vedleggUtil.ts @@ -0,0 +1,9 @@ +import { SøknadsvedleggType } from '../types/søknad/Søknad'; +import { AttachmentAppState } from 'storage/attachment/redux/attachmentReducer'; +import { Attachment } from 'storage/attachment/types/Attachment'; +import { getAttachmentsInGroup } from 'storage/attachment/util/attachmentUtil'; + +export const getSøknadsvedlegg = ( + type: SøknadsvedleggType, + state: AttachmentAppState +): Attachment[] => getAttachmentsInGroup(state, type); diff --git a/src/storage/attachment/util/attachmentUtil.ts b/src/storage/attachment/util/attachmentUtil.ts new file mode 100644 index 0000000000..d3ac79ec18 --- /dev/null +++ b/src/storage/attachment/util/attachmentUtil.ts @@ -0,0 +1,7 @@ +import { AttachmentAppState } from 'storage/attachment/redux/attachmentReducer'; +import { Attachment } from 'storage/attachment/types/Attachment'; + +export const getAttachmentsInGroup = ( + state: AttachmentAppState, + group: string +): Attachment[] => state.attachments.filter((a) => a.group === group); diff --git a/tslint.json b/tslint.json index 485709542b..a5f7567ec2 100644 --- a/tslint.json +++ b/tslint.json @@ -9,10 +9,8 @@ "object-literal-sort-keys": false, "no-bitwise": false, "import-spacing": true, - "match-default-export-name": true, "no-duplicate-imports": true, "no-shadowed-variable": true, - "no-unused-variable": true, "no-var-requires": false, "no-implicit-dependencies": false, "no-empty-interface": false, From 869812c2b83b6ebcdaa01065266f28f47d9c4e96 Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 12:54:08 +0200 Subject: [PATCH 03/10] =?UTF-8?q?=C3=A6=C3=B8=C3=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" | 2 +- .../connected-components/sider/inngangsside/Inngangsside.tsx | 2 +- .../relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx | 2 +- .../RelasjonTilBarnForeldreansvar.tsx | 2 +- .../partials/F\303\270dtBarnPartial.tsx" | 2 +- .../partials/Uf\303\270dtBarnPartial.tsx" | 2 +- src/app/util/vedleggConfig.ts | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git "a/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" "b/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" index f62f63bbf8..aea559d612 100644 --- "a/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" +++ "b/src/app/components/s\303\270knadsvedlegg/S\303\270knadsvedlegg.tsx" @@ -1,6 +1,6 @@ import * as React from 'react'; import AttachmentUploader from 'storage/attachment/connected-components/attachment-uploader/AttachmentUploader'; -import { SøknadsvedleggType } from '../../types/s\u00F8knad/S\u00F8knad'; +import { SøknadsvedleggType } from '../../types/søknad/Søknad'; export interface Props { type: SøknadsvedleggType; diff --git a/src/app/connected-components/sider/inngangsside/Inngangsside.tsx b/src/app/connected-components/sider/inngangsside/Inngangsside.tsx index f2e5a8430e..ff2fa82199 100644 --- a/src/app/connected-components/sider/inngangsside/Inngangsside.tsx +++ b/src/app/connected-components/sider/inngangsside/Inngangsside.tsx @@ -14,7 +14,7 @@ import { injectIntl, InjectedIntlProps } from 'react-intl'; import BekreftCheckboksPanel from 'nav-frontend-skjema/lib/bekreft-checkboks-panel'; import { HistoryProps } from '../../../types/common'; import { DispatchProps } from 'common/redux/types'; -import Spørsmål from 'common/components/spørsm\u00E5l/Spørsm\u00E5l'; +import Spørsmål from 'common/components/spørsmål/Spørsmål'; import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp'; export interface StateProps { diff --git a/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx b/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx index 34f1b0242f..1e4f7b3f0b 100644 --- a/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx +++ b/src/app/connected-components/steg/relasjon-til-barn-adopsjon/RelasjonTilBarnAdopsjonSteg.tsx @@ -18,7 +18,7 @@ import utils from '../../../util/fødselsdato'; import { AppState } from '../../../redux/reducers'; import Steg from '../../../components/layout/Steg'; import Bolk from '../../../components/layout/Bolk'; -import Søknadsvedlegg from '../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import Søknadsvedlegg from '../../../components/søknadsvedlegg/Søknadsvedlegg'; import { getSøknadsvedlegg } from '../../../util/vedleggUtil'; interface StateProps { diff --git a/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx b/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx index 1c9a8dfe58..45626b484b 100644 --- a/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx +++ b/src/app/connected-components/steg/relasjon-til-barn-foreldreansvar/RelasjonTilBarnForeldreansvar.tsx @@ -19,7 +19,7 @@ import { ForeldreansvarBarnPartial } from '../../../types/søknad/Barn'; import Veilederinfo from 'common/components/veileder-info/Veilederinfo'; import { Fødselsdato } from '../../../types/common'; import { getAlderFraDato } from '../../../util/dates'; -import Søknadsvedlegg from '../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import Søknadsvedlegg from '../../../components/søknadsvedlegg/Søknadsvedlegg'; export interface StateProps { barn: ForeldreansvarBarnPartial; diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" index 31ac285af8..573a87cf95 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" @@ -14,7 +14,7 @@ import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp'; import { HistoryProps } from '../../../../types/common'; import { DispatchProps } from 'common/redux/types'; import getMessage from 'common/util/i18nUtils'; -import Søknadsvedlegg from '../../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import Søknadsvedlegg from '../../../../components/søknadsvedlegg/Søknadsvedlegg'; import { Attachment } from 'storage/attachment/types/Attachment'; interface StateProps { diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" index 6c8b796ca9..2dde8e7ca3 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" @@ -15,7 +15,7 @@ import FortsettKnapp from 'common/components/fortsett-knapp/FortsettKnapp'; import { HistoryProps } from '../../../../types/common'; import { DispatchProps } from 'common/redux/types'; import getMessage from 'common/util/i18nUtils'; -import Søknadsvedlegg from '../../../../components/s\u00F8knadsvedlegg/S\u00F8knadsvedlegg'; +import Søknadsvedlegg from '../../../../components/søknadsvedlegg/Søknadsvedlegg'; import { Attachment } from 'storage/attachment/types/Attachment'; interface UfødtBarnPartialProps { diff --git a/src/app/util/vedleggConfig.ts b/src/app/util/vedleggConfig.ts index ebe787130a..f3047f0283 100644 --- a/src/app/util/vedleggConfig.ts +++ b/src/app/util/vedleggConfig.ts @@ -1,4 +1,4 @@ -import { SøknadsvedleggMetadata } from '../types/s\u00F8knad/S\u00F8knad'; +import { SøknadsvedleggMetadata } from '../types/søknad/Søknad'; export interface VedleggConfig { [key: string]: SøknadsvedleggMetadata; From 065e78d10aaa82139e50f371c7a4662c952dcc7a Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 13:27:12 +0200 Subject: [PATCH 04/10] Add skjemanummer to metadata for Vedlegg --- src/app/api/api.ts | 20 ++++++---- .../app/types/s\303\270knad/S\303\270knad.ts" | 8 ++++ src/app/util/vedleggConfig.ts | 14 ------- src/app/util/vedleggUtil.ts | 37 ++++++++++++++++++- 4 files changed, 57 insertions(+), 22 deletions(-) delete mode 100644 src/app/util/vedleggConfig.ts diff --git a/src/app/api/api.ts b/src/app/api/api.ts index 1433b90326..6a01539ce9 100644 --- a/src/app/api/api.ts +++ b/src/app/api/api.ts @@ -5,6 +5,7 @@ import Søknad, { } from '../types/søknad/Søknad'; import Environment from '../../app/Environment'; import { Attachment } from 'storage/attachment/types/Attachment'; +import { getMetadataForSøknadsvedlegg } from '../util/vedleggUtil'; function getPerson() { const endpoint = Environment.REST_API_URL; @@ -16,16 +17,21 @@ function getPerson() { const mapAttachmentTilSøknadsvedlegginfo = ( attachment: Attachment -): Søknadsvedlegginfo => ({ - id: attachment.id, - filnavn: attachment.filename, - url: attachment.url as string, - type: attachment.group as SøknadsvedleggType, - filstørrelse: attachment.filesize -}); +): Søknadsvedlegginfo => { + const type = attachment.group as SøknadsvedleggType; + return { + id: attachment.id, + filnavn: attachment.filename, + url: attachment.url as string, + type, + filstørrelse: attachment.filesize, + metadata: getMetadataForSøknadsvedlegg(type) + }; +}; function sendSøknad(søknad: Søknad, vedlegg: Attachment[]) { const formData = new FormData(); + søknad.vedlegg = vedlegg.map((v) => mapAttachmentTilSøknadsvedlegginfo(v)); formData.append( 'soknad', diff --git "a/src/app/types/s\303\270knad/S\303\270knad.ts" "b/src/app/types/s\303\270knad/S\303\270knad.ts" index 3317a03448..ab0a258e1e 100644 --- "a/src/app/types/s\303\270knad/S\303\270knad.ts" +++ "b/src/app/types/s\303\270knad/S\303\270knad.ts" @@ -68,7 +68,15 @@ export interface Søknadsvedlegginfo { filnavn: string; type: SøknadsvedleggType; filstørrelse: number; + metadata: MottaksvedleggMetadata; } + +export interface MottaksvedleggMetadata { + skjemanummer: string; + type?: string; + beskrivelse?: string; +} + export interface SøknadsvedleggMetadata { beskrivelse: string; skjemanummer: string; diff --git a/src/app/util/vedleggConfig.ts b/src/app/util/vedleggConfig.ts deleted file mode 100644 index f3047f0283..0000000000 --- a/src/app/util/vedleggConfig.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { SøknadsvedleggMetadata } from '../types/søknad/Søknad'; - -export interface VedleggConfig { - [key: string]: SøknadsvedleggMetadata; -} - -const vedleggConfig: VedleggConfig = { - omsorgsovertakelseMetadata: { - beskrivelse: 'omsorgsovertakelse', - skjemanummer: 'omsorgsovertakelse' - } -}; - -export default vedleggConfig; diff --git a/src/app/util/vedleggUtil.ts b/src/app/util/vedleggUtil.ts index fe4e52c4b0..c6f260048e 100644 --- a/src/app/util/vedleggUtil.ts +++ b/src/app/util/vedleggUtil.ts @@ -1,4 +1,7 @@ -import { SøknadsvedleggType } from '../types/søknad/Søknad'; +import { + SøknadsvedleggType, + SøknadsvedleggMetadata +} from '../types/søknad/Søknad'; import { AttachmentAppState } from 'storage/attachment/redux/attachmentReducer'; import { Attachment } from 'storage/attachment/types/Attachment'; import { getAttachmentsInGroup } from 'storage/attachment/util/attachmentUtil'; @@ -7,3 +10,35 @@ export const getSøknadsvedlegg = ( type: SøknadsvedleggType, state: AttachmentAppState ): Attachment[] => getAttachmentsInGroup(state, type); + +export const getMetadataForSøknadsvedlegg = ( + type: SøknadsvedleggType +): SøknadsvedleggMetadata => { + switch (type) { + case 'adopsjonsvedtak': + return { + skjemanummer: 'skjema-adopsjonsvedtak', + beskrivelse: 'tom' + }; + case 'fødselsattest': + return { + skjemanummer: 'skjema-fødselsattest', + beskrivelse: 'tom' + }; + case 'omsorgsovertakelse': + return { + skjemanummer: 'skjema-omsorgsovertakelse', + beskrivelse: 'tom' + }; + case 'overtakelsedokumentasjon': + return { + skjemanummer: 'skjema-overtakelsedokumentasjon', + beskrivelse: 'tom' + }; + case 'terminbekreftelse': + return { + skjemanummer: 'skjema-terminbekreftelse', + beskrivelse: 'tom' + }; + } +}; From cbddcceaa370c6185571a08f69b64e69b49b8b4e Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 13:34:34 +0200 Subject: [PATCH 05/10] =?UTF-8?q?Move=20mapAttachmentTilS=C3=B8knadsvedleg?= =?UTF-8?q?ginfo=20to=20vedleggUtil?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/api.ts | 22 ++-------------------- src/app/util/vedleggUtil.ts | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/app/api/api.ts b/src/app/api/api.ts index 6a01539ce9..da319932bb 100644 --- a/src/app/api/api.ts +++ b/src/app/api/api.ts @@ -1,11 +1,8 @@ import axios from 'axios'; -import Søknad, { - Søknadsvedlegginfo, - SøknadsvedleggType -} from '../types/søknad/Søknad'; +import Søknad from '../types/søknad/Søknad'; import Environment from '../../app/Environment'; import { Attachment } from 'storage/attachment/types/Attachment'; -import { getMetadataForSøknadsvedlegg } from '../util/vedleggUtil'; +import { mapAttachmentTilSøknadsvedlegginfo } from '../util/vedleggUtil'; function getPerson() { const endpoint = Environment.REST_API_URL; @@ -15,23 +12,8 @@ function getPerson() { }); } -const mapAttachmentTilSøknadsvedlegginfo = ( - attachment: Attachment -): Søknadsvedlegginfo => { - const type = attachment.group as SøknadsvedleggType; - return { - id: attachment.id, - filnavn: attachment.filename, - url: attachment.url as string, - type, - filstørrelse: attachment.filesize, - metadata: getMetadataForSøknadsvedlegg(type) - }; -}; - function sendSøknad(søknad: Søknad, vedlegg: Attachment[]) { const formData = new FormData(); - søknad.vedlegg = vedlegg.map((v) => mapAttachmentTilSøknadsvedlegginfo(v)); formData.append( 'soknad', diff --git a/src/app/util/vedleggUtil.ts b/src/app/util/vedleggUtil.ts index c6f260048e..dba53fbd92 100644 --- a/src/app/util/vedleggUtil.ts +++ b/src/app/util/vedleggUtil.ts @@ -1,6 +1,7 @@ import { SøknadsvedleggType, - SøknadsvedleggMetadata + SøknadsvedleggMetadata, + Søknadsvedlegginfo } from '../types/søknad/Søknad'; import { AttachmentAppState } from 'storage/attachment/redux/attachmentReducer'; import { Attachment } from 'storage/attachment/types/Attachment'; @@ -42,3 +43,17 @@ export const getMetadataForSøknadsvedlegg = ( }; } }; + +export const mapAttachmentTilSøknadsvedlegginfo = ( + attachment: Attachment +): Søknadsvedlegginfo => { + const type = attachment.group as SøknadsvedleggType; + return { + id: attachment.id, + filnavn: attachment.filename, + url: attachment.url as string, + type, + filstørrelse: attachment.filesize, + metadata: getMetadataForSøknadsvedlegg(type) + }; +}; From b47cf6dd2450ad2b7928a4f9c445ae31063d2d92 Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 13:42:27 +0200 Subject: [PATCH 06/10] =?UTF-8?q?Refactor=20mapLogic=20for=20S=C3=B8knadsv?= =?UTF-8?q?edleggInfo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/api/api.ts | 8 +++----- .../connected-components/Eksempels\303\270knad.tsx" | 12 ++++++++---- src/app/redux/actions/api/apiActionCreators.ts | 5 ++--- src/app/redux/actions/api/apiActionDefinitions.ts | 5 ++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/app/api/api.ts b/src/app/api/api.ts index da319932bb..de595d373b 100644 --- a/src/app/api/api.ts +++ b/src/app/api/api.ts @@ -1,8 +1,6 @@ import axios from 'axios'; -import Søknad from '../types/søknad/Søknad'; +import Søknad, { Søknadsvedlegginfo } from '../types/søknad/Søknad'; import Environment from '../../app/Environment'; -import { Attachment } from 'storage/attachment/types/Attachment'; -import { mapAttachmentTilSøknadsvedlegginfo } from '../util/vedleggUtil'; function getPerson() { const endpoint = Environment.REST_API_URL; @@ -12,9 +10,9 @@ function getPerson() { }); } -function sendSøknad(søknad: Søknad, vedlegg: Attachment[]) { +function sendSøknad(søknad: Søknad, vedlegg: Søknadsvedlegginfo[]) { const formData = new FormData(); - søknad.vedlegg = vedlegg.map((v) => mapAttachmentTilSøknadsvedlegginfo(v)); + søknad.vedlegg = vedlegg; formData.append( 'soknad', new Blob([JSON.stringify(søknad)], { diff --git "a/src/app/connected-components/Eksempels\303\270knad.tsx" "b/src/app/connected-components/Eksempels\303\270knad.tsx" index 2a948b44f5..7eb799ed6b 100644 --- "a/src/app/connected-components/Eksempels\303\270knad.tsx" +++ "b/src/app/connected-components/Eksempels\303\270knad.tsx" @@ -5,7 +5,8 @@ import ErBarnetFødtSpørsmål from '../spørsmål/ErBarnetFødtSpørsmål'; import { SøkerRolle, Søkersituasjon, - default as Søknad + default as Søknad, + Søknadsvedlegginfo } from '../types/søknad/Søknad'; import { DispatchProps } from 'common/redux/types'; import søknadActions from './../redux/actions/søknad/søknadActionCreators'; @@ -33,8 +34,8 @@ import { getSøkerrollerForBruker } from '../util/søkerrollerUtils'; import { Periode } from 'uttaksplan/types'; import Uttaksplan from 'uttaksplan/components/uttaksplan/Uttaksplan'; import { Språkkode } from 'common/intl/types'; -import { Attachment } from 'storage/attachment/types/Attachment'; import { AppState } from '../redux/reducers'; +import { mapAttachmentTilSøknadsvedlegginfo } from '../util/vedleggUtil'; interface StateProps { annenForelder: AnnenForelderPartial; @@ -44,7 +45,7 @@ interface StateProps { perioder: Periode[]; roller?: SøkerRolle[]; søknad: Søknad; - vedlegg: Attachment[]; + vedlegg: Søknadsvedlegginfo[]; språkkode: Språkkode; } @@ -309,6 +310,9 @@ export default connect((state: AppState) => { const { situasjon } = state.søknad; const kjønn = state.api.person ? state.api.person.kjønn : undefined; + const vedlegg = state.attachments.map((a) => + mapAttachmentTilSøknadsvedlegginfo(a) + ); const roller = kjønn && situasjon ? getSøkerrollerForBruker(kjønn, situasjon) @@ -316,13 +320,13 @@ export default connect((state: AppState) => { return { søknad: state.søknad, - vedlegg: state.attachments, annenForelder: state.søknad.annenForelder, barn: state.søknad.barn, utenlandsopphold: state.søknad.utenlandsopphold, perioder: state.søknad.uttaksplan, språkkode: state.common.språkkode, situasjon, + vedlegg, roller }; })(injectIntl(Eksempelsøknad)); diff --git a/src/app/redux/actions/api/apiActionCreators.ts b/src/app/redux/actions/api/apiActionCreators.ts index 4d34762f19..9b096b93d1 100644 --- a/src/app/redux/actions/api/apiActionCreators.ts +++ b/src/app/redux/actions/api/apiActionCreators.ts @@ -1,6 +1,5 @@ import { ApiActionKeys, ApiActionTypes } from './apiActionDefinitions'; -import Søknad from '../../../types/søknad/Søknad'; -import { Attachment } from 'storage/attachment/types/Attachment'; +import Søknad, { Søknadsvedlegginfo } from '../../../types/søknad/Søknad'; export function getPerson(): ApiActionTypes { return { @@ -10,7 +9,7 @@ export function getPerson(): ApiActionTypes { export function sendSøknad( søknad: Søknad, - vedlegg: Attachment[] + vedlegg: Søknadsvedlegginfo[] ): ApiActionTypes { return { type: ApiActionKeys.SEND_SØKNAD_REQUEST, diff --git a/src/app/redux/actions/api/apiActionDefinitions.ts b/src/app/redux/actions/api/apiActionDefinitions.ts index 8a621bb101..5cc3ccf8e0 100644 --- a/src/app/redux/actions/api/apiActionDefinitions.ts +++ b/src/app/redux/actions/api/apiActionDefinitions.ts @@ -1,6 +1,5 @@ import Person from '../../../types/Person'; -import Søknad from '../../../types/søknad/Søknad'; -import { Attachment } from 'storage/attachment/types/Attachment'; +import Søknad, { Søknadsvedlegginfo } from '../../../types/søknad/Søknad'; export enum ApiActionKeys { 'GET_PERSON_REQUEST' = 'getPersonRequest', @@ -29,7 +28,7 @@ interface GetPersonFailed { export interface SendSøknadRequest { type: ApiActionKeys.SEND_SØKNAD_REQUEST; søknad: Søknad; - vedlegg: Attachment[]; + vedlegg: Søknadsvedlegginfo[]; } interface SendSøknadSuccess { From 1033af89555affffa1415f09cd20e5b4c5d91bf7 Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 13:48:55 +0200 Subject: [PATCH 07/10] Reduce use of type Attachment in app components --- .../RelasjonTilBarnF\303\270dselSteg.tsx" | 21 +++++++++++-------- .../partials/F\303\270dtBarnPartial.tsx" | 13 ++++++++---- .../partials/Uf\303\270dtBarnPartial.tsx" | 9 ++++---- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" index 87c7431d69..731b493f11 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/RelasjonTilBarnF\303\270dselSteg.tsx" @@ -15,14 +15,13 @@ import Søknad, { SøkerRolle } from '../../../types/søknad/Søknad'; import { AppState } from '../../../redux/reducers'; import Person from '../../../types/Person'; import { HistoryProps, Kjønn } from '../../../types/common'; -import { Attachment } from 'storage/attachment/types/Attachment'; import { getSøknadsvedlegg } from '../../../util/vedleggUtil'; interface StateProps { barn: BarnPartial; søknad: Søknad; - fødselsattest: Attachment[]; - terminbekreftelse: Attachment[]; + fødselsattestLastetOpp: boolean; + terminbekreftelseErLastetOpp: boolean; person?: Person; } @@ -34,8 +33,8 @@ class RelasjonTilBarnFødsel extends React.Component { dispatch, person, søknad, - fødselsattest, - terminbekreftelse, + fødselsattestLastetOpp, + terminbekreftelseErLastetOpp, history } = this.props; @@ -66,14 +65,16 @@ class RelasjonTilBarnFødsel extends React.Component { ) : ( { const mapStateToProps = (state: AppState): StateProps => ({ søknad: state.søknad, barn: state.søknad.barn, - fødselsattest: getSøknadsvedlegg('fødselsattest', state), - terminbekreftelse: getSøknadsvedlegg('terminbekreftelse', state), + fødselsattestLastetOpp: + getSøknadsvedlegg('fødselsattest', state).length > 0, + terminbekreftelseErLastetOpp: + getSøknadsvedlegg('terminbekreftelse', state).length > 0, person: state.api.person }); diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" index 573a87cf95..fdd46005fc 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/F\303\270dtBarnPartial.tsx" @@ -15,11 +15,10 @@ import { HistoryProps } from '../../../../types/common'; import { DispatchProps } from 'common/redux/types'; import getMessage from 'common/util/i18nUtils'; import Søknadsvedlegg from '../../../../components/søknadsvedlegg/Søknadsvedlegg'; -import { Attachment } from 'storage/attachment/types/Attachment'; interface StateProps { barn: FødtBarn; - vedlegg: Attachment[]; + fødselsattestErLastetOpp: boolean; } type Props = StateProps & InjectedIntlProps & DispatchProps & HistoryProps; @@ -44,7 +43,13 @@ class FødtBarnPartial extends React.Component { } render() { - const { intl, dispatch, barn, vedlegg, history } = this.props; + const { + intl, + dispatch, + barn, + fødselsattestErLastetOpp, + history + } = this.props; return ( { render={() => } /> - {vedlegg.length > 0 && ( + {fødselsattestErLastetOpp && ( diff --git "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" index 2dde8e7ca3..d3c046c443 100644 --- "a/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" +++ "b/src/app/connected-components/steg/relasjon-til-barn-f\303\270dsel/partials/Uf\303\270dtBarnPartial.tsx" @@ -16,12 +16,11 @@ import { HistoryProps } from '../../../../types/common'; import { DispatchProps } from 'common/redux/types'; import getMessage from 'common/util/i18nUtils'; import Søknadsvedlegg from '../../../../components/søknadsvedlegg/Søknadsvedlegg'; -import { Attachment } from 'storage/attachment/types/Attachment'; interface UfødtBarnPartialProps { barn: UfødtBarn; søknad: SøknadPartial; - vedlegg: Attachment[]; + terminbekreftelseErLastetOpp: boolean; erFarEllerMedmor: boolean; } @@ -36,7 +35,7 @@ class UfødtBarnPartial extends React.Component { intl, dispatch, barn, - vedlegg, + terminbekreftelseErLastetOpp, søknad, erFarEllerMedmor, history @@ -125,7 +124,7 @@ class UfødtBarnPartial extends React.Component { 0 && + terminbekreftelseErLastetOpp && barn.termindato !== undefined } render={() => ( @@ -148,7 +147,7 @@ class UfødtBarnPartial extends React.Component { /> {barn.terminbekreftelseDato && - vedlegg.length > 0 && ( + terminbekreftelseErLastetOpp && ( From dfcf3f8ee468195c7d118925d0fa89c3565cd265 Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 13:57:17 +0200 Subject: [PATCH 08/10] Delete unused interface --- "src/app/types/s\303\270knad/S\303\270knad.ts" | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git "a/src/app/types/s\303\270knad/S\303\270knad.ts" "b/src/app/types/s\303\270knad/S\303\270knad.ts" index ab0a258e1e..d911414e33 100644 --- "a/src/app/types/s\303\270knad/S\303\270knad.ts" +++ "b/src/app/types/s\303\270knad/S\303\270knad.ts" @@ -68,18 +68,13 @@ export interface Søknadsvedlegginfo { filnavn: string; type: SøknadsvedleggType; filstørrelse: number; - metadata: MottaksvedleggMetadata; + metadata: SøknadsvedleggMetadata; } -export interface MottaksvedleggMetadata { +export interface SøknadsvedleggMetadata { skjemanummer: string; type?: string; beskrivelse?: string; } -export interface SøknadsvedleggMetadata { - beskrivelse: string; - skjemanummer: string; -} - export default Søknad; From 80f6918ec38c89fca015bc77265174467c76debd Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 14:07:26 +0200 Subject: [PATCH 09/10] Remove logic from api --- src/app/api/api.ts | 5 ++- .../Eksempels\303\270knad.tsx" | 31 ++++++++++++------- .../redux/actions/api/apiActionCreators.ts | 10 ++---- .../redux/actions/api/apiActionDefinitions.ts | 3 +- src/app/redux/sagas/innsendingSaga.ts | 6 +--- 5 files changed, 27 insertions(+), 28 deletions(-) diff --git a/src/app/api/api.ts b/src/app/api/api.ts index de595d373b..c79ca75967 100644 --- a/src/app/api/api.ts +++ b/src/app/api/api.ts @@ -1,5 +1,5 @@ import axios from 'axios'; -import Søknad, { Søknadsvedlegginfo } from '../types/søknad/Søknad'; +import Søknad from '../types/søknad/Søknad'; import Environment from '../../app/Environment'; function getPerson() { @@ -10,9 +10,8 @@ function getPerson() { }); } -function sendSøknad(søknad: Søknad, vedlegg: Søknadsvedlegginfo[]) { +function sendSøknad(søknad: Søknad) { const formData = new FormData(); - søknad.vedlegg = vedlegg; formData.append( 'soknad', new Blob([JSON.stringify(søknad)], { diff --git "a/src/app/connected-components/Eksempels\303\270knad.tsx" "b/src/app/connected-components/Eksempels\303\270knad.tsx" index 7eb799ed6b..b10e76c857 100644 --- "a/src/app/connected-components/Eksempels\303\270knad.tsx" +++ "b/src/app/connected-components/Eksempels\303\270knad.tsx" @@ -5,8 +5,7 @@ import ErBarnetFødtSpørsmål from '../spørsmål/ErBarnetFødtSpørsmål'; import { SøkerRolle, Søkersituasjon, - default as Søknad, - Søknadsvedlegginfo + default as Søknad } from '../types/søknad/Søknad'; import { DispatchProps } from 'common/redux/types'; import søknadActions from './../redux/actions/søknad/søknadActionCreators'; @@ -36,6 +35,7 @@ import Uttaksplan from 'uttaksplan/components/uttaksplan/Uttaksplan'; import { Språkkode } from 'common/intl/types'; import { AppState } from '../redux/reducers'; import { mapAttachmentTilSøknadsvedlegginfo } from '../util/vedleggUtil'; +import { Attachment } from 'storage/attachment/types/Attachment'; interface StateProps { annenForelder: AnnenForelderPartial; @@ -45,13 +45,27 @@ interface StateProps { perioder: Periode[]; roller?: SøkerRolle[]; søknad: Søknad; - vedlegg: Søknadsvedlegginfo[]; + attachments: Attachment[]; språkkode: Språkkode; } type Props = StateProps & InjectedIntlProps & DispatchProps; class Eksempelsøknad extends React.Component { + constructor(props: Props) { + super(props); + } + sendInnSøknad() { + const vedlegg = this.props.attachments.map((a) => + mapAttachmentTilSøknadsvedlegginfo(a) + ); + + const søknadsdata: Søknad = { + ...this.props.søknad, + vedlegg + }; + this.props.dispatch(apiActions.sendSøknad(søknadsdata)); + } render() { const { dispatch, @@ -62,7 +76,6 @@ class Eksempelsøknad extends React.Component { annenForelder, utenlandsopphold, perioder, - vedlegg, intl } = this.props; @@ -296,9 +309,8 @@ class Eksempelsøknad extends React.Component { )} - dispatch(apiActions.sendSøknad(søknad, vedlegg)) - }> + htmlType="button" + onClick={() => this.sendInnSøknad()}> Send søknad @@ -310,9 +322,6 @@ export default connect((state: AppState) => { const { situasjon } = state.søknad; const kjønn = state.api.person ? state.api.person.kjønn : undefined; - const vedlegg = state.attachments.map((a) => - mapAttachmentTilSøknadsvedlegginfo(a) - ); const roller = kjønn && situasjon ? getSøkerrollerForBruker(kjønn, situasjon) @@ -326,7 +335,7 @@ export default connect((state: AppState) => { perioder: state.søknad.uttaksplan, språkkode: state.common.språkkode, situasjon, - vedlegg, + attachments: state.attachments, roller }; })(injectIntl(Eksempelsøknad)); diff --git a/src/app/redux/actions/api/apiActionCreators.ts b/src/app/redux/actions/api/apiActionCreators.ts index 9b096b93d1..ce6aa4abb4 100644 --- a/src/app/redux/actions/api/apiActionCreators.ts +++ b/src/app/redux/actions/api/apiActionCreators.ts @@ -1,5 +1,5 @@ import { ApiActionKeys, ApiActionTypes } from './apiActionDefinitions'; -import Søknad, { Søknadsvedlegginfo } from '../../../types/søknad/Søknad'; +import Søknad from '../../../types/søknad/Søknad'; export function getPerson(): ApiActionTypes { return { @@ -7,14 +7,10 @@ export function getPerson(): ApiActionTypes { }; } -export function sendSøknad( - søknad: Søknad, - vedlegg: Søknadsvedlegginfo[] -): ApiActionTypes { +export function sendSøknad(søknad: Søknad): ApiActionTypes { return { type: ApiActionKeys.SEND_SØKNAD_REQUEST, - søknad, - vedlegg + søknad }; } diff --git a/src/app/redux/actions/api/apiActionDefinitions.ts b/src/app/redux/actions/api/apiActionDefinitions.ts index 5cc3ccf8e0..dc94cda1a3 100644 --- a/src/app/redux/actions/api/apiActionDefinitions.ts +++ b/src/app/redux/actions/api/apiActionDefinitions.ts @@ -1,5 +1,5 @@ import Person from '../../../types/Person'; -import Søknad, { Søknadsvedlegginfo } from '../../../types/søknad/Søknad'; +import Søknad from '../../../types/søknad/Søknad'; export enum ApiActionKeys { 'GET_PERSON_REQUEST' = 'getPersonRequest', @@ -28,7 +28,6 @@ interface GetPersonFailed { export interface SendSøknadRequest { type: ApiActionKeys.SEND_SØKNAD_REQUEST; søknad: Søknad; - vedlegg: Søknadsvedlegginfo[]; } interface SendSøknadSuccess { diff --git a/src/app/redux/sagas/innsendingSaga.ts b/src/app/redux/sagas/innsendingSaga.ts index c8d633d485..64ce3984bb 100644 --- a/src/app/redux/sagas/innsendingSaga.ts +++ b/src/app/redux/sagas/innsendingSaga.ts @@ -7,11 +7,7 @@ import { function* sendSøknad(action: SendSøknadRequest) { try { - const response = yield call( - Api.sendSøknad, - action.søknad, - action.vedlegg - ); + const response = yield call(Api.sendSøknad, action.søknad); yield put({ type: ApiActionKeys.SEND_SØKNAD_SUCCESS, response }); } catch (error) { yield put({ type: ApiActionKeys.SEND_SØKNAD_FAILED, error }); From a24458244fd3765f3a47af3f3d43a5ca046ae9e9 Mon Sep 17 00:00:00 2001 From: Frode Hansen Date: Thu, 31 May 2018 14:14:11 +0200 Subject: [PATCH 10/10] Add missing bind --- "src/app/connected-components/Eksempels\303\270knad.tsx" | 1 + 1 file changed, 1 insertion(+) diff --git "a/src/app/connected-components/Eksempels\303\270knad.tsx" "b/src/app/connected-components/Eksempels\303\270knad.tsx" index b10e76c857..55448641d9 100644 --- "a/src/app/connected-components/Eksempels\303\270knad.tsx" +++ "b/src/app/connected-components/Eksempels\303\270knad.tsx" @@ -54,6 +54,7 @@ type Props = StateProps & InjectedIntlProps & DispatchProps; class Eksempelsøknad extends React.Component { constructor(props: Props) { super(props); + this.sendInnSøknad = this.sendInnSøknad.bind(this); } sendInnSøknad() { const vedlegg = this.props.attachments.map((a) =>