From 15ca5e7fb442c796f8abef73168ecb0f4618397e Mon Sep 17 00:00:00 2001
From: Tore Brede <Tore.Brede@uib.no>
Date: Mon, 4 Oct 2021 11:08:10 +0200
Subject: [PATCH] GREG-60: Adding validation of phone number

---
 frontend/package-lock.json             | 11 +++++++++++
 frontend/package.json                  |  1 +
 frontend/public/locales/en/common.json |  3 ++-
 frontend/public/locales/nb/common.json |  2 ++
 frontend/public/locales/nn/common.json |  2 ++
 frontend/src/utils/index.ts            | 10 ++++++++++
 6 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index ea64e10f..aa28930f 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -29,6 +29,7 @@
         "i18next": "^20.6.0",
         "i18next-browser-languagedetector": "^6.1.2",
         "i18next-http-backend": "^1.3.1",
+        "libphonenumber-js": "^1.9.35",
         "react": "^17.0.2",
         "react-datepicker": "^4.2.1",
         "react-dom": "^17.0.2",
@@ -13861,6 +13862,11 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/libphonenumber-js": {
+      "version": "1.9.35",
+      "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.35.tgz",
+      "integrity": "sha512-6ok1JD4GcU7owpbp07WJZlxoGdlY538OCgN9fmOlWwCzqPNLzra7tvaFz7NJP8Hcmp1lkm97wNZ2hICN9uGylg=="
+    },
     "node_modules/lines-and-columns": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -33050,6 +33056,11 @@
         "type-check": "~0.4.0"
       }
     },
+    "libphonenumber-js": {
+      "version": "1.9.35",
+      "resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.9.35.tgz",
+      "integrity": "sha512-6ok1JD4GcU7owpbp07WJZlxoGdlY538OCgN9fmOlWwCzqPNLzra7tvaFz7NJP8Hcmp1lkm97wNZ2hICN9uGylg=="
+    },
     "lines-and-columns": {
       "version": "1.1.6",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 53e25d00..720dd094 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -24,6 +24,7 @@
     "i18next": "^20.6.0",
     "i18next-browser-languagedetector": "^6.1.2",
     "i18next-http-backend": "^1.3.1",
+    "libphonenumber-js": "^1.9.35",
     "react": "^17.0.2",
     "react-datepicker": "^4.2.1",
     "react-dom": "^17.0.2",
diff --git a/frontend/public/locales/en/common.json b/frontend/public/locales/en/common.json
index f002b064..b9cdf253 100644
--- a/frontend/public/locales/en/common.json
+++ b/frontend/public/locales/en/common.json
@@ -48,7 +48,8 @@
     "invalidIdNumber": "Invalid national ID number",
     "nationalIdNumberRequired": "National ID number required",
     "roleTypeRequired": "Role type is required",
-    "roleEndRequired": "Role end date is required"
+    "roleEndRequired": "Role end date is required",
+    "invalidMobilePhoneNumber": "Invalid phone number"
   },
   "button": {
     "back": "Back",
diff --git a/frontend/public/locales/nb/common.json b/frontend/public/locales/nb/common.json
index 314af2ff..06f1daa6 100644
--- a/frontend/public/locales/nb/common.json
+++ b/frontend/public/locales/nb/common.json
@@ -48,6 +48,8 @@
     "invalidIdNumber": "Ugyldig fødselsnummer",
     "nationalIdNumberRequired": "Fødselsnummer er påkrevd",
     "roleTypeRequired": "Rolletype er påkrevd",
+    "roleEndRequired": "Sluttdato for rolle er påkrevd",
+    "invalidMobilePhoneNumber": "Ugyldig telefonnummer"
     "roleEndRequired": "Sluttdato for rolle er påkrevd"
   },
   "button": {
diff --git a/frontend/public/locales/nn/common.json b/frontend/public/locales/nn/common.json
index f3263eef..a04fe47e 100644
--- a/frontend/public/locales/nn/common.json
+++ b/frontend/public/locales/nn/common.json
@@ -49,6 +49,8 @@
     "invalidIdNumber": "Ugyldig fødselsnummer",
     "nationalIdNumberRequired": "Fødselsnummer er påkrevd",
     "roleTypeRequired": "Rolletype er påkrevd",
+    "roleEndRequired": "Sluttdato for rolle er påkrevd",
+    "invalidMobilePhoneNumber": "Ugyldig telefonnummer"
     "roleEndRequired": "Sluttdato for rolle er påkrevd"
   },
   "button": {
diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts
index f269b160..d9149269 100644
--- a/frontend/src/utils/index.ts
+++ b/frontend/src/utils/index.ts
@@ -1,5 +1,6 @@
 import validator from '@navikt/fnrvalidator'
 import i18n from 'i18next'
+import { isValidPhoneNumber } from 'libphonenumber-js'
 
 export function getCookie(name: string) {
   if (!document.cookie) {
@@ -50,3 +51,12 @@ export function isValidFnr(data: string | undefined): boolean | string {
   // TypeScript complains if toString is not used on the function result
   return i18n.t('common:validation.invalidIdNumber').toString()
 }
+
+export function isValidMobilePhoneNumber(data: string): boolean | string {
+  const valid = isValidPhoneNumber(data)
+  if (valid) {
+    return true
+  }
+  // TypeScript complains if toString is not used on the function result
+  return i18n.t('common:validation.invalidMobilePhoneNumber').toString()
+}
\ No newline at end of file
-- 
GitLab