From 428cac4cdef9aa5192d0964afbb7b5cb41a9eca3 Mon Sep 17 00:00:00 2001 From: boris-careev Date: Fri, 12 Sep 2025 13:19:06 -0500 Subject: [PATCH 1/4] Handle new SuccessorID property and display new connection nudge stashing prototype prototype successor connection bump MDH.js version 3.2.1-boris-provider-successor-mdhui.0 fix naming bump MDH.js 3.2.1-boris-provider-successor-mdhui.1 update property name 3.2.1-boris-provider-successor-mdhui.2 simplification Better verbiage + code cleanup use language function for verbiage verbiage improvement --- locales/en.json | 2 + locales/fr-CA.json | 2 + package-lock.json | 416 +----------------- package.json | 4 +- .../ExternalAccountList.previewdata.tsx | 3 +- .../ExternalAccountList.tsx | 15 +- .../SingleExternalAccount.tsx | 8 +- 7 files changed, 49 insertions(+), 401 deletions(-) diff --git a/locales/en.json b/locales/en.json index db8bed70d..b3b4e032b 100644 --- a/locales/en.json +++ b/locales/en.json @@ -292,6 +292,7 @@ "connect-oura-button": "Connect Oura", "connect-oura-intro": "You can share data from your Oura account if you have one. To begin, click or tap below to log in with your Oura credentials.", "connect-to-device": "Connect to @@DEVICE@@", + "connect-to-new-provider": "Connection obsolete. Please connect to the new provider", "connected": "Connected", "core-sleep-time": "Core Sleep Time", "create-report": "Create PDF Report", @@ -386,6 +387,7 @@ "heart-rate-range": "Heart Rate Range", "heart-rate-variability": "Heart Rate Variability", "help": "Help", + "here": "here", "high-stress-time": "High Stress Time", "highest-systolic": "Highest Systolic", "hours-abbreviation": "h", diff --git a/locales/fr-CA.json b/locales/fr-CA.json index 9d53a4956..39680bfb7 100644 --- a/locales/fr-CA.json +++ b/locales/fr-CA.json @@ -292,6 +292,7 @@ "connect-oura-button": "Connecter Oura", "connect-oura-intro": "Vous pouvez partager les données de votre compte Oura si vous en avez un. Pour commencer, cliquez ou appuyez ci-dessous pour vous connecter avec vos identifiants Oura.", "connect-to-device": "Se connecter à @@DEVICE@@", + "connect-to-new-provider": "Connexion obsolète. Veuillez vous connecter au nouveau fournisseur", "connected": "Connecté", "core-sleep-time": "Temps de sommeil principal", "create-report": "Créer un rapport PDF", @@ -392,6 +393,7 @@ "how-severe-is": "Quelle est la gravité de votre", "how-severe-was": "Quelle était la gravité de votre", "how-to-enable": "Comment activer", + "here": "ici", "immunizations-title": "Vaccinations", "in-bed-time": "Temps au lit", "inbox-history-view-empty-text": "Vous n'avez aucun élément dans l'historique de votre boîte de réception.", diff --git a/package-lock.json b/package-lock.json index ea48f1255..c318eb3d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@careevolution/mydatahelps-ui", - "version": "3.2.0", + "version": "3.2.1-boris-provider-successor-mdhui.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@careevolution/mydatahelps-ui", - "version": "3.2.0", + "version": "3.2.1-boris-provider-successor-mdhui.2", "license": "MIT", "dependencies": { "@emotion/react": "11.11.3", @@ -77,11 +77,26 @@ "@rollup/rollup-linux-x64-gnu": "4.6.1" }, "peerDependencies": { - "@careevolution/mydatahelps-js": "^5.0.0", + "@careevolution/mydatahelps-js": "^5.1.1", "react": "^18.2.0", "react-dom": "^18.2.0" } }, + "../MyDataHelps.js/dist/npm": { + "name": "@careevolution/mydatahelps-js", + "version": "5.1.0", + "extraneous": true, + "license": "Apache-2.0", + "devDependencies": { + "@rollup/plugin-commonjs": "^26.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/plugin-terser": "^0.4.4", + "@rollup/plugin-typescript": "^11.1.6", + "rollup": "^4.18.0", + "rollup-plugin-import-css": "^3.5.0", + "typescript": "^5.4.5" + } + }, "node_modules/@adobe/css-tools": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", @@ -1933,9 +1948,9 @@ "license": "MIT" }, "node_modules/@careevolution/mydatahelps-js": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@careevolution/mydatahelps-js/-/mydatahelps-js-5.0.0.tgz", - "integrity": "sha512-w1ThT1TCngPoDIoxJFGKltNQ45SAkRfzj+H/axdlmAoCVIMrmF/AYvkw1i82jGiOX227zNGA2R391XIk/s6iCA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@careevolution/mydatahelps-js/-/mydatahelps-js-5.1.1.tgz", + "integrity": "sha512-odLxblQEb6i10ETv4nG38WsDktS19b5C5AfweG/BFuL4Hf2g27ZDG05TMYaSv7SWrjX/zVhvQlDTv8On+Zv9PA==", "license": "Apache-2.0", "peer": true }, @@ -3289,63 +3304,6 @@ "@langchain/core": ">=0.2.26 <0.4.0" } }, - "node_modules/@mapbox/node-pre-gyp": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", - "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^2.0.0", - "https-proxy-agent": "^5.0.0", - "make-dir": "^3.1.0", - "node-fetch": "^2.6.7", - "nopt": "^5.0.0", - "npmlog": "^5.0.1", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.11" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@mapbox/node-pre-gyp/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@mdx-js/react": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.1.0.tgz", @@ -5633,15 +5591,6 @@ "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -5881,15 +5830,6 @@ "node": ">=8" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/archy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", @@ -5897,23 +5837,6 @@ "dev": true, "license": "MIT" }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -6677,24 +6600,6 @@ ], "license": "CC-BY-4.0" }, - "node_modules/canvas": { - "version": "2.11.2", - "resolved": "https://registry.npmjs.org/canvas/-/canvas-2.11.2.tgz", - "integrity": "sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "@mapbox/node-pre-gyp": "^1.0.0", - "nan": "^2.17.0", - "simple-get": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/case-sensitive-paths-webpack-plugin": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz", @@ -6781,18 +6686,6 @@ "fsevents": "~2.3.2" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "engines": { - "node": ">=10" - } - }, "node_modules/chromatic": { "version": "11.16.1", "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.16.1.tgz", @@ -6931,18 +6824,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "color-support": "bin.js" - } - }, "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", @@ -7005,15 +6886,6 @@ "source-map": "^0.6.1" } }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -7544,21 +7416,6 @@ "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==" }, - "node_modules/decompress-response": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", - "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "mimic-response": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", @@ -7643,15 +7500,6 @@ "node": ">=0.4.0" } }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -8709,36 +8557,6 @@ "node": ">=12" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/fs-monkey": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", @@ -8776,30 +8594,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gauge": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", - "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "object-assign": "^4.1.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/generic-names": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-4.0.0.tgz", @@ -9074,15 +8868,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -11830,21 +11615,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", - "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", @@ -11895,37 +11665,6 @@ "node": ">=8" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/mkdirp": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", @@ -11962,15 +11701,6 @@ "mustache": "bin/mustache" } }, - "node_modules/nan": { - "version": "2.22.2", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", - "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true - }, "node_modules/nanoid": { "version": "3.3.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", @@ -12125,24 +11855,6 @@ "dev": true, "license": "MIT" }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -12178,22 +11890,6 @@ "node": ">=8" } }, - "node_modules/npmlog": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", - "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", - "deprecated": "This package is no longer supported.", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^3.0.0", - "set-blocking": "^2.0.0" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -14913,20 +14609,6 @@ "license": "MIT", "optional": true }, - "node_modules/simple-get": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.1.tgz", - "integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "dependencies": { - "decompress-response": "^4.2.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -15360,26 +15042,6 @@ "node": ">=6" } }, - "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/tar-fs": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", @@ -15417,21 +15079,6 @@ "node": ">=6" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/terser": { "version": "5.31.6", "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", @@ -16396,18 +16043,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -16518,15 +16153,6 @@ "node": ">=10" } }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC", - "optional": true, - "peer": true - }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", diff --git a/package.json b/package.json index d53ae679f..5308903fe 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@careevolution/mydatahelps-ui", - "version": "3.2.0", + "version": "3.2.1-boris-provider-successor-mdhui.2", "description": "MyDataHelps UI Library", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -106,7 +106,7 @@ "zod": "^3.23.8" }, "peerDependencies": { - "@careevolution/mydatahelps-js": "^5.0.0", + "@careevolution/mydatahelps-js": "^5.1.1", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx b/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx index a76c148e7..57bcfb78f 100644 --- a/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx +++ b/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx @@ -12,7 +12,8 @@ export var previewExternalAccounts: ExternalAccount[] = "name": "Cedars-Sinai Health System", "category": "Provider", "logoUrl": "https://mdhorg.ce.dev/api/v1/delegated/externalaccountproviders/37/logo", - "enabled": true + "enabled": true, + "successorID": 5 } as ExternalAccountProvider }, { id: 2, diff --git a/src/components/container/ExternalAccountList/ExternalAccountList.tsx b/src/components/container/ExternalAccountList/ExternalAccountList.tsx index 07e0a63fb..c69bfd71f 100644 --- a/src/components/container/ExternalAccountList/ExternalAccountList.tsx +++ b/src/components/container/ExternalAccountList/ExternalAccountList.tsx @@ -1,5 +1,5 @@ import React, { useEffect, useState } from 'react' -import MyDataHelps, { ConnectExternalAccountOptions, ExternalAccount } from '@careevolution/mydatahelps-js'; +import MyDataHelps, { ConnectExternalAccountOptions, ExternalAccount, ExternalAccountProvider } from '@careevolution/mydatahelps-js'; import { Card, LoadingIndicator, SingleExternalAccount } from '../../presentational' import { previewExternalAccounts } from './ExternalAccountList.previewdata' @@ -53,6 +53,15 @@ export default function (props: ExternalAccountListProps) { }); } + const connectToSuccessorProvider = async (provider: ExternalAccountProvider): Promise => { + if (provider.successorID) { + MyDataHelps.connectExternalAccount(provider.successorID, props.connectExternalAccountOptions ?? { openNewWindow: true }) + .then(function () { + loadExternalAccounts(); + }); + } + }; + useEffect(() => { initialize(); MyDataHelps.on("applicationDidBecomeVisible", initialize); @@ -70,7 +79,9 @@ export default function (props: ExternalAccountListProps) { onAccountRemoved(account)} - onReconnectAccount={(account: ExternalAccount) => reconnectAccount(account)} /> + onReconnectAccount={(account: ExternalAccount) => reconnectAccount(account)} + onConnectToSuccessorProvider={(provider: ExternalAccountProvider) => connectToSuccessorProvider(provider)} + /> )} {loading && diff --git a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx index 6420cd641..548a44716 100644 --- a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx +++ b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx @@ -1,7 +1,7 @@ import UnstyledButton from '../UnstyledButton'; import { faRefresh, faRepeat, faTrash } from '@fortawesome/free-solid-svg-icons' import React, { useState } from 'react'; -import MyDataHelps, { ExternalAccount } from '@careevolution/mydatahelps-js'; +import MyDataHelps, { ExternalAccount, ExternalAccountProvider } from '@careevolution/mydatahelps-js'; import language from '../../../helpers/language'; import "./SingleExternalAccount.css"; import { getRelativeDateString } from "../../../helpers/date-helpers"; @@ -12,6 +12,7 @@ export interface SingleExternalAccountProps { externalAccount: ExternalAccount; onAccountRemoved: (account: ExternalAccount) => void; onReconnectAccount: (account: ExternalAccount) => void; + onConnectToSuccessorProvider: (provider: ExternalAccountProvider) => void; innerRef?: React.Ref; } @@ -43,6 +44,11 @@ export default function SingleExternalAccount (props: SingleExternalAccountProps {props.externalAccount.provider.logoUrl && {props.externalAccount.provider.name} } + {props.externalAccount.provider.successorID && +

+ {language('connect-to-new-provider')} props.onConnectToSuccessorProvider(props.externalAccount.provider)}>{language('here')}. +

+ } {!props.externalAccount.provider.logoUrl &&
{props.externalAccount.provider.name}
} From 408a04fa2e4f104623745aba3a2f519e224b557c Mon Sep 17 00:00:00 2001 From: boris-careev Date: Fri, 26 Sep 2025 19:37:54 -0500 Subject: [PATCH 2/4] Fix link --- .../SingleExternalAccount/SingleExternalAccount.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx index 548a44716..a0b2386e7 100644 --- a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx +++ b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx @@ -46,7 +46,7 @@ export default function SingleExternalAccount (props: SingleExternalAccountProps } {props.externalAccount.provider.successorID &&

- {language('connect-to-new-provider')} props.onConnectToSuccessorProvider(props.externalAccount.provider)}>{language('here')}. + {language('connect-to-new-provider')} { e.preventDefault(); props.onConnectToSuccessorProvider(props.externalAccount.provider); }}>{language('here')}.

} {!props.externalAccount.provider.logoUrl && From 06c83b0fc84cd4e5ce09e90cf7bfa9759085b6f5 Mon Sep 17 00:00:00 2001 From: boris-careev Date: Wed, 8 Oct 2025 15:46:54 -0500 Subject: [PATCH 3/4] Conditional display of successor connection nudge + cosmetics --- .../ExternalAccountList.previewdata.tsx | 7 ++++--- .../ExternalAccountList/ExternalAccountList.tsx | 1 + .../SingleExternalAccount.css | 8 ++++++++ .../SingleExternalAccount.tsx | 14 ++++++++------ 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx b/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx index 57bcfb78f..10e220ba1 100644 --- a/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx +++ b/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx @@ -13,7 +13,7 @@ export var previewExternalAccounts: ExternalAccount[] = "category": "Provider", "logoUrl": "https://mdhorg.ce.dev/api/v1/delegated/externalaccountproviders/37/logo", "enabled": true, - "successorID": 5 + "successorID": 1 } as ExternalAccountProvider }, { id: 2, @@ -22,10 +22,11 @@ export var previewExternalAccounts: ExternalAccount[] = provider: { "id": 1, - "name": "Kaiser Permanente", + "name": "CareEVolution", "category": "Provider", "logoUrl": "https://mdhorg.ce.dev/api/v1/delegated/externalaccountproviders/1/logo", - "enabled": true + "enabled": true, + "successorID": 99 } as ExternalAccountProvider }, { id: 3, diff --git a/src/components/container/ExternalAccountList/ExternalAccountList.tsx b/src/components/container/ExternalAccountList/ExternalAccountList.tsx index c69bfd71f..830b8b15e 100644 --- a/src/components/container/ExternalAccountList/ExternalAccountList.tsx +++ b/src/components/container/ExternalAccountList/ExternalAccountList.tsx @@ -81,6 +81,7 @@ export default function (props: ExternalAccountListProps) { onAccountRemoved={(account: ExternalAccount) => onAccountRemoved(account)} onReconnectAccount={(account: ExternalAccount) => reconnectAccount(account)} onConnectToSuccessorProvider={(provider: ExternalAccountProvider) => connectToSuccessorProvider(provider)} + externalAccountProviderIds={externalAccounts.map(a => a.provider.id)} /> )} diff --git a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.css b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.css index 5323466e1..46ed621c3 100644 --- a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.css +++ b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.css @@ -4,6 +4,14 @@ background: var(--mdhui-background-color-0); } +.mdhui-single-external-account .provider-successor-connection-nudge { + padding: 16px; + padding-bottom: 0; + padding-top: 0; + float: right; + font-size: .88em; +} + .mdhui-single-external-account .external-account-header { position: relative; padding: 8px; diff --git a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx index a0b2386e7..7f5053c3f 100644 --- a/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx +++ b/src/components/presentational/SingleExternalAccount/SingleExternalAccount.tsx @@ -14,9 +14,10 @@ export interface SingleExternalAccountProps { onReconnectAccount: (account: ExternalAccount) => void; onConnectToSuccessorProvider: (provider: ExternalAccountProvider) => void; innerRef?: React.Ref; + externalAccountProviderIds?: number[]; } -export default function SingleExternalAccount (props: SingleExternalAccountProps) { +export default function SingleExternalAccount(props: SingleExternalAccountProps) { const [statusOverride, setStatusOverride] = useState(""); function removeAccount() { @@ -44,11 +45,6 @@ export default function SingleExternalAccount (props: SingleExternalAccountProps {props.externalAccount.provider.logoUrl && {props.externalAccount.provider.name} } - {props.externalAccount.provider.successorID && -

- {language('connect-to-new-provider')} { e.preventDefault(); props.onConnectToSuccessorProvider(props.externalAccount.provider); }}>{language('here')}. -

- } {!props.externalAccount.provider.logoUrl &&
{props.externalAccount.provider.name}
} @@ -58,6 +54,12 @@ export default function SingleExternalAccount (props: SingleExternalAccountProps } + {/* Show link to connect to successor provider if there is one and user doesn't already have an account with them */} + {props.externalAccount.provider.successorID && (!props.externalAccountProviderIds || !props.externalAccountProviderIds.includes(props.externalAccount.provider.successorID)) && +

+ {language('connect-to-new-provider')} { e.preventDefault(); props.onConnectToSuccessorProvider(props.externalAccount.provider); }}>{language('here')}. +

+ }
{getStatus() === "unauthorized" &&

From b0956219c4c3a347c838a31e5e51a3659c995b9a Mon Sep 17 00:00:00 2001 From: boris-careev Date: Thu, 9 Oct 2025 14:31:37 -0500 Subject: [PATCH 4/4] Update ExternalAccountList.previewdata.tsx --- .../ExternalAccountList/ExternalAccountList.previewdata.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx b/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx index 10e220ba1..524f31307 100644 --- a/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx +++ b/src/components/container/ExternalAccountList/ExternalAccountList.previewdata.tsx @@ -13,7 +13,7 @@ export var previewExternalAccounts: ExternalAccount[] = "category": "Provider", "logoUrl": "https://mdhorg.ce.dev/api/v1/delegated/externalaccountproviders/37/logo", "enabled": true, - "successorID": 1 + "successorID": 99 } as ExternalAccountProvider }, { id: 2, @@ -26,7 +26,7 @@ export var previewExternalAccounts: ExternalAccount[] = "category": "Provider", "logoUrl": "https://mdhorg.ce.dev/api/v1/delegated/externalaccountproviders/1/logo", "enabled": true, - "successorID": 99 + "successorID": 1 } as ExternalAccountProvider }, { id: 3,