From f9ff55f4025b066174ff49008b7a87be5a970698 Mon Sep 17 00:00:00 2001 From: Andrea Piai Date: Tue, 22 Oct 2024 12:48:08 +0200 Subject: [PATCH 1/4] codegen to latest spec --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 517a4d82627..40f3eda3f1d 100644 --- a/package.json +++ b/package.json @@ -241,7 +241,7 @@ "@babel/preset-typescript": "^7.23.3", "@babel/runtime": "^7.20.0", "@jambit/eslint-plugin-typed-redux-saga": "^0.4.0", - "@pagopa/openapi-codegen-ts": "^13.2.0", + "@pagopa/openapi-codegen-ts": "^14.0.0", "@react-native-community/eslint-config": "^3.2.0", "@react-native/eslint-config": "^0.72.2", "@react-native/metro-config": "^0.72.12", diff --git a/yarn.lock b/yarn.lock index 49135dac5e0..f13dce2e3bb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2126,10 +2126,10 @@ resolved "https://registry.yarnpkg.com/@pagopa/io-react-native-zendesk/-/io-react-native-zendesk-0.3.29.tgz#ada8dab8a9ef15e126275baace2084491148bac8" integrity sha512-CskFyF0Sz+EC/ZyJNNMFEX/Avjyn6cKRwE2K+XSTGWDKYLImPraA8YozTljclCdv3DOxk3ZklUsieMG25PfnSw== -"@pagopa/openapi-codegen-ts@^13.2.0": - version "13.2.0" - resolved "https://registry.yarnpkg.com/@pagopa/openapi-codegen-ts/-/openapi-codegen-ts-13.2.0.tgz#ed55405c979b582dc11a8a9b900adc45b6c7379d" - integrity sha512-EKo4CJReQPT8z3a6P35p3eW86VIy9gcLOVrxIj8VR5bWRhVDfFjwAmpth9pIGQ0QXPmGuylbJbWQmWHrbGLnaA== +"@pagopa/openapi-codegen-ts@^14.0.0": + version "14.0.0" + resolved "https://registry.yarnpkg.com/@pagopa/openapi-codegen-ts/-/openapi-codegen-ts-14.0.0.tgz#06ed67ec4259323820005d8e05ceb4ad8b2acb53" + integrity sha512-xnyC3I5gBuR3zeaXVyYP3Tcl2CEpB8NP9vJmEqWUY4tdAfj4HeREQgZ+gKinevZ+4CIlQljPo60IclB8rXHiag== dependencies: "@pagopa/ts-commons" "^10.15.0" fs-extra "^6.0.0" From ca302db4eb3c03b9051ac0ca73c24c7ba47ea3e5 Mon Sep 17 00:00:00 2001 From: Andrea Piai Date: Wed, 23 Oct 2024 16:36:10 +0200 Subject: [PATCH 2/4] WiP --- package.json | 6 ++-- ts/features/fims/history/api/client.ts | 2 +- .../components/FimsHistoryListItem.tsx | 2 +- .../components/FimsHistoryNonEmptyContent.tsx | 2 +- .../fims/history/store/actions/index.ts | 2 +- .../fims/history/store/reducer/index.ts | 2 +- .../singleSignOn/components/FimsClaims.tsx | 2 +- .../components/FimsSuccessBody.tsx | 4 +-- .../saga/handleFimsGetConsentsList.ts | 7 ++--- .../fims/singleSignOn/store/actions/index.ts | 4 +-- .../fims/singleSignOn/store/reducers/index.ts | 4 +-- .../singleSignOn/store/selectors/index.ts | 4 +-- ts/features/fims/singleSignOn/types/index.ts | 30 ------------------- 13 files changed, 21 insertions(+), 50 deletions(-) delete mode 100644 ts/features/fims/singleSignOn/types/index.ts diff --git a/package.json b/package.json index 40f3eda3f1d..b3683b4a431 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,6 @@ "io_consumed_pn_specs": "https://raw.githubusercontent.com/pagopa/io-backend/v14.3.0-RELEASE/openapi/consumed/api-piattaforma-notifiche.yaml", "api_cdc": "assets/CdcSwagger.yml", "pagopa_api": "assets/paymentManager/spec.json", - "fims_swagger": "assets/FimsSwager.yml", "pagopa_api_walletv2": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.40/bonus/specs/bpd/pm/walletv2.json", "pagopa_cobadge_configuration": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.40/pagopa/cobadge/abi_definitions.yml", "pagopa_privative_configuration": "https://raw.githubusercontent.com/pagopa/io-services-metadata/1.0.40/pagopa/privative/definitions.yml", @@ -27,6 +26,8 @@ "pagopa_api_biz_events": "https://raw.githubusercontent.com/pagopa/pagopa-biz-events-service/0.1.57/openapi/openapi_io_patch_lap.json", "pagopa_api_platform": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/shared-app/api/session-wallet/v1/_openapi.json.tpl", "trial_system": "https://raw.githubusercontent.com/pagopa/io-backend/v14.3.0-RELEASE/api_trial_system.yaml", + "fims_sso": "https://raw.githubusercontent.com/pagopa/io-fims/refs/heads/main/apps/op-app/openapi.yaml", + "fims_history": "assets/FimsSwager.yml", "private": true, "scripts": { "start": "react-native start", @@ -90,7 +91,8 @@ "generate:pagopa-ecommerce-api": "rimraf definitions/pagopa/ecommerce && mkdir -p definitions/pagopa/ecommerce && gen-api-models --api-spec $npm_package_pagopa_api_ecommerce --out-dir ./definitions/pagopa/ecommerce --no-strict --response-decoders --request-types --client", "generate:pagopa-biz-events-api": "rimraf definitions/pagopa/biz-events && mkdir -p definitions/pagopa/biz-events && gen-api-models --api-spec $npm_package_pagopa_api_biz_events --out-dir ./definitions/pagopa/biz-events --no-strict --response-decoders --request-types --client", "generate:pagopa-platform-api": "rimraf definitions/pagopa/platform && mkdir -p definitions/pagopa/platform && gen-api-models --api-spec $npm_package_pagopa_api_platform --out-dir ./definitions/pagopa/platform --no-strict --response-decoders --request-types --client", - "generate:fims": "rimraf definitions/fims && mkdir -p definitions/fims && gen-api-models --api-spec $npm_package_fims_swagger --out-dir ./definitions/fims --no-strict --response-decoders --request-types --client", + "generate:fims_sso": "rimraf definitions/fims_sso && mkdir -p definitions/fims_sso && gen-api-models --api-spec $npm_package_fims_sso --out-dir ./definitions/fims_sso --no-strict --request-types --response-decoders --client", + "generate:fims_history": "rimraf definitions/fims_history && mkdir -p definitions/fims_history && gen-api-models --api-spec $npm_package_fims_history --out-dir ./definitions/fims_history --no-strict --response-decoders --request-types --client", "generate:payments": "npm-run-all generate:pagopa-walletv3-api generate:pagopa-ecommerce-api generate:pagopa-biz-events-api generate:pagopa-platform-api", "generate": "npm-run-all generate:*", "locales_unused": "ts-node --skip-project -O '{\"lib\":[\"es2015\"]}' scripts/unused-locales.ts", diff --git a/ts/features/fims/history/api/client.ts b/ts/features/fims/history/api/client.ts index 08f9fdc2f90..6ff81abe17a 100644 --- a/ts/features/fims/history/api/client.ts +++ b/ts/features/fims/history/api/client.ts @@ -1,4 +1,4 @@ -import { createClient } from "../../../../../definitions/fims/client"; +import { createClient } from "../../../../../definitions/fims_history/client"; import { defaultRetryingFetch } from "../../../../utils/fetch"; export const createFimsClient = (baseUrl: string) => diff --git a/ts/features/fims/history/components/FimsHistoryListItem.tsx b/ts/features/fims/history/components/FimsHistoryListItem.tsx index f0357a22c83..6901c42dbb2 100644 --- a/ts/features/fims/history/components/FimsHistoryListItem.tsx +++ b/ts/features/fims/history/components/FimsHistoryListItem.tsx @@ -13,7 +13,7 @@ import * as React from "react"; import { StyleSheet, View } from "react-native"; import { ServiceId } from "../../../../../definitions/backend/ServiceId"; import { ServicePublic } from "../../../../../definitions/backend/ServicePublic"; -import { Consent } from "../../../../../definitions/fims/Consent"; +import { Consent } from "../../../../../definitions/fims_history/Consent"; import I18n from "../../../../i18n"; import { dateToAccessibilityReadableFormat } from "../../../../utils/accessibility"; import { potFoldWithDefault } from "../../../../utils/pot"; diff --git a/ts/features/fims/history/components/FimsHistoryNonEmptyContent.tsx b/ts/features/fims/history/components/FimsHistoryNonEmptyContent.tsx index e51fa3aefed..a946f5930c6 100644 --- a/ts/features/fims/history/components/FimsHistoryNonEmptyContent.tsx +++ b/ts/features/fims/history/components/FimsHistoryNonEmptyContent.tsx @@ -1,7 +1,7 @@ import { Divider, IOStyles } from "@pagopa/io-app-design-system"; import { FlashList } from "@shopify/flash-list"; import * as React from "react"; -import { ConsentsResponseDTO } from "../../../../../definitions/fims/ConsentsResponseDTO"; +import { ConsentsResponseDTO } from "../../../../../definitions/fims_history/ConsentsResponseDTO"; import * as RemoteValue from "../../../../common/model/RemoteValue"; import { FooterActions } from "../../../../components/ui/FooterActions"; import { useFooterActionsMeasurements } from "../../../../hooks/useFooterActionsMeasurements"; diff --git a/ts/features/fims/history/store/actions/index.ts b/ts/features/fims/history/store/actions/index.ts index 86189135805..0abf53af36f 100644 --- a/ts/features/fims/history/store/actions/index.ts +++ b/ts/features/fims/history/store/actions/index.ts @@ -3,7 +3,7 @@ import { createAsyncAction, createStandardAction } from "typesafe-actions"; -import { ConsentsResponseDTO } from "../../../../../../definitions/fims/ConsentsResponseDTO"; +import { ConsentsResponseDTO } from "../../../../../../definitions/fims_history/ConsentsResponseDTO"; import { FimsExportSuccessStates } from "../reducer"; export type FimsHistoryGetPayloadType = { diff --git a/ts/features/fims/history/store/reducer/index.ts b/ts/features/fims/history/store/reducer/index.ts index 2b3632c213b..47760f0f359 100644 --- a/ts/features/fims/history/store/reducer/index.ts +++ b/ts/features/fims/history/store/reducer/index.ts @@ -1,6 +1,6 @@ import * as pot from "@pagopa/ts-commons/lib/pot"; import { getType } from "typesafe-actions"; -import { ConsentsResponseDTO } from "../../../../../../definitions/fims/ConsentsResponseDTO"; +import { ConsentsResponseDTO } from "../../../../../../definitions/fims_history/ConsentsResponseDTO"; import { remoteError, remoteLoading, diff --git a/ts/features/fims/singleSignOn/components/FimsClaims.tsx b/ts/features/fims/singleSignOn/components/FimsClaims.tsx index 64a35eba9f2..b7a66ffd4d6 100644 --- a/ts/features/fims/singleSignOn/components/FimsClaims.tsx +++ b/ts/features/fims/singleSignOn/components/FimsClaims.tsx @@ -1,7 +1,7 @@ import { Divider, H6, Icon, IOColors } from "@pagopa/io-app-design-system"; import * as React from "react"; import { View, StyleSheet } from "react-native"; -import { FimsClaimType } from "../types"; +import { FimsClaimType } from "../../../../../definitions/fims_sso/Consent"; export const FimsClaimsList = ({ claims }: ClaimsListProps) => ( diff --git a/ts/features/fims/singleSignOn/components/FimsSuccessBody.tsx b/ts/features/fims/singleSignOn/components/FimsSuccessBody.tsx index bbe2ada1e9b..75cfd1295c5 100644 --- a/ts/features/fims/singleSignOn/components/FimsSuccessBody.tsx +++ b/ts/features/fims/singleSignOn/components/FimsSuccessBody.tsx @@ -31,7 +31,7 @@ import { logoForService } from "../../../services/home/utils"; import { useAutoFetchingServiceByIdPot } from "../../common/utils/hooks"; import { fimsGetRedirectUrlAndOpenIABAction } from "../store/actions"; import { fimsErrorTagSelector } from "../store/selectors"; -import { ConsentData } from "../types"; +import { Consent } from "../../../../../definitions/fims_sso/Consent"; import { computeAndTrackDataShare, computeAndTrackDataShareAccepted @@ -40,7 +40,7 @@ import { FimsClaimsList } from "./FimsClaims"; import { FimsSSOFullScreenError } from "./FimsFullScreenErrors"; import { FimsPrivacyInfo } from "./FimsPrivacyInfo"; -type FimsSuccessBodyProps = { consents: ConsentData; onAbort: () => void }; +type FimsSuccessBodyProps = { consents: Consent; onAbort: () => void }; export const FimsFlowSuccessBody = ({ consents, diff --git a/ts/features/fims/singleSignOn/saga/handleFimsGetConsentsList.ts b/ts/features/fims/singleSignOn/saga/handleFimsGetConsentsList.ts index f290b095e32..4b425b5bb19 100644 --- a/ts/features/fims/singleSignOn/saga/handleFimsGetConsentsList.ts +++ b/ts/features/fims/singleSignOn/saga/handleFimsGetConsentsList.ts @@ -12,7 +12,7 @@ import { ActionType, isActionOf } from "typesafe-actions"; import { fimsTokenSelector } from "../../../../store/reducers/authentication"; import { fimsDomainSelector } from "../../../../store/reducers/backendStatus"; import { fimsGetConsentsListAction } from "../store/actions"; -import { ConsentData } from "../types"; +import { Consent } from "../../../../../definitions/fims_sso/Consent"; import { deallocateFimsAndRenewFastLoginSession } from "./handleFimsResourcesDeallocation"; import { computeAndTrackAuthenticationError, @@ -63,8 +63,6 @@ export function* handleFimsGetConsentsList( yield* call(setCookie, fimsProviderDomain, "/", "_io_fims_token", fimsToken); - // TODO:: use with future BE lang implementation -- const lang = getLocalePrimaryWithFallback(); - const fimsCTAUrlResponse = yield* call(nativeRequest, { verb: "get", followRedirects: false, @@ -105,6 +103,7 @@ export function* handleFimsGetConsentsList( return; } + // TODO:: use with future BE lang implementation -- const lang = getLocalePrimaryWithFallback(); const getConsentsResult = yield* call(nativeRequest, { verb: "get", followRedirects: true, @@ -156,7 +155,7 @@ const decodeSuccessfulConsentsResponse = ( pipe( getConsentsResult.body, E.tryCatchK(JSON.parse, identity), - E.map(ConsentData.decode), + E.map(Consent.decode), E.flatten, E.foldW( () => { diff --git a/ts/features/fims/singleSignOn/store/actions/index.ts b/ts/features/fims/singleSignOn/store/actions/index.ts index a2a1c5a2f12..3b241682ea8 100644 --- a/ts/features/fims/singleSignOn/store/actions/index.ts +++ b/ts/features/fims/singleSignOn/store/actions/index.ts @@ -3,7 +3,7 @@ import { createAsyncAction, createStandardAction } from "typesafe-actions"; -import { ConsentData } from "../../types"; +import { Consent } from "../../../../../../definitions/fims_sso/Consent"; import { FimsErrorStateType } from "../reducers"; import { ServiceId } from "../../../../../../definitions/backend/ServiceId"; @@ -21,7 +21,7 @@ export const fimsGetConsentsListAction = createAsyncAction( "FIMS_GET_CONSENTS_LIST_REQUEST", "FIMS_GET_CONSENTS_LIST_SUCCESS", "FIMS_GET_CONSENTS_LIST_FAILURE" -)(); +)(); // note: IAB==InAppBrowser export const fimsGetRedirectUrlAndOpenIABAction = createAsyncAction( diff --git a/ts/features/fims/singleSignOn/store/reducers/index.ts b/ts/features/fims/singleSignOn/store/reducers/index.ts index bd4e49892ba..53058b179cf 100644 --- a/ts/features/fims/singleSignOn/store/reducers/index.ts +++ b/ts/features/fims/singleSignOn/store/reducers/index.ts @@ -5,7 +5,7 @@ import { getType } from "typesafe-actions"; import { ServiceId } from "../../../../../../definitions/backend/ServiceId"; import { startApplicationInitialization } from "../../../../../store/actions/application"; import { Action } from "../../../../../store/actions/types"; -import { ConsentData } from "../../types"; +import { Consent } from "../../../../../../definitions/fims_sso/Consent"; import { shouldRestartFimsAuthAfterFastLoginFailure } from "../../utils"; import { fimsCancelOrAbortAction, @@ -29,7 +29,7 @@ export type FimsErrorStateType = { }; export type FimsSSOState = { - consentsData: pot.Pot; + consentsData: pot.Pot; ctaText?: string; currentFlowState: FimsFlowStateTags; relyingPartyServiceId?: ServiceId; diff --git a/ts/features/fims/singleSignOn/store/selectors/index.ts b/ts/features/fims/singleSignOn/store/selectors/index.ts index c262a0b6149..1d46f9f1ce7 100644 --- a/ts/features/fims/singleSignOn/store/selectors/index.ts +++ b/ts/features/fims/singleSignOn/store/selectors/index.ts @@ -5,7 +5,7 @@ import * as O from "fp-ts/lib/Option"; import { GlobalState } from "../../../../../store/reducers/types"; import { isStrictNone } from "../../../../../utils/pot"; import { getDomainFromUrl } from "../../saga/sagaUtils"; -import { ConsentData } from "../../types"; +import { Consent } from "../../../../../../definitions/fims_sso/Consent"; import { foldFimsFlowStateK } from "../../utils"; import { FIMS_SSO_ERROR_TAGS, FimsErrorStateType } from "../reducers"; import { isDebugModeEnabledSelector } from "../../../../../store/reducers/debug"; @@ -31,7 +31,7 @@ export const fimsPartialAbortUrl = (state: GlobalState) => pipe(state, fimsConsentsDataSelector, abortUrlFromConsentsPot, O.toUndefined); export const abortUrlFromConsentsPot = ( - consentsPot: pot.Pot + consentsPot: pot.Pot ) => pipe( consentsPot, diff --git a/ts/features/fims/singleSignOn/types/index.ts b/ts/features/fims/singleSignOn/types/index.ts deleted file mode 100644 index b88d548d85b..00000000000 --- a/ts/features/fims/singleSignOn/types/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -import * as t from "io-ts"; - -const singleLinkType = t.type({ - href: t.string -}); - -const linksType = t.type({ - abort: singleLinkType, - consent: singleLinkType -}); - -const claimType = t.partial({ - name: t.string, - display_name: t.string -}); - -const redirectionType = t.partial({ - display_name: t.string -}); - -export const ConsentData = t.type({ - _links: linksType, - service_id: t.string, - redirect: redirectionType, - type: t.string, - user_metadata: t.readonlyArray(claimType) -}); - -export type FimsClaimType = t.TypeOf; -export type ConsentData = t.TypeOf; From 47bb55167e68d235697930f319fb2b62008e8fd6 Mon Sep 17 00:00:00 2001 From: Andrea Piai Date: Thu, 24 Oct 2024 12:44:29 +0200 Subject: [PATCH 3/4] FIMS SSO specs to specific commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b3683b4a431..2822ad9e6e1 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "pagopa_api_biz_events": "https://raw.githubusercontent.com/pagopa/pagopa-biz-events-service/0.1.57/openapi/openapi_io_patch_lap.json", "pagopa_api_platform": "https://raw.githubusercontent.com/pagopa/pagopa-infra/v1.64.0/src/domains/shared-app/api/session-wallet/v1/_openapi.json.tpl", "trial_system": "https://raw.githubusercontent.com/pagopa/io-backend/v14.3.0-RELEASE/api_trial_system.yaml", - "fims_sso": "https://raw.githubusercontent.com/pagopa/io-fims/refs/heads/main/apps/op-app/openapi.yaml", + "fims_sso": "https://raw.githubusercontent.com/pagopa/io-fims/a93f1a1abf5230f103d9f489b139902b87288061/apps/op-app/openapi.yaml", "fims_history": "assets/FimsSwager.yml", "private": true, "scripts": { From d9ccff0a7700b57770bf3081d10d8e1906199a1f Mon Sep 17 00:00:00 2001 From: Andrea Piai Date: Thu, 24 Oct 2024 12:45:13 +0200 Subject: [PATCH 4/4] Proper type for FIMS Claim --- ts/features/fims/singleSignOn/components/FimsClaims.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ts/features/fims/singleSignOn/components/FimsClaims.tsx b/ts/features/fims/singleSignOn/components/FimsClaims.tsx index b7a66ffd4d6..9d49dc9d225 100644 --- a/ts/features/fims/singleSignOn/components/FimsClaims.tsx +++ b/ts/features/fims/singleSignOn/components/FimsClaims.tsx @@ -1,7 +1,7 @@ import { Divider, H6, Icon, IOColors } from "@pagopa/io-app-design-system"; import * as React from "react"; import { View, StyleSheet } from "react-native"; -import { FimsClaimType } from "../../../../../definitions/fims_sso/Consent"; +import { Claim } from "../../../../../definitions/fims_sso/Claim"; export const FimsClaimsList = ({ claims }: ClaimsListProps) => ( @@ -21,7 +21,7 @@ const ClaimListItem = ({ label }: ClaimsListItemProps) => ( ); type ClaimsListProps = { - claims: ReadonlyArray; + claims: ReadonlyArray; }; type ClaimsListItemProps = { label?: string };