Skip to content

Commit

Permalink
chore(j-s): Rewrites Input Advocate (#17471)
Browse files Browse the repository at this point in the history
* Rewrites input advocate

* Merge completion

* Refoctors code

---------

Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
  • Loading branch information
gudjong and kodiakhq[bot] authored Jan 16, 2025
1 parent 3cb5441 commit 58b89c1
Show file tree
Hide file tree
Showing 11 changed files with 630 additions and 938 deletions.
128 changes: 77 additions & 51 deletions apps/judicial-system/web/src/components/DefenderInfo/DefenderInfo.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Dispatch, FC, SetStateAction, useContext, useState } from 'react'
import { useIntl } from 'react-intl'
import { MessageDescriptor, useIntl } from 'react-intl'

import { Box, RadioButton, Text, Tooltip } from '@island.is/island-ui/core'
import {
Expand All @@ -14,7 +14,7 @@ import {
} from '@island.is/judicial-system-web/src/graphql/schema'
import { TempCase as Case } from '@island.is/judicial-system-web/src/types'

import { useCase } from '../../utils/hooks'
import { UpdateCase, useCase } from '../../utils/hooks'
import RequiredStar from '../RequiredStar/RequiredStar'
import { UserContext } from '../UserProvider/UserProvider'
import { BlueBox, InputAdvocate, SectionHeading } from '..'
Expand All @@ -28,23 +28,38 @@ interface Props {

const DefenderInfo: FC<Props> = ({ workingCase, setWorkingCase }) => {
const { formatMessage } = useIntl()
const { setAndSendCaseToServer } = useCase()
const { updateCase, setAndSendCaseToServer } = useCase()
const { user } = useContext(UserContext)

const [defenderNotFound, setDefenderNotFound] = useState<boolean>(false)

const getSectionTitle = () => {
if (isRestrictionCase(workingCase.type)) {
if (isProsecutionUser(user)) {
return defenderInfo.restrictionCases.sections.defender.heading
return formatMessage(
defenderInfo.restrictionCases.sections.defender.heading,
)
} else {
return defenderInfo.restrictionCases.sections.defender.title
return formatMessage(
defenderInfo.restrictionCases.sections.defender.title,
)
}
} else {
if (isProsecutionUser(user)) {
return defenderInfo.investigationCases.sections.defender.heading
return formatMessage(
defenderInfo.investigationCases.sections.defender.heading,
)
} else {
return defenderInfo.investigationCases.sections.defender.title
return formatMessage(
defenderInfo.investigationCases.sections.defender.title,
{
defenderType:
workingCase.sessionArrangements ===
SessionArrangements.ALL_PRESENT_SPOKESPERSON
? 'Talsmaður'
: 'Verjandi',
},
)
}
}
}
Expand Down Expand Up @@ -79,21 +94,50 @@ const DefenderInfo: FC<Props> = ({ workingCase, setWorkingCase }) => {
}
}

const handleSetAndSendCaseToServer = (update: UpdateCase) => {
setAndSendCaseToServer([update], workingCase, setWorkingCase)
}

const handleAdvocateChange = (
defenderName: string | null,
defenderNationalId: string | null,
defenderEmail: string | null,
defenderPhoneNumber: string | null,
) => {
handleSetAndSendCaseToServer({
defenderName,
defenderNationalId,
defenderEmail,
defenderPhoneNumber,
force: true,
})
}

return (
<>
<SectionHeading
title={formatMessage(getSectionTitle(), {
defenderType:
workingCase.sessionArrangements ===
SessionArrangements.ALL_PRESENT_SPOKESPERSON
? 'Talsmaður'
: 'Verjandi',
})}
tooltip={renderTooltip()}
/>
<SectionHeading title={getSectionTitle()} tooltip={renderTooltip()} />
{defenderNotFound && <DefenderNotFound />}
<BlueBox>
<InputAdvocate onAdvocateNotFound={setDefenderNotFound} />
<InputAdvocate
advocateType="defender"
name={workingCase.defenderName}
email={workingCase.defenderEmail}
phoneNumber={workingCase.defenderPhoneNumber}
onAdvocateChange={handleAdvocateChange}
onAdvocateNotFound={setDefenderNotFound}
onEmailChange={(defenderEmail: string | null) =>
setWorkingCase((prev) => ({ ...prev, defenderEmail }))
}
onEmailSave={(defenderEmail: string | null) =>
updateCase(workingCase.id, { defenderEmail })
}
onPhoneNumberChange={(defenderPhoneNumber: string | null) =>
setWorkingCase((prev) => ({ ...prev, defenderPhoneNumber }))
}
onPhoneNumberSave={(defenderPhoneNumber: string | null) =>
updateCase(workingCase.id, { defenderPhoneNumber })
}
/>
{isProsecutionUser(user) && (
<>
<Text variant="h4" marginTop={2} marginBottom={2}>
Expand Down Expand Up @@ -122,17 +166,11 @@ const DefenderInfo: FC<Props> = ({ workingCase, setWorkingCase }) => {
RequestSharedWithDefender.READY_FOR_COURT
}
onChange={() => {
setAndSendCaseToServer(
[
{
requestSharedWithDefender:
RequestSharedWithDefender.READY_FOR_COURT,
force: true,
},
],
workingCase,
setWorkingCase,
)
handleSetAndSendCaseToServer({
requestSharedWithDefender:
RequestSharedWithDefender.READY_FOR_COURT,
force: true,
})
}}
large
backgroundColor="white"
Expand All @@ -155,17 +193,11 @@ const DefenderInfo: FC<Props> = ({ workingCase, setWorkingCase }) => {
RequestSharedWithDefender.COURT_DATE
}
onChange={() => {
setAndSendCaseToServer(
[
{
requestSharedWithDefender:
RequestSharedWithDefender.COURT_DATE,
force: true,
},
],
workingCase,
setWorkingCase,
)
handleSetAndSendCaseToServer({
requestSharedWithDefender:
RequestSharedWithDefender.COURT_DATE,
force: true,
})
}}
large
backgroundColor="white"
Expand All @@ -188,17 +220,11 @@ const DefenderInfo: FC<Props> = ({ workingCase, setWorkingCase }) => {
RequestSharedWithDefender.NOT_SHARED
}
onChange={() => {
setAndSendCaseToServer(
[
{
requestSharedWithDefender:
RequestSharedWithDefender.NOT_SHARED,
force: true,
},
],
workingCase,
setWorkingCase,
)
handleSetAndSendCaseToServer({
requestSharedWithDefender:
RequestSharedWithDefender.NOT_SHARED,
force: true,
})
}}
large
backgroundColor="white"
Expand Down
56 changes: 0 additions & 56 deletions apps/judicial-system/web/src/components/Inputs/Input.strings.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import { defineMessages } from 'react-intl'

export const nameLabelStrings = defineMessages({
defender: {
id: 'judicial.system.core:lawyer_input.defender',
defaultMessage: 'Nafn verjanda',
description: 'Notaður sem titill á nafni fyrir verjanda.',
},
spokesperson: {
id: 'judicial.system.core:lawyer_input.spokesperson',
defaultMessage: 'Nafn talsmanns',
description: 'Notaður sem titill á nafni fyrir talsmann.',
},
lawyer: {
id: 'judicial.system.core:lawyer_input.lawyer',
defaultMessage: 'Nafn lögmanns',
description: 'Notaður sem titill á nafni fyrir lögmann.',
},
legalRightsProtector: {
id: 'judicial.system.core:lawyer_input.legal_rights_protector',
defaultMessage: 'Nafn réttargæslumanns',
description: 'Notaður sem titill á nafni fyrir réttargæslumann.',
},
})

export const emailLabelStrings = defineMessages({
defender: {
id: 'judicial.system.core:lawyer_input.defender',
defaultMessage: 'Netfang verjanda',
description: 'Notaður sem titill á netfangi fyrir verjanda.',
},
spokesperson: {
id: 'judicial.system.core:lawyer_input.spokesperson',
defaultMessage: 'Netfang talsmanns',
description: 'Notaður sem titill á netfangi fyrir talsmann.',
},
lawyer: {
id: 'judicial.system.core:lawyer_input.lawyer',
defaultMessage: 'Netfang lögmanns',
description: 'Notaður sem titill á netfangi fyrir lögmann.',
},
legalRightsProtector: {
id: 'judicial.system.core:lawyer_input.legal_rights_protector',
defaultMessage: 'Netfang réttargæslumanns',
description: 'Notaður sem titill á netfangi fyrir réttargæslumann.',
},
})

export const phoneNumberLabelStrings = defineMessages({
defender: {
id: 'judicial.system.core:lawyer_input.defender',
defaultMessage: 'Símanúmer verjanda',
description: 'Notaður sem titill á símanúmeri fyrir verjanda.',
},
spokesperson: {
id: 'judicial.system.core:lawyer_input.spokesperson',
defaultMessage: 'Símanúmer talsmanns',
description: 'Notaður sem titill á símanúmeri fyrir talsmann.',
},
lawyer: {
id: 'judicial.system.core:lawyer_input.lawyer',
defaultMessage: 'Símanúmer lögmanns',
description: 'Notaður sem titill á símanúmeri fyrir lögmann.',
},
legalRightsProtector: {
id: 'judicial.system.core:lawyer_input.legal_rights_protector',
defaultMessage: 'Símanúmer réttargæslumanns',
description: 'Notaður sem titill á símanúmeri fyrir réttargæslumann.',
},
})

export const placeholderStrings = defineMessages({
namePlaceholder: {
id: 'judicial.system.core:lawyer_input.name_placeholder',
defaultMessage: 'Fullt nafn',
description: 'Notaður sem hálpartexti fyrir nafn.',
},
emailPlaceholder: {
id: 'judicial.system.core:lawyer_input.email_placeholder',
defaultMessage: 'Netfang',
description: 'Notaður sem hálpartexti fyrir netfang.',
},
phoneNumberPlaceholder: {
id: 'judicial.system.core:lawyer_input.phone_number_placeholder',
defaultMessage: 'Símanúmer',
description: 'Notaður sem hálpartexti fyrir símanúmer.',
},
})
Loading

0 comments on commit 58b89c1

Please sign in to comment.