diff --git a/services/web/app/src/Features/User/UserPagesController.mjs b/services/web/app/src/Features/User/UserPagesController.mjs index 482d2af984..8fe4601bc3 100644 --- a/services/web/app/src/Features/User/UserPagesController.mjs +++ b/services/web/app/src/Features/User/UserPagesController.mjs @@ -34,6 +34,10 @@ async function settingsPage(req, res) { req.session, 'projectSyncErrorMessage' ) + const referenceLinkingErrorMessage = popSessionValue( + req.session, + 'referenceLinkingErrorMessage' + ) // Institution SSO let institutionLinked = _.get(req.session, ['saml', 'linked']) if (institutionLinked) { @@ -171,6 +175,7 @@ async function settingsPage(req, res) { thirdPartyIds: UserPagesController._restructureThirdPartyIds(user), projectSyncSuccessMessage, projectSyncErrorMessage, + referenceLinkingErrorMessage, personalAccessTokens, emailAddressLimit: Settings.emailAddressLimit, isManagedAccount: !!req.managedBy, diff --git a/services/web/app/views/user/settings.pug b/services/web/app/views/user/settings.pug index 534ba2c992..78d653fa9b 100644 --- a/services/web/app/views/user/settings.pug +++ b/services/web/app/views/user/settings.pug @@ -43,6 +43,10 @@ block append meta meta(name='ol-github' data-type='json' content=github) meta(name='ol-projectSyncSuccessMessage' content=projectSyncSuccessMessage) meta(name='ol-projectSyncErrorMessage' content=projectSyncErrorMessage) + meta( + name='ol-referenceLinkingErrorMessage' + content=referenceLinkingErrorMessage + ) meta( name='ol-personalAccessTokens' data-type='json' diff --git a/services/web/frontend/js/features/settings/components/linking-section.tsx b/services/web/frontend/js/features/settings/components/linking-section.tsx index 5e4e9f64a4..af55b8a7d7 100644 --- a/services/web/frontend/js/features/settings/components/linking-section.tsx +++ b/services/web/frontend/js/features/settings/components/linking-section.tsx @@ -25,6 +25,9 @@ function LinkingSection() { const cannotUseAi = getMeta('ol-cannot-use-ai') const projectSyncSuccessMessage = getMeta('ol-projectSyncSuccessMessage') const projectSyncErrorMessage = getMeta('ol-projectSyncErrorMessage') + const referenceLinkingErrorMessage = getMeta( + 'ol-referenceLinkingErrorMessage' + ) // hide linking widgets in CI const integrationLinkingWidgets = getMeta('ol-hideLinkingWidgets') @@ -133,6 +136,14 @@ function LinkingSection() { {hasReferencesLinkingSection ? ( <>

{t('reference_managers')}

+ {referenceLinkingErrorMessage ? ( +
+ +
+ ) : null}
{referenceLinkingWidgets.map( ({ import: importObject }, widgetIndex) => ( diff --git a/services/web/frontend/js/utils/meta.ts b/services/web/frontend/js/utils/meta.ts index 76998654e3..89c9b8b301 100644 --- a/services/web/frontend/js/utils/meta.ts +++ b/services/web/frontend/js/utils/meta.ts @@ -289,6 +289,7 @@ export interface Meta { | 'zotero_multiple_collections' | null } + 'ol-referenceLinkingErrorMessage': string 'ol-ro-mirror-on-client-no-local-storage': boolean 'ol-samlError': SAMLError | undefined 'ol-script-log': ScriptLogType diff --git a/services/web/locales/en.json b/services/web/locales/en.json index 8363d202ca..383dc21f79 100644 --- a/services/web/locales/en.json +++ b/services/web/locales/en.json @@ -2130,6 +2130,8 @@ "reference_count_plural": "__count__ references", "reference_error_relink_hint": "If this error persists, try re-linking your account here:", "reference_format": "Reference format", + "reference_manager_link_denied": "We couldn’t link your __provider__ account. To finish linking, allow __appName__ access when you’re asked.", + "reference_manager_link_error": "Sorry, we weren’t able to link your __provider__ account. Please try again in a few moments.", "reference_manager_linked": "Reference manager linked", "reference_manager_lowercase": "reference manager", "reference_manager_searched_groups": "__provider__ search groups",