@ -23,7 +23,7 @@ import QRCode from "qrcode";
import { APP_SERVER , NotificationIface } from "@/constants/app" ;
import { APP_SERVER , NotificationIface } from "@/constants/app" ;
import { db , retrieveSettingsForActiveAccount } from "@/db/index" ;
import { db , retrieveSettingsForActiveAccount } from "@/db/index" ;
import * as endor serSer ver from "@/libs/endorserServer" ;
import * as serverUtil from "@/libs/endorserServer" ;
@ Component
@ Component
export default class ClaimCertificateView extends Vue {
export default class ClaimCertificateView extends Vue {
@ -35,7 +35,7 @@ export default class ClaimCertificateView extends Vue {
claimId = "" ;
claimId = "" ;
claimData = null ;
claimData = null ;
endor serSer ver = endor serSer ver;
serverUtil = serverUtil ;
async created ( ) {
async created ( ) {
const settings = await retrieveSettingsForActiveAccount ( ) ;
const settings = await retrieveSettingsForActiveAccount ( ) ;
@ -50,14 +50,27 @@ export default class ClaimCertificateView extends Vue {
async fetchClaim ( ) {
async fetchClaim ( ) {
try {
try {
const response = await fetch (
const headers = await serverUtil . getHeaders ( this . activeDid ) ;
const response = await this . axios . get (
` ${ this . apiServer } /api/claim/ ${ this . claimId } ` ,
` ${ this . apiServer } /api/claim/ ${ this . claimId } ` ,
{ headers } ,
) ;
) ;
if ( response . ok ) {
if ( response . status === 200 ) {
this . claimData = await response . json ( ) ;
this . claimData = await response . data ;
const claimEntryIds = [ this . claimId ] ;
const headers = await serverUtil . getHeaders ( this . activeDid ) ;
const confirmerResponse = await this . axios . post (
` ${ this . apiServer } /api/v2/report/confirmers/?claimEntryIds= ${ this . claimId } ` ,
{ claimEntryIds } ,
{ headers } ,
) ;
let confirmerIds : Array < string > = [ ] ;
if ( confirmerResponse . status === 200 ) {
confirmerIds = await confirmerResponse . data . data ;
}
await nextTick ( ) ; / / W a i t f o r t h e D O M t o u p d a t e
await nextTick ( ) ; / / W a i t f o r t h e D O M t o u p d a t e
if ( this . claimData ) {
if ( this . claimData ) {
this . drawCanvas ( this . claimData ) ;
this . drawCanvas ( this . claimData , confirmerIds ) ;
}
}
} else {
} else {
throw new Error ( ` Error fetching claim: ${ response . statusText } ` ) ;
throw new Error ( ` Error fetching claim: ${ response . statusText } ` ) ;
@ -74,7 +87,8 @@ export default class ClaimCertificateView extends Vue {
}
}
async drawCanvas (
async drawCanvas (
claimData : endorserServer . GenericCredWrapper < endorserServer .GenericVerifiableCredential > ,
claimData : serverUtil . GenericCredWrapper < serverUtil .GenericVerifiableCredential > ,
confirmerIds : Array < string > ,
) {
) {
await db . open ( ) ;
await db . open ( ) ;
const allContacts = await db . contacts . toArray ( ) ;
const allContacts = await db . contacts . toArray ( ) ;
@ -102,7 +116,7 @@ export default class ClaimCertificateView extends Vue {
/ / D r a w c l a i m t y p e
/ / D r a w c l a i m t y p e
ctx . font = "bold 20px Arial" ;
ctx . font = "bold 20px Arial" ;
const claimTypeText =
const claimTypeText =
this . endor serSer ver. capitalizeAndInsertSpacesBeforeCaps (
this . serverUtil . capitalizeAndInsertSpacesBeforeCaps (
claimData . claimType || "" ,
claimData . claimType || "" ,
) ;
) ;
const claimTypeWidth = ctx . measureText ( claimTypeText ) . width ;
const claimTypeWidth = ctx . measureText ( claimTypeText ) . width ;
@ -121,8 +135,10 @@ export default class ClaimCertificateView extends Vue {
( CANVAS_WIDTH - presentedWidth ) / 2 , / / C e n t e r h o r i z o n t a l l y
( CANVAS_WIDTH - presentedWidth ) / 2 , / / C e n t e r h o r i z o n t a l l y
CANVAS_HEIGHT * 0.37 ,
CANVAS_HEIGHT * 0.37 ,
) ;
) ;
const agentText = endorserServer . didInfoForCertificate (
const agentDid =
claimData . claim . agent ,
claimData . claim . agent . identifier || claimData . claim . agent ;
const agentText = serverUtil . didInfoForCertificate (
agentDid ,
allContacts ,
allContacts ,
) ;
) ;
ctx . font = "bold 20px Arial" ;
ctx . font = "bold 20px Arial" ;
@ -155,12 +171,21 @@ export default class ClaimCertificateView extends Vue {
ctx . font = "14px Arial" ;
ctx . font = "14px Arial" ;
const issuerText =
const issuerText =
"Issued by " +
"Issued by " +
endorserServer . didInfoForCertificate (
serverUtil . didInfoForCertificate ( claimData . issuer , allContacts ) ;
claimData . issuer ,
allContacts ,
) ;
ctx . fillText ( issuerText , CANVAS_WIDTH * 0.3 , CANVAS_HEIGHT * 0.6 ) ;
ctx . fillText ( issuerText , CANVAS_WIDTH * 0.3 , CANVAS_HEIGHT * 0.6 ) ;
}
}
if ( confirmerIds . length > 0 ) {
const confirmerText =
"Confirmed by " +
confirmerIds . length +
( confirmerIds . length === 1 ? " person" : " people" ) ;
ctx . font = "14px Arial" ;
ctx . fillText (
confirmerText ,
CANVAS_WIDTH * 0.3 ,
CANVAS_HEIGHT * 0.63 ,
) ;
}
/ / D r a w c l a i m I D
/ / D r a w c l a i m I D
ctx . font = "14px Arial" ;
ctx . font = "14px Arial" ;