diff --git a/src/api/veilarbpersonflatefs.ts b/src/api/veilarbpersonflatefs.ts index bc0265a5..69102060 100644 --- a/src/api/veilarbpersonflatefs.ts +++ b/src/api/veilarbpersonflatefs.ts @@ -2,12 +2,10 @@ import { AxiosPromise } from 'axios'; import { axiosInstance } from './utils'; export const PILOT_TOGGLE = 'pto.vedtaksstotte.pilot'; -export const VEILARBDETALJERFS_ENABLED = 'veilarbpersonflatefs.veilarbdetaljerfs-enabled'; -export const ALL_TOGGLES = [PILOT_TOGGLE, VEILARBDETALJERFS_ENABLED]; +export const ALL_TOGGLES = [PILOT_TOGGLE]; export interface FeatureToggles { [PILOT_TOGGLE]: boolean; - [VEILARBDETALJERFS_ENABLED]: boolean; } export function fetchFeaturesToggles(): AxiosPromise { diff --git a/src/component/personinfo/personinfo.tsx b/src/component/personinfo/personinfo.tsx index b4f573bc..c42a2c15 100644 --- a/src/component/personinfo/personinfo.tsx +++ b/src/component/personinfo/personinfo.tsx @@ -5,18 +5,22 @@ import ArbeidslisteKnapp from '../arbeidsliste/arbeidsliste-knapp'; import { KopierKnappTekst } from '../components/kopier-knapp/kopier-knapp'; import { useAppStore } from '../../store/app-store'; import { useDataStore } from '../../store/data-store'; -import { selectKanLeggeIArbeidsListe, selectKanRedigereArbeidsliste, selectSammensattNavn } from '../../util/selectors'; +import { + selectKanLeggeIArbeidsListe, + selectKanRedigereArbeidsliste, + selectSammensattNavn, + selectTelefonnummer +} from '../../util/selectors'; import { useModalStore } from '../../store/modal-store'; import './personinfo.less'; import { logMetrikk } from '../../util/logger'; import { formaterTelefonnummer } from '../../util/utils'; import { StringOrNothing } from '../../util/type/utility-types'; -import { VEILARBDETALJERFS_ENABLED } from '../../api/veilarbpersonflatefs'; import { Label } from '@navikt/ds-react'; function PersonInfo() { const { brukerFnr } = useAppStore(); - const { personalia, arbeidsliste, oppfolgingsstatus, innloggetVeileder, features } = useDataStore(); + const { personalia, arbeidsliste, oppfolgingsstatus, innloggetVeileder } = useDataStore(); const { showArbeidslisteModal } = useModalStore(); const arbeidslisteikon = arbeidsliste?.kategori; @@ -29,7 +33,7 @@ function PersonInfo() { logMetrikk('veilarbvisittkortfs.metrikker.visittkort.arbeidsliste-ikon', { kategori: arbeidslisteikon }); showArbeidslisteModal(); }; - const uformattertTelefon: StringOrNothing = personalia?.telefon?.find(entry => entry.prioritet === '1')?.telefonNr; + const uformattertTelefon: StringOrNothing = selectTelefonnummer(personalia); const telefon: string = formaterTelefonnummer(uformattertTelefon); return ( @@ -43,13 +47,11 @@ function PersonInfo() { kanRedigereArbeidsliste={kanRedigereArbeidsliste} /> - {features[VEILARBDETALJERFS_ENABLED] && } - {uformattertTelefon && features[VEILARBDETALJERFS_ENABLED] && ( - - )} - {!uformattertTelefon && features[VEILARBDETALJERFS_ENABLED] && ( - + {} + {uformattertTelefon && ( + )} + {!uformattertTelefon && } ); diff --git a/src/mock/api/veilarbperson.ts b/src/mock/api/veilarbperson.ts index 6642c621..0082b162 100644 --- a/src/mock/api/veilarbperson.ts +++ b/src/mock/api/veilarbperson.ts @@ -7,35 +7,33 @@ import { RegistreringData, SpraakTolk, VergeOgFullmakt -} from "../../api/veilarbperson"; +} from '../../api/veilarbperson'; import { defaultNetworkResponseDelay } from '../config'; const mockHarBruktNivaa4: HarBruktNivaa4Type = { harbruktnivaa4: false }; -const mockTelefon: PersonaliaTelefon[] = - [ - { - prioritet: '1', - telefonNr: '+4746333333', - registrertDato: '10.07.2008', - master: 'FREG' - - }, - { - prioritet: '2', - telefonNr: '80022222', - registrertDato: '10.04.2010', - master: 'KRR' - }, - { - prioritet: '3', - telefonNr: '44222444', - registrertDato: null, - master: 'PDL' - } - ] +const mockTelefon: PersonaliaTelefon[] = [ + { + prioritet: '2', + telefonNr: '0047 463 33 333', + registrertDato: '10.07.2008', + master: 'FREG' + }, + { + prioritet: '3', + telefonNr: '+47 80 02 22 22', + registrertDato: '10.04.2010', + master: 'KRR' + }, + { + prioritet: '1', + telefonNr: '+213 207 860 11 29', + registrertDato: null, + master: 'PDL' + } +]; const mockPersonaliaV2: Personalia = { fornavn: 'GRØNN', diff --git a/src/mock/api/veilarbpersonflatefs.ts b/src/mock/api/veilarbpersonflatefs.ts index 2584b057..c0dd271c 100644 --- a/src/mock/api/veilarbpersonflatefs.ts +++ b/src/mock/api/veilarbpersonflatefs.ts @@ -1,11 +1,10 @@ import { rest } from 'msw'; import { RequestHandlersList } from 'msw/lib/types/setupWorker/glossary'; -import { FeatureToggles, PILOT_TOGGLE, VEILARBDETALJERFS_ENABLED } from '../../api/veilarbpersonflatefs'; +import { FeatureToggles, PILOT_TOGGLE } from '../../api/veilarbpersonflatefs'; import { defaultNetworkResponseDelay } from '../config'; const mockFeatures: FeatureToggles = { - [PILOT_TOGGLE]: true, - [VEILARBDETALJERFS_ENABLED]: true + [PILOT_TOGGLE]: true }; export const veilarbpersonflatefsHandlers: RequestHandlersList = [ diff --git a/src/util/selectors.ts b/src/util/selectors.ts index c3d561c7..86e402c0 100644 --- a/src/util/selectors.ts +++ b/src/util/selectors.ts @@ -4,7 +4,7 @@ import { Oppfolging, OppfolgingStatus, TilgangTilBrukersKontor } from '../api/ve import { Personalia } from '../api/veilarbperson'; import { Arbeidsliste } from '../api/veilarbportefolje'; import { VeilederData } from '../api/veilarbveileder'; -import { OrNothing } from './type/utility-types'; +import { OrNothing, StringOrNothing } from './type/utility-types'; export function selectSammensattNavn(personalia: Personalia | undefined): string { if (!personalia) return ''; @@ -129,3 +129,11 @@ export function selectKanTildeleVeileder( if (!oppfolging || !tilgangTilBrukersKontor) return false; return oppfolging.underOppfolging && tilgangTilBrukersKontor.tilgangTilBrukersKontor; } + +export function selectTelefonnummer(personalia: Personalia | undefined): StringOrNothing { + const telefonEntries = personalia?.telefon ?? []; + // Filtrer bort tomme telefonnumre og sorter på prioritet, velger det med lavest prioritet + return telefonEntries + .filter(tlfEntry => tlfEntry.telefonNr) + .sort((a, b) => Number(a.prioritet) - Number(b.prioritet))[0]?.telefonNr; +} diff --git a/src/util/utils.ts b/src/util/utils.ts index 744c6354..15970f58 100644 --- a/src/util/utils.ts +++ b/src/util/utils.ts @@ -1,5 +1,4 @@ import { AxiosResponse } from 'axios'; -import { PersonaliaTelefon } from '../api/veilarbperson'; import { StringOrNothing } from './type/utility-types'; const emdashCharacterCode = 8212; @@ -68,19 +67,23 @@ export function isDefined(subject: any): boolean { return subject !== undefined && subject !== null; } -export function formaterTelefonnummer(telefon: PersonaliaTelefon | undefined | string) { +export function formaterTelefonnummer(telefon: StringOrNothing) { + let norskTelefonnummer = false; + if (!telefon) { return EMDASH; } - let telefonNr = telefon?.toString(); + let telefonNr = telefon?.toString().replace(/\s/g, ''); let landkode = ''; if (telefonNr?.startsWith('0047')) { landkode = '+47'; telefonNr = telefonNr.slice(4); + norskTelefonnummer = true; } else if (telefonNr?.startsWith('+47')) { landkode = telefonNr.slice(0, 3); telefonNr = telefonNr.slice(3); + norskTelefonnummer = true; } const tall = telefonNr?.split(''); @@ -89,8 +92,9 @@ export function formaterTelefonnummer(telefon: PersonaliaTelefon | undefined | s while (tall?.length) { splittTall.push(tall.splice(0, 2).join('')); } - - return `${landkode} ${splittTall.join(' ')}`; + if (norskTelefonnummer) { + return splittTall.join(' '); + } else return `${landkode} ${splittTall.join(' ')}`; } export type DeploymentEnvironment = 'local' | 'development' | 'production';