Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "request-scan",
"version": "0.3.1",
"version": "0.3.2",
"private": true,
"scripts": {
"dev": "next dev",
Expand Down
122 changes: 87 additions & 35 deletions src/app/request/[id]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,10 @@ const getGateway = (request: Channel | null) => {
return "gnosis.gateway.request.network";
};

const ActorInfoSection = ({ actorInfo }: { actorInfo?: ActorInfo }) => {
const ActorInfoSection = ({
actorInfo,
isEncrypted,
}: { actorInfo?: ActorInfo; isEncrypted?: boolean }) => {
if (
!actorInfo ||
Object.keys(actorInfo).every(
Expand All @@ -62,6 +65,19 @@ const ActorInfoSection = ({ actorInfo }: { actorInfo?: ActorInfo }) => {
return "N/A";
}

if (isEncrypted) {
return (
<div className="grid gap-3 bg-muted/50 rounded-md p-2 overflow-x-scroll">
<ul className="grid gap-3">
<li className="flex items-center justify-start gap-2">
<span className="text-muted-foreground">Status:</span>
<span>Encrypted</span>
</li>
</ul>
</div>
);
}

return (
<div className="grid gap-3 bg-muted/50 rounded-md p-2 overflow-x-scroll">
<ul className="grid gap-3">
Expand Down Expand Up @@ -131,10 +147,10 @@ export default function RequestPage({ params: { id } }: RequestPageProps) {
const shortPaymentReference = request
? calculateShortPaymentReference(
id,
request?.transactions[0].dataObject.data.parameters.extensionsData[0]
.parameters.salt || "",
request?.transactions[0].dataObject.data.parameters.extensionsData[0]
.parameters.paymentAddress || "",
request?.transactions[0].dataObject?.data?.parameters?.extensionsData[0]
?.parameters.salt || "",
request?.transactions[0].dataObject?.data?.parameters?.extensionsData[0]
?.parameters.paymentAddress || "",
)
: "";

Expand Down Expand Up @@ -171,9 +187,17 @@ export default function RequestPage({ params: { id } }: RequestPageProps) {

const balance = getBalance(requestPayments);

const createParameters = getTransactionCreateParameters(firstTransaction);
const contentData = getContentDataFromCreateTransaction(createParameters);
const paymentData = getPaymentDataFromCreateTransaction(createParameters);
const createParametersFromFirstTransaction =
getTransactionCreateParameters(firstTransaction);
const createParametersFromLastTransaction =
getTransactionCreateParameters(lastTransaction);

const contentData = getContentDataFromCreateTransaction(
createParametersFromLastTransaction,
);
const paymentData = getPaymentDataFromCreateTransaction(
createParametersFromFirstTransaction,
);

const balanceCurrency =
paymentData?.acceptedTokens?.length > 0
Expand All @@ -184,7 +208,7 @@ export default function RequestPage({ params: { id } }: RequestPageProps) {
const sellerData = contentData?.sellerInfo;

const status =
balance >= BigInt(createParameters.expectedAmount)
balance >= BigInt(createParametersFromFirstTransaction?.expectedAmount || 0)
? "Paid"
: lastTransaction?.dataObject?.data?.name;

Expand All @@ -200,11 +224,11 @@ export default function RequestPage({ params: { id } }: RequestPageProps) {
try {
await exportPDF({
...contentData,
currency: createParameters.currency,
currencyInfo: createParameters.currency,
payer: createParameters.payer,
payee: createParameters.payee,
expectedAmount: createParameters.expectedAmount,
currency: createParametersFromFirstTransaction?.currency,
currencyInfo: createParametersFromFirstTransaction?.currency,
payer: createParametersFromFirstTransaction?.payer,
payee: createParametersFromFirstTransaction?.payee,
expectedAmount: createParametersFromFirstTransaction?.expectedAmount,
paymentData,
});
} catch (error) {
Expand Down Expand Up @@ -266,40 +290,54 @@ export default function RequestPage({ params: { id } }: RequestPageProps) {
<td className="text-muted-foreground">Payee:</td>
<td className="pl-16">
<div className="font-medium text-emerald-700 break-all">
<Link href={`/address/${createParameters.payee?.value}`}>
{createParameters.payee?.value}
<Link
href={`/address/${createParametersFromFirstTransaction?.payee?.value}`}
>
{createParametersFromFirstTransaction?.payee?.value}
</Link>
</div>
</td>
</tr>
<tr>
<td className="text-muted-foreground">Payee Details:</td>
<td className="pl-16">
<ActorInfoSection actorInfo={sellerData} />
<ActorInfoSection
actorInfo={sellerData}
isEncrypted={!!firstTransaction?.encryptedData}
/>
</td>
</tr>
<tr>
<td className="text-muted-foreground">Payer:</td>
<td className="pl-16">
<div className="font-medium text-emerald-700 break-all">
<Link href={`/address/${createParameters.payer?.value}`}>
{createParameters.payer?.value}
<Link
href={`/address/${createParametersFromFirstTransaction?.payer?.value}`}
>
{createParametersFromFirstTransaction?.payer?.value}
</Link>
</div>
</td>
</tr>
<tr>
<td className="text-muted-foreground">Payer Details:</td>
<td className="pl-16">
<ActorInfoSection actorInfo={buyerData} />
<ActorInfoSection
actorInfo={buyerData}
isEncrypted={!!firstTransaction?.encryptedData}
/>
</td>
</tr>
<tr>
<td className="text-muted-foreground">Expected Amount:</td>
<td className="pl-16">
{getAmountWithCurrencySymbol(
BigInt(createParameters.expectedAmount),
createParameters.currency.value,
BigInt(
createParametersFromFirstTransaction?.expectedAmount ||
0,
),
createParametersFromFirstTransaction?.currency?.value ||
"",
)}
</td>
</tr>
Expand Down Expand Up @@ -344,22 +382,36 @@ export default function RequestPage({ params: { id } }: RequestPageProps) {
: ""}
</td>
</tr>
<tr>
<td className="text-muted-foreground">Encryption Status:</td>
<td className="pl-16">
{firstTransaction?.encryptedData
? "Encrypted"
: "Not Encrypted"}
</td>
</tr>
<tr>
<td className="text-muted-foreground">Raw Content Data:</td>
<td className="pl-16">
<div className="bg-muted/50 rounded-md p-2">
<JsonEditor
data={contentData}
restrictEdit={true}
restrictDelete={true}
restrictAdd={true}
restrictDrag={true}
restrictTypeSelection={true}
theme="githubLight"
collapse={true}
rootFontSize={14}
/>
</div>
{firstTransaction?.encryptedData ? (
<div className="bg-muted/50 rounded-md p-2">
<div className="text-muted-foreground">Encrypted</div>
</div>
) : (
<div className="bg-muted/50 rounded-md p-2">
<JsonEditor
data={contentData}
restrictEdit={true}
restrictDelete={true}
restrictAdd={true}
restrictDrag={true}
restrictTypeSelection={true}
theme="githubLight"
collapse={true}
rootFontSize={14}
/>
</div>
)}
</td>
</tr>
</tbody>
Expand Down
4 changes: 4 additions & 0 deletions src/lib/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,10 @@ export interface Transaction {
data: string;
dataObject: any;
dataHash: string;
encryptedData?: string;
encryptedKeys?: string;
encryptionMethod?: string;
publicKeys?: string;
hash: string;
id: string;
size: string;
Expand Down
6 changes: 3 additions & 3 deletions src/lib/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ export const getTransactionCreateParameters = (
export const getContentDataFromCreateTransaction = (
createParameters: RequestLogicTypes.ICreateParameters,
) => {
const extensionData = createParameters.extensionsData;
const extensionData = createParameters?.extensionsData;
const contentData: Invoice = extensionData?.find(
(extension) => extension.id === "content-data",
)?.parameters?.content;
Expand All @@ -172,8 +172,8 @@ export const getContentDataFromCreateTransaction = (
export const getPaymentDataFromCreateTransaction = (
createParameters: RequestLogicTypes.ICreateParameters,
) => {
const extensionData = createParameters?.extensionsData!;
return extensionData[0]?.parameters;
const extensionData = createParameters?.extensionsData;
return extensionData?.[0]?.parameters;
};

export const getBalance = (payments: Payment[] | undefined) => {
Expand Down