Skip to content

Commit

Permalink
Oppgradere modia-dekoratoren til v3
Browse files Browse the repository at this point in the history
  • Loading branch information
Oddsor committed Sep 17, 2024
1 parent 83e333e commit c3216ae
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 50 deletions.
11 changes: 7 additions & 4 deletions server/src/dekorator/appMedModiaDekoratoren.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,27 @@
import fs from 'node:fs';
import jsdom from 'jsdom';
import { Request, Response } from 'express';
import { ENV } from '../config';

import { DECORATOR_INTERNAL_STYLING, DECORATOR_INTERNAL_SCRIPT } from '../config';

const { JSDOM } = jsdom;

const scriptAddress: string =
'https://internarbeidsflatedecorator.nais.adeo.no/internarbeidsflatedecorator/v2/static/js/head.v2.min.js';
ENV === 'prod'
? 'https://cdn.nav.no/personoversikt/internarbeidsflate-decorator-v3/prod/latest/dist/bundle.js'
: 'https://cdn.nav.no/personoversikt/internarbeidsflate-decorator-v3/dev/latest/dist/bundle.js';
const styleAddress: string =
'https://internarbeidsflatedecorator.nais.adeo.no/internarbeidsflatedecorator/v2/static/css/main.css';
ENV === 'prod'
? 'https://cdn.nav.no/personoversikt/internarbeidsflate-decorator-v3/prod/latest/dist/index.css'
: 'https://cdn.nav.no/personoversikt/internarbeidsflate-decorator-v3/dev/latest/dist/index.css';

export async function getModiaDekoratoren(indexpath: string, _: Request, res: Response) {
const index: string = await getHTMLDocument(indexpath);

const { document } = new JSDOM(index).window;
if (document) {
console.log('document is defined');
const updatedDocument = setInnHTML(document);
console.log('current updated document: ', updatedDocument.documentElement.outerHTML);
res.send(`<!DOCTYPE html>${updatedDocument.documentElement.outerHTML}`);
} else {
throw new Error('Feilet med oppdatering av index.html.');
Expand Down
2 changes: 1 addition & 1 deletion src/InnloggingBoundary/InnloggingBoundary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import Innloggingside from './Innloggingsside';
import useInnlogget from './useInnlogget';

const dekoratorConfig = decoratorconfig();
const InternflateDecorator = NAVSPA.importer<DecoratorProps>('internarbeidsflatefs');
const InternflateDecorator = NAVSPA.importer<DecoratorProps>('internarbeidsflate-decorator-v3');

export const InnloggetBrukerContext = React.createContext<InnloggetBruker>({
identifikator: '',
Expand Down
16 changes: 11 additions & 5 deletions src/internflateDekorator/decoratorconfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@ import { DecoratorProps } from '@/internflateDekorator/decoratorprops';

const decoratorconfig = (): DecoratorProps => {
return {
appname: 'Tiltaksgjennomføring',
useProxy: true,
toggles: {
visVeileder: true,
},
appName: 'Tiltaksgjennomføring',
onEnhetChanged: () => {},
onFnrChanged: () => {},
showEnheter: true,
showSearchArea: true,
showHotkeys: true,
environment: 'local',
urlFormat: 'LOCAL',
// toggles: {
// visVeileder: true,
// },
};
};

Expand Down
82 changes: 42 additions & 40 deletions src/internflateDekorator/decoratorprops.ts
Original file line number Diff line number Diff line change
@@ -1,57 +1,59 @@
export interface DecoratorProps {
appname: string; // Navn på applikasjon
fnr?: FnrContextvalue; // Konfigurasjon av fødselsnummer-kontekst
enhet?: EnhetContextvalue; // Konfigurasjon av enhet-kontekst
toggles?: TogglesConfig; // Konfigurasjon av hvilke elementer som skal vises i dekoratøren
markup?: Markup; // Ekstra innhold i dekoratøren, kan brukes om man trenger å legge en knapp innenfor dekoratøren

/* Manuell overstyring av urlene til BFFs.
Gjør alle kall til relativt path, og trenger derfor proxy oppsett. Default: false */
useProxy?: boolean;

/* Manuell innsending av JWT, settes som Authorization-header.
Om null sendes cookies vha credentials: 'include' */
accessToken?: string;
}

export interface TogglesConfig {
visVeileder?: boolean; // Styrer om man skal vise informasjon om innlogget veileder
enhet?: string | undefined; // Konfigurasjon av enhet-kontekst
accessToken?: string | undefined; // Manuell innsending av JWT, settes som Authorization-header. Om null sendes cookies vha credentials: 'include'
fnr?: string | undefined; // Konfigurasjon av fødselsnummer-kontekst
userKey?: string | undefined; // Om man ikke ønsker å bruke fnr i urler, kan andre apper kalle contextholder for å generere en midlertidig kode. Hvis App A skal navigere til App B som har dekoratøren, må App A først sende en post request til /fnr-code/generate med {fnr: string} i bodyen, dette returnerer {fnr: string, code: string} til App A. App A kan så navigere til App B og sende med denne koden. App B kan så sende den koden inn til dekoratøren i userKey propen og så henter dekoratøren fnr for den koden fra contextholderen.
enableHotkeys?: boolean | undefined; // Aktivere hurtigtaster
fetchActiveEnhetOnMount?: boolean | undefined; // Om enhet er undefined fra container appen, og denne er satt til true, henter den sist aktiv enhet og bruker denne.
fetchActiveUserOnMount?: boolean | undefined; // Om fnr er undefined fra container appen, og denne er satt til true for at den skal hente siste aktiv fnr.
onEnhetChanged: (enhetId?: string | null, enhet?: Enhet) => void; // Kalles når enheten endres
onFnrChanged: (fnr?: string | null) => void; // Kalles når fnr enheten endres
onLinkClick?: (link: { text: string; url: string }) => void; // Kan brukes for å legge til callbacks ved klikk på lenker i menyen. Merk at callbacken ikke kan awaites og man må selv håndtere at siden lukkes. Nyttig for å f.eks tracke navigasjon events i amplitude
appName: string; // Navn på applikasjonen
hotkeys?: Hotkey[]; // Konfigurasjon av hurtigtaster
markup?: Markup; // Egen HTML
showEnheter: boolean; // Vis enheter
showSearchArea: boolean; // Vis søkefelt
showHotkeys: boolean; // Vis hurtigtaster
environment: Environment; // Miljø som skal brukes.
urlFormat: UrlFormat; // URL format
proxy?: string | undefined; // Manuell overstyring av urlene til BFFs. Gjør alle kall til relativt path hvis true, og bruker verdien som domene om satt til en string. Default: false
}

export interface Markup {
etterSokefelt?: string; // Gir muligheten for sende inn egen html som blir en del av dekoratøren
}

/* Fnr/Enhet-konfiguration støttet både `Controlled` og `Uncontrolled` operasjon.
// Ved bruk av `Controlled` må konsument-applikasjonen selv ta ansvar for oppdatering av `value` etter enhver `onChange`
Dette er i motsetning til `Uncontrolled`, hvor dette håndteres av dekoratøren.
Og alt konsument-applikasjonen trenger å gjøre er å følge med på `onChange`. */

export interface ControlledContextvalue<T> extends BaseContextvalue<T> {
value: string | null;
export interface Enhet {
readonly enhetId: string;
readonly navn: string;
}

export interface UncontrolledContextvalue<T> extends BaseContextvalue<T> {
initialValue: string | null;
}
// Miljø
export type Environment = 'q0' | 'q1' | 'q2' | 'q3' | 'q4' | 'prod' | 'local' | 'mock';

export type UrlFormat = 'LOCAL' | 'NAV_NO' | 'ANSATT'; // UrlFormat. Brukes om proxy ikke er satt & i url til websocket.

export interface BaseContextvalue<T> {
display: T;
skipModal?: boolean;
ignoreWsEvents?: boolean;
onChange(value: string | null): void;
export interface HotkeyObject {
char: string;
altKey?: boolean;
ctrlKey?: boolean;
metaKey?: boolean;
shiftKey?: boolean;
}

export type Contextvalue<T> = ControlledContextvalue<T> | UncontrolledContextvalue<T>;
export interface HotkeyDescription {
key: HotkeyObject;
description: string;
forceOverride?: boolean;
}

export enum EnhetDisplay {
ENHET = 'ENHET',
ENHET_VALG = 'ENHET_VALG',
export interface ActionHotKey extends HotkeyDescription {
action(event: KeyboardEvent): void;
}

export enum FnrDisplay {
SOKEFELT = 'SOKEFELT',
export interface DocumentingHotKey extends HotkeyDescription {
documentationOnly: boolean;
}

export type EnhetContextvalue = Contextvalue<EnhetDisplay>;
export type FnrContextvalue = Contextvalue<FnrDisplay>;
export type Hotkey = ActionHotKey | DocumentingHotKey;

0 comments on commit c3216ae

Please sign in to comment.