Skip to content
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

merge: dev to qa #746

Merged
merged 43 commits into from
Aug 28, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
e3eb7b4
[Deno Deploy] Update .github/workflows/deploy.yml
deno-deploy[bot] Jun 7, 2024
95aeaa6
feat: support no ledger (#689)
bhavanakarwade Jun 7, 2024
a41d5aa
fixed CSS and avatar issues (#696)
pranalidhanavade Jun 9, 2024
eb793d8
feat: support no ledger (#697)
bhavanakarwade Jun 10, 2024
252b504
refactor: responsiveness of the component (#699)
bhavanakarwade Jun 14, 2024
c318707
feat: manage keycloak client
bhavanakarwade Jun 17, 2024
d40b608
refactor: updated env sample file
bhavanakarwade Jun 17, 2024
2d8875c
fix: error messages issue from create organization and create ecosyst…
pranalidhanavade Jun 17, 2024
03147ee
Merge pull request #702 from credebl/feat/manage-keycloak-client
shitrerohit Jun 18, 2024
40c3b7e
fix: css issues (#704)
bhavanakarwade Jun 19, 2024
7300fc6
feat: add passkey warning message for unsupported devices (#706)
pranalidhanavade Jun 19, 2024
5698893
Feat/passkey warning messages (#707)
pranalidhanavade Jun 19, 2024
0dc76d1
feat: dedicated agent workflow (#693)
pranalidhanavade Jun 20, 2024
7d5a77d
fix: formik validations for dedicated agent workflow (#708)
pranalidhanavade Jun 21, 2024
a297a2a
fix: create did button restrictions (#710)
bhavanakarwade Jun 21, 2024
7616a5f
feat: changed schema payload (#711)
tipusinghaw Jun 23, 2024
a97bdfd
feat/delete wallet and organization (#712)
pranalidhanavade Jun 25, 2024
d3fce1a
fix: custom-avatar-css-issues (#714)
pranalidhanavade Jun 26, 2024
42bd813
feat: delete wallet and organization (#715)
pranalidhanavade Jun 26, 2024
c888199
refactor: added query parameter in get all schemas API (#713)
bhavanakarwade Jun 26, 2024
1f4d3bc
refactor: request schema payload (#717)
bhavanakarwade Jul 8, 2024
d0c5625
fix:client id and secret encryption (#724)
pranalidhanavade Jul 25, 2024
759305e
Client id client secret encryption (#726)
pranalidhanavade Jul 25, 2024
744a19c
feat: create schema flow for w3c (#718)
pranalidhanavade Jul 30, 2024
f24a574
wip: verification with email (#722)
bhavanakarwade Jul 30, 2024
62b2d7e
feat: Implement w3c issuance with connection,email and bulk. (#721)
pranalidhanavade Jul 31, 2024
2603675
feat: W3C verifcation with connections. (#729)
pranalidhanavade Aug 13, 2024
874fcd0
fiz: removed unwanted code from astro components
pranalidhanavade Aug 16, 2024
d43a09a
feat: oob verification using email (#732)
bhavanakarwade Aug 22, 2024
d74f17f
fix: W3C issuance schemaName not displayed correctly on ADEYA. (#733)
pranalidhanavade Aug 23, 2024
801cade
refactor: predicates number vaidations (#734)
bhavanakarwade Aug 23, 2024
08ccf3e
Fix verification dashboard changes (#735)
pranalidhanavade Aug 23, 2024
579d269
fix: email input box issue (#736)
bhavanakarwade Aug 23, 2024
a22ec34
fix: create wallet UI for shared and dedicated agents. (#738)
pranalidhanavade Aug 26, 2024
48b580b
fix: routes changes for verifcation with email flow (#739)
bhavanakarwade Aug 26, 2024
b51c2e4
fix: OOB issuance with other organizations schema (#741)
pranalidhanavade Aug 28, 2024
ec80371
Merge branch 'qa' of https://github.com/credebl/studio into merge/dev…
pranalidhanavade Aug 28, 2024
a27d698
fix: radio button state issue on shared and dedicated wallet creation…
pranalidhanavade Aug 28, 2024
cdf1d02
Merge branch 'develop' of https://github.com/credebl/studio into merg…
pranalidhanavade Aug 28, 2024
58a7fec
fix: bugs (#744)
bhavanakarwade Aug 28, 2024
644bb63
fix: bugs (#745)
bhavanakarwade Aug 28, 2024
18fbf67
Merge branch 'develop' of https://github.com/credebl/studio into merg…
pranalidhanavade Aug 28, 2024
bac619d
Merge branch 'qa' of https://github.com/credebl/studio into merge/dev…
pranalidhanavade Aug 28, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/components/Issuance/EmailIssuance.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,8 @@ const EmailIssuance = () => {
transformedData.credentialOffer.push(transformedEntry);
});
transformedData.credentialDefinitionId = credDefId;
transformedData.isReuseConnection = true;


} else if (schemaType=== SchemaTypes.schema_W3C) {

existingData.formData.forEach((entry: { email: string; credentialData: IEmailCredentialData; attributes:IIssueAttributes[] }) => {
Expand Down Expand Up @@ -253,6 +253,7 @@ const EmailIssuance = () => {
});

transformedData.protocolVersion = "v2";
transformedData.isReuseConnection = true;
transformedData.credentialType = CredentialType.JSONLD;
}

Expand Down
1 change: 1 addition & 0 deletions src/components/Issuance/interface.ts
Original file line number Diff line number Diff line change
Expand Up @@ -187,5 +187,6 @@ export interface ICredentialOffer {
credentialOffer: ICredentialOffer[];
credentialDefinitionId?: string;
protocolVersion?: string;
isReuseConnection?: boolean;
credentialType?: string;
}
104 changes: 80 additions & 24 deletions src/components/Verification/AttributesListData.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,45 +2,101 @@ import { Card } from 'flowbite-react';
import CopyDid from '../../commonComponents/CopyDid';

interface AttributesListProps {
attributeDataList: { [key: string]: any }[]
attributeDataList: { [key: string]: any }[];
}

const groupAndMergeAttributes = (data: { [key: string]: any }[], key: string): { [key: string]: any }[] => {
const grouped = data.reduce((result, item) => {
const groupKey = item[key] || item['schemaId'];
if (!result[groupKey]) {
result[groupKey] = {};
}
// Merge attributes into a single object
result[groupKey] = { ...result[groupKey], ...item };
return result;
}, {} as { [key: string]: any });

// Convert the grouped object back to an array
return Object.values(grouped);
};

const AttributesListData = ({ attributeDataList }: AttributesListProps): JSX.Element => {

return (
<>
{attributeDataList?.map((item, index) => (
<Card key={index} className="mb-4">
<div className="flex flex-col justify-start gap-2 p-4">
<div className="flex justify-start text-xl font-semibold text-gray-900 dark:text-white mb-2">
{`Credential ${index + 1}`}
</div>
const mergedData = groupAndMergeAttributes(attributeDataList, 'credDefId');

return (
<>
{mergedData?.map((item, index) => (
<Card key={index} className="mb-4">
<div className="flex flex-col justify-start gap-2 p-4">
<div className="flex justify-start text-xl font-semibold text-gray-900 dark:text-white mb-2">
{`Credential ${index + 1}`}
</div>

{Object.entries(item).map(([key, value], idx) => (
<div key={idx} className="flex w-full text-lg items-center">
<div className="w-3/12 font-semibold text-primary-700 dark:bg-gray-800 m-1 p-1 flex justify-start items-center text-start">
{key}
<div className="flex h-full flex-col justify-center gap-0 sm:p-0 mb-4">
<div className="flex border-b">
<div className="w-5/12 font-semibold flex truncate md:pl-1 sm:mr-8 md:mr-0 text-primary-700 dark:bg-gray-800 text-lg">
Attributes
</div>
<div className="w-1/12 font-semibold flex justify-start truncate md:pl-1 sm:mr-8 md:mr-0 text-primary-700 dark:bg-gray-800 text-xl"></div>
<div className="w-6/12 font-semibold flex truncate sm:pl-4 text-primary-700 dark:bg-gray-800 text-lg">
{' '}
Values
</div>
<div className="flex items-center p-1 m-1">
:
</div>

{Object.entries(item)
.filter(([key]) => key !== 'credDefId' && key !== 'schemaId')
.map(([key, value], idx) => (
<div key={idx} className="flex w-full text-lg items-center">
<div className="w-3/12 font-semibold text-primary-700 dark:bg-gray-800 m-1 p-1 flex justify-start items-center text-start">

{key}
</div>
<div className="w-1/12 m-1 p-1 flex items-center text-gray-700 dark:text-white text-lg">
:
</div>
<div className="w-9/12 m-1 text-start text-gray-600 dark:text-white items-center cursor-pointer overflow-auto">
{value}
</div>
</div>
))}
</div>

<div className="">
<div className="flex w-full text-lg items-center">
<div className="w-3/12 font-semibold text-primary-700 dark:bg-gray-800 m-1 p-1 flex justify-start items-center text-start">
schemaId
</div>
<div className="flex items-center p-1 m-1">:</div>
<div className="w-9/12 m-1 text-start text-gray-600 dark:text-white items-center cursor-pointer overflow-auto">
{key === 'schemaId' || key === 'credDefId' ? (
<div className="flex items-center">
<CopyDid value={item.schemaId} className="truncate font-courier mt-2" />
</div>
</div>
</div>
</div>

{item.credDefId && (
<div className="mb-4">
<div className="flex w-full text-lg items-center">
<div className="w-3/12 font-semibold text-primary-700 dark:bg-gray-800 m-1 p-1 flex justify-start items-center text-start">
credDefId
</div>
<div className="flex items-center p-1 m-1">:</div>
<div className="w-9/12 m-1 text-start text-gray-600 dark:text-white items-center cursor-pointer overflow-auto">
<div className="flex items-center">
<CopyDid value={value} className="truncate font-courier mt-2" />
<CopyDid value={item.credDefId} className="truncate font-courier mt-2" />
</div>
) : (
<span className="truncate font-courier">{value}</span>
)}
</div>
</div>
</div>
))}
)}
</div>
</Card>
))}
</>
);
}
</>
);
};

export default AttributesListData;
47 changes: 23 additions & 24 deletions src/components/Verification/EmailCredDefSelection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -110,43 +110,42 @@ const EmailCredDefSelection = () => {
};

const selectConnection = async (credDefId: string, checked: boolean) => {
if (credDefId) {
const getRawCredDefs = await getFromLocalStorage(storageKeys.SCHEMA_CRED_DEFS);
const parsedRawCredDefs = JSON.parse(getRawCredDefs);

const selectedCredDef = parsedRawCredDefs.find((credDef: CredDefData) => credDef.credentialDefinitionId === credDefId);

if (selectedCredDef) {
setSelectedCredDefs((prevSelected) => {
if (!credDefId) return;

const getRawCredDefs = await getFromLocalStorage(storageKeys.SCHEMA_CRED_DEFS);
const parsedRawCredDefs = JSON.parse(getRawCredDefs);

const selectedCredDef = parsedRawCredDefs.find(
(credDef: CredDefData) => credDef.credentialDefinitionId === credDefId
);

if (selectedCredDef) {
setSelectedCredDefs((prevSelected) => {
if (checked) {
const isAlreadySelected = prevSelected.some(
(credDef) => credDef.credentialDefinitionId === selectedCredDef.credentialDefinitionId
);

if (!isAlreadySelected) {
const newSelected = [...prevSelected, selectedCredDef];

setToLocalStorage(storageKeys.CRED_DEF_DATA, JSON.stringify(newSelected));

return newSelected;
}
return prevSelected;
});
}
}
else if (!checked) {
setSelectedCredDefs((prevSelected) => {
const newSelected = prevSelected.filter(
(credDef) => credDef.credentialDefinitionId !== credDefId
);

setToLocalStorage(storageKeys.CRED_DEF_DATA, JSON.stringify(newSelected));

return newSelected;
} else {
const newSelected = prevSelected.filter(
(credDef) => credDef.credentialDefinitionId !== selectedCredDef.credentialDefinitionId
);
setToLocalStorage(storageKeys.CRED_DEF_DATA, JSON.stringify(newSelected));
return newSelected;
}

return prevSelected;
});
}
};



return (
<div className="px-4 pt-2">
<div className="mb-4 col-span-full xl:mb-2">
Expand Down
30 changes: 15 additions & 15 deletions src/components/Verification/ProofRequestPopup.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -87,21 +87,7 @@ const ProofRequest = (props: IProofRrquestDetails) => {
{' '}
Verification Details
</p>
{props.verifyLoading ? (
<div className="flex items-center justify-center m-4">
<CustomSpinner />
</div>
) : (
<div className=" text-gray-500 dark:text-gray-300 w-full">
<div className="mt-1 ">

<AttributesListData attributeDataList={props?.userData} />

</div>
</div>
)}
</div>
{succesMsg && (
{succesMsg && (
<div
className="p-4 mb-4 text-sm text-green-800 rounded-lg bg-green-100 border-green-500 dark:bg-green-200 dark:text-green-800"
role="alert"
Expand All @@ -118,6 +104,20 @@ const ProofRequest = (props: IProofRrquestDetails) => {
</div>
)}

{props.verifyLoading ? (
<div className="flex items-center justify-center m-4">
<CustomSpinner />
</div>
) : (
<div className=" text-gray-500 dark:text-gray-300 w-full">
<div className="mt-1 ">

<AttributesListData attributeDataList={props?.userData} />

</div>
</div>
)}
</div>
<div className="flex justify-center items-center space-x-4">
<button
onClick={() => {
Expand Down
Loading