Skip to content
This repository was archived by the owner on Sep 18, 2024. It is now read-only.

Nytt sok #1532

Merged
merged 15 commits into from
Mar 14, 2024
1 change: 1 addition & 0 deletions .env
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
ENV=localhost
XP_BASE_URL=https://www.nav.no
SEARCH_URL=https://navno-search-api.intern.nav.no
APP_BASE_URL=http://localhost:8088
APP_BASE_PATH=/dekoratoren
API_XP_SERVICES_URL=https://www.nav.no/_/service
Expand Down
3 changes: 3 additions & 0 deletions .nais/vars/prod.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ ingresses:
outboundHosts:
- www.nav.no
- navno-unleash-api.nav.cloud.nais.io
- navno-search-api.intern.nav.no
env:
- name: ENV
value: prod
- name: XP_BASE_URL
value: https://www.nav.no
- name: SEARCH_URL
value: https://navno-search-api.intern.nav.no
- name: APP_BASE_URL
value: https://www.nav.no
- name: APP_BASE_PATH
Expand Down
17 changes: 14 additions & 3 deletions src/komponenter/header/header-regular/common/sok/Sok.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,20 @@ interface Props {

const MAX_HITS_TO_DISPLAY = 5;

const validAudiences: ReadonlySet<string> = new Set(['privatperson', 'arbeidsgiver', 'samarbeidspartner']);

const stateSelector = (state: AppState) => ({
environment: state.environment,
language: state.language.language,
audience: state.arbeidsflate.status,
});

const setSubmitTrackerCookie = () => {
Cookies.set('nav-search-use', Date.now().toString(), { expires: 30, domain: '.nav.no' });
};

const Sok = (props: Props) => {
const { environment, language } = useSelector(stateSelector);
const { environment, language, audience } = useSelector(stateSelector);
const [loading, setLoading] = useState<boolean>(false);
const [result, setResult] = useState<Sokeresultat | undefined>();
const [error, setError] = useState<string | undefined>();
Expand Down Expand Up @@ -106,6 +109,8 @@ const Sok = (props: Props) => {
setLoading(true);
fetchSearchDebounced({
value,
audience,
language,
environment,
setLoading,
setError,
Expand All @@ -117,6 +122,7 @@ const Sok = (props: Props) => {
}}
className={klassenavn}
language={language}
audience={audience}
writtenInput={searchInput}
onReset={onReset}
id={props.id}
Expand Down Expand Up @@ -144,14 +150,16 @@ const Sok = (props: Props) => {
/* Abstraction for debounce */
interface FetchResult {
value: string;
audience: string;
language: Locale;
environment: Environment;
setLoading: (value: boolean) => void;
setError: (value?: string) => void;
setResult: (value?: any) => void;
}

const fetchSearch = (props: FetchResult) => {
const { environment, value } = props;
const { environment, value, audience, language } = props;
const { setLoading, setError, setResult } = props;
const { APP_URL } = environment;
const url = `${APP_URL}/api/sok`;
Expand All @@ -164,7 +172,10 @@ const fetchSearch = (props: FetchResult) => {
label: value,
action: 'søk-dynamisk',
});
fetch(`${url}?ord=${encodeURIComponent(value)}`)

const facet = validAudiences.has(audience) ? audience : 'privatperson';

fetch(`${url}?ord=${encodeURIComponent(value)}&f=${facet}&preferredLanguage=${language}`)
.then((response) => {
if (response.ok) {
return response;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,13 @@ type Props = {
className: string;
writtenInput: string;
language: Locale;
audience: string;
onChange: (value: string) => void;
onReset: () => void;
id: string;
};
export const SokInput = (props: Props) => {
const { className, writtenInput, language, onChange, onReset, id } = props;
const { className, writtenInput, language, audience, onChange, onReset, id } = props;
// Only set the input value in the browser, to prevent execution-order
// dependent SSR warnings under certain circumstances
const inputValue = verifyWindowObj() ? writtenInput || '' : undefined;
Expand All @@ -28,7 +29,7 @@ export const SokInput = (props: Props) => {
className={className}
value={inputValue}
type="text"
label={finnTekst('sok-knapp-sokefelt', language)}
label={finnTekst('sok-knapp-sokefelt', language, audience)}
autoComplete="off"
/>
<SokKnapper writtenInput={writtenInput} onReset={onReset} id={id} />
Expand Down
2 changes: 1 addition & 1 deletion src/server/api-handlers/sok.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { RequestHandler } from 'express';

const sokServiceUrl = `${process.env.API_XP_SERVICES_URL}/navno.nav.no.search/search2/sok`;
const sokServiceUrl = `${process.env.SEARCH_URL}/content/decorator-search`;

export const getSokHandler: RequestHandler = (req, res) => {
const queryString = new URL(req.url, process.env.APP_BASE_URL).search;
Expand Down
1 change: 1 addition & 0 deletions src/server/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ export const clientEnv = ({ req }: Props): Environment => {
return {
ENV: process.env.ENV as string,
XP_BASE_URL: process.env.XP_BASE_URL as string,
SEARCH_URL: process.env.SEARCH_URL as string,
APP_URL: appUrl as string,
APP_BASE_URL: process.env.APP_BASE_URL as string,
APP_BASE_PATH: process.env.APP_BASE_PATH as string,
Expand Down
2 changes: 2 additions & 0 deletions src/store/reducers/environment-duck.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { Breadcrumb } from 'komponenter/header/common/brodsmulesti/Brodsmulesti'
export interface Environment {
ENV: string;
XP_BASE_URL: string;
SEARCH_URL: string;
APP_URL: string;
APP_BASE_URL: string;
APP_BASE_PATH: string;
Expand Down Expand Up @@ -57,6 +58,7 @@ export interface Cookies {
export const initialState: Environment = {
ENV: '',
XP_BASE_URL: '',
SEARCH_URL: '',
APP_URL: '',
APP_BASE_URL: '',
APP_BASE_PATH: '',
Expand Down
2 changes: 1 addition & 1 deletion src/tekster/ledetekster.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export const ledetekster = {
'sok-reset': 'Tøm',
'sok-reset-en': 'Reset',
'sok-reset-se': 'Tøm',
'sok-knapp-sokefelt': 'Søk på nav.no',
'sok-knapp-sokefelt': (input: string) => `Søk i innhold for ${input}`,
'sok-knapp-sokefelt-en': 'Search nav.no',
'sok-knapp-sokefelt-se': 'Oza nav.no',
'sok-input-label': 'Søk',
Expand Down
Loading