-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
features: Permits/WorkPermit, Employment/IncomeTax, Employment/WorkContract #78
features: Permits/WorkPermit, Employment/IncomeTax, Employment/WorkContract #78
Conversation
…t differently if side nav items provided for page. MVP: use new page side nav implementation in info pages. Features: start new layout for profile with some placeholder pages
…vel (ServiceNavigation) + interfaces for new data products + mock implementation for each new data product
…e readable format
…implement react-query hooks for new dataproducts for fetching
…mentation for workPermit (source not available yet)
…en as param, add manually to headers in api-service level
import CustomHeading from '@shared/components/ui/custom-heading'; | ||
import CustomLink from '@shared/components/ui/custom-link'; | ||
|
||
const SERVICE = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tämä consent-sentry aika kätevä! Nämä palvelujen nimet/käännökset voisi ehkä määritellä siten että tulisi propsien mukanan tähän. Eli sen sijaan että tässä komponentissa määritellään mitä sorsia on mahdollista luvittaa, tulisi se tieto sieltä jostain keskitetystä kohtaa missä muutkin konsenttimäärittelyt, eli läheltä missä on toi enum ConsentDataSource esim.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yksi tapa olisi muuttaa ConsentDataSource enumista objektiksi jossa mukana tarvittavat tunnisteet ja sit nimet, mutta se vaatisi ehkä vähän logiikan muuntelua siellä missä tarvitaan enumin viitteitä.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Toki tavallaan kyl se käy järkeen että tulostettava teksti on lähellä templatea, mutta ehkä noi nimet ovat vähän sellaisia propertyjä kuitenni.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tästä ajatuksena kokeilin ihan huvikseen vähän kikkailla type-gymnastiikan kautta jotain:
export enum ConsentDataSource {
WORK_PERMIT = 'dpp://virtual_finland:development@testbed.fi/Permits/WorkPermit_v0.1',
WORK_CONTRACT = '',
INCOME_TAX = 'dpp://vero_demo@testbed.fi/Employment/IncomeTax_v0.2',
}
export enum ConsentDataService {
'dpp://virtual_finland:development@testbed.fi/Permits/WorkPermit_v0.1' = 'Finnish Immigration Service (Migri)',
'' = '',
'dpp://vero_demo@testbed.fi/Employment/IncomeTax_v0.2' = 'Finnish Tax Administration (Vero)',
}
type _ensure_keyof_ConsentDataService_equals_ConsentDataSource =
(typeof ConsentDataService)[ConsentDataSource];
missä _ensure_keyof_ConsentDataService_equals_ConsentDataSource
-tyypin tarkoitus on pelkästään heittää compile-erroria, jos avaimet ei mätsää - TS tosin varoittelee, että tyyppiä ei käytetä missään ja se olisi syytä poistaa (vaikka _ prefix nimessä, koitin myös eslintin kautta säätää et varo häviäisi mutta en saanut pois, enkä .tsconfiggiin halunnut koskea).
propsina voisi antaa silloin: ConsentDataService[ConsentDataSource.WORK_PERMIT]
Ihan vaan sellaisena sivujuoneena, että enpä ole aikaisemmin hoksannut että tällä tavalla vois tehdä kanssa type-guardia koodiin, jos halutaan vaikka että enumien value/aivaimet mätsää. 🧐 Mutta ehkä karkaa pienen asian takia jo vähän käsistä, etenkin kun tuon ConsentDataSource
enumi itessään vähän heikohko, jos ajattelis että tuo sourcen versio olisi jotenkin dynaaminen ja vaihdettavissa. Tuon serviisin nimen voisi yhtä hyvin tässä kohtaa antaa vain tyhmänä propsina komponentille, joka on yhtä hyvä/huono vs. nykyinen. Varmaan tuo objekti-lähestymistapa voisi olla hyvä ratkaisu isommassa toteutuksessa. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TS tosin varoittelee, että tyyppiä ei käytetä missään ja se olisi syytä poistaa
Hm niin jos tekisi tuolla tavoin jännän tyyppivartijan niin siltä ei kai voi varoituksia disabloida jos haluaa että vartiointi toimii. Kun jännällä osastolla liikutaan niin menisihän se että ihan exporttaa tyypin, silloinhan ts ei enää tiedä käytetäänkö tyyppiä jossain vai ei. Enumi taitaa olla sillain js:n primitiivityypiiä että ei monimutkaiset rakennelmat oikein typescriptimaailmaan sujahda nätisti, sit taas jos siitä tekisi const-objektin jolla vastaava "api" eli voi käytellä kuin olisi enumi niin se pitäisi kuitenkin erikseen tyypittää ts-magicka/gymastica -syntaksilla vähän hankalasti. Ja siinäpä mennään jo aika sivujuonteille tosiaan :)
This comment has been minimized.
This comment has been minimized.
…-ja-kokeillaan-miten-hyvaksytty-kausityolupa-naytettaisiin-mvp-dev-ymparistossa
…alert styling + remove grant permission part from profile entry, change the texts a little bit
This comment has been minimized.
This comment has been minimized.
… grid styling tweak in DetailsExpander
This comment has been minimized.
This comment has been minimized.
🍹 The Update for virtualfinland/virtual-finland/staging was successful. Resource Changes Name Type Operation
+ _next/static/chunks/webpack-dd8799696f8e29a6.js aws:s3/bucketObject:BucketObject create
- _next/static/chunks/pages/company/search-193a9836fce362a3.js aws:s3/bucketObject:BucketObject delete
~ index.html aws:s3/bucketObject:BucketObject update
~ profile/employment/income-tax.html aws:s3/bucketObject:BucketObject update
~ company/search.html aws:s3/bucketObject:BucketObject update
~ 404.html aws:s3/bucketObject:BucketObject update
+ _next/static/cSJiGi8v988bBZ_HC4Tc1/_ssgManifest.js aws:s3/bucketObject:BucketObject create
~ profile/employment/work-contracts.html aws:s3/bucketObject:BucketObject update
+ _next/static/chunks/pages/profile-590190f3a469e6ba.js aws:s3/bucketObject:BucketObject create
~ company/edit/[nationalIdentifier]/signatory-rights.html aws:s3/bucketObject:BucketObject update
~ profile/personal-profile.html aws:s3/bucketObject:BucketObject update
~ company/establishment/signatory-rights.html aws:s3/bucketObject:BucketObject update
+ _next/static/cSJiGi8v988bBZ_HC4Tc1/_buildManifest.js aws:s3/bucketObject:BucketObject create
+ _next/static/chunks/pages/company/search-b825716db20423c6.js aws:s3/bucketObject:BucketObject create
- _next/static/css/f46bfe87cd796d16.css aws:s3/bucketObject:BucketObject delete
+ _next/static/chunks/7336-fc26a5b8ecc8ebc3.js aws:s3/bucketObject:BucketObject create
- _next/static/EDJf5VvDtjda93n5pYdr1/_ssgManifest.js aws:s3/bucketObject:BucketObject delete
~ company.html aws:s3/bucketObject:BucketObject update
+ _next/static/css/8bdd71bcdd1eca63.css aws:s3/bucketObject:BucketObject create
- _next/static/EDJf5VvDtjda93n5pYdr1/_buildManifest.js aws:s3/bucketObject:BucketObject delete
~ company/establishment/beneficial-owners.html aws:s3/bucketObject:BucketObject update
~ profile/permits.html aws:s3/bucketObject:BucketObject update
- _next/static/chunks/pages/profile-546e83648a20bb49.js aws:s3/bucketObject:BucketObject delete
~ company/establishment.html aws:s3/bucketObject:BucketObject update
~ profile/employment.html aws:s3/bucketObject:BucketObject update
~ auth.html aws:s3/bucketObject:BucketObject update
~ company/establishment/details.html aws:s3/bucketObject:BucketObject update
~ profile/working-profile.html aws:s3/bucketObject:BucketObject update
- _next/static/chunks/pages/profile/employment/work-contracts-0001b215d5d3c30f.js aws:s3/bucketObject:BucketObject delete
+ _next/static/chunks/pages/profile/employment/work-contracts-13ba7fa99600381f.js aws:s3/bucketObject:BucketObject create
~ company/edit.html aws:s3/bucketObject:BucketObject update
~ profile.html aws:s3/bucketObject:BucketObject update
~ company/edit/[nationalIdentifier]/beneficial-owners.html aws:s3/bucketObject:BucketObject update
- _next/static/chunks/webpack-497978463cbf13c8.js aws:s3/bucketObject:BucketObject delete
- _next/static/chunks/7336-0f55eb1136a494c5.js aws:s3/bucketObject:BucketObject delete
~ company/edit/[nationalIdentifier].html aws:s3/bucketObject:BucketObject update
~ company/edit/[nationalIdentifier]/details.html aws:s3/bucketObject:BucketObject update
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tämä taisi olla valmista syötäväksi ja jo käytössä staging-tasolla!
Kylläpä vain! |
Uudet kausityöntekijäkokelin datatuotteet ja leiskausmuutokset.
UI:
Page
komponenttia siten, että se voi vastaanottaa propseinasideNavItems
- jos määriteltynä, renderöi sivuleiskaukseen sivunavigaationmulti
(suomifi-ui-components SideNavigation, max. 3 level deep) taisingle
(suomifi-ui-components ServiceNavigation, 1-level deep)Profile
sivu ja sen alasivut käyttämään sivunavigaatiota./profile/permits
,/profile/employment/work-contracts
,/profile/employment/income-tax
af-mvp
puolelle pelkästään luotu sivunavigaatio poistettu (käytettiin info sivulla missä TOS yms.), käytetään nyt jaettuaPage
komponentin sivunavigaatiota. Näyttää samalta.Consent:
apps/af-shared/src/lib/api/services/consent.ts
) tuotu a-to-f-demosovelluksesta pienin muutoksin:ConsentSituation[]
listan, ei ainoastaan yhtä consenttia. Mahdollistetaan useamman hakeminen kerralla.useDataSourceConsent
hookki, jota käytetään datatuotteen consentin tarkistamiseen, palautteleeConsentSituation
tilan ylläolevasta serviisistä (haetaan listana, mutta hookki palauttelee yhden kappaleen).consentGranted
, tämä huukki/query refetchaa statuksen aina kun ikkuna focusoituu - tän avulla jos käydään revoukkaamassa consent portaalissa ja tullaan takas, ei tarvita manuaalista page refreshiauseMultipleDataSourceConsents
, sama kun edellä, mutta voidaan hakea useat consentit kerralla. Jos vaikka halutaan näyttää consenttien tila jossain koostetusti, ei välttis käyttöä tälle.apps/af-features/src/pages/profile/components/consent-sentry.tsx
, "UI-suoja" jolla esitetään käyttäjälle, että consentti täytyy antaa, ennen kun tietoja voidaan hakea/näyttää.Uudet datatuotteet (WorkPermits, WorkContracts, IncomeTax):
useDataSourceConsent
) ja consentti ok eliConsentSituation.consentStatus === 'consentGranted'
Muuta:
useClearQueryParams
-hookki, käytetään juuressa eliapp.page.tsx
- tarkistelee löytyykö queryParamseistaclear = true
, ja jos löytyy, kliinaa kaikki paramsit. Tämä liittyi siihen consent-portaalista takaisin ohjaamiseen (apps/af-shared/src/lib/api/services/consent.ts - directToConsentService
).permits.page.test.tsx
income-tax.page.test.tsx
(wip)work-contracts.page.test.tsx
(wip)packages/af-shared/src/lib/hooks/utils.ts
, 3d0685b, 578afd8, 9a6e058)