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

feat: digital credentials detailed instructions #575

Merged
merged 63 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
47feaf0
refactor: CredentialsLanding component: add heading card
amanji Sep 23, 2023
32dfef2
feat: CredentialsLanding component: add supplemental cards
amanji Sep 23, 2023
500763b
feat: CredentialsLanding component: add image and word wrapping
amanji Sep 23, 2023
168eca8
feat: CredentialsLanding component: link styling
amanji Sep 23, 2023
23e6d5b
feat: CredentialsStepper component: deprecate routes
amanji Sep 25, 2023
07bf666
refactor: CredentialsStepper component: function naming
amanji Sep 25, 2023
83d88ff
refactor: DigitalCredentials component: split into sub components
amanji Sep 26, 2023
8cae600
feat: DigitalCredentials component: add web socket component
amanji Sep 27, 2023
dee0f34
feat: DigitalCredentials component: re-add credential table
amanji Sep 28, 2023
bbd85b7
refactor: DigitalCredentials component: update types and imports
amanji Sep 28, 2023
d8289b2
feat: DigitalCredentials component: add revocation dialogs
amanji Oct 18, 2023
49c2baa
feat: DigitalCredentials component: add replacement dialogs
amanji Oct 19, 2023
fbfdc99
feat: devcontainer config
amanji Oct 19, 2023
03772a9
Merge remote-tracking branch 'upstream/main' into feature/digital-bus…
amanji Oct 19, 2023
ae9faa6
chore: fix linting errors
amanji Oct 19, 2023
4e43dc7
chore: bump version number
amanji Oct 20, 2023
ff10cbc
chore: rename route for specificity
amanji Oct 20, 2023
5a2c946
chore: ran linter and fixed linting errors
amanji Oct 20, 2023
990d34d
chore: make interface field optional
amanji Oct 20, 2023
3b1b44d
chore: revert auto-formatting
amanji Oct 20, 2023
917ff01
refactor: contain dialogs for DigitalCredentials component
amanji Oct 20, 2023
e6df545
chore: fix code smells
amanji Oct 20, 2023
88601ef
chore: address code review comments
amanji Oct 25, 2023
d085e12
chore: revert autoformatting
amanji Oct 25, 2023
a143ca0
chore: update wording and styling to align with UX
amanji Oct 27, 2023
c6a8c05
chore: fix styling
amanji Oct 27, 2023
7f3107b
feat: feature flag credentials feature with mixin
amanji Oct 27, 2023
045d251
feat: add TOU dialog
amanji Oct 27, 2023
5c1b4af
chore: fix test failiures and code comments
amanji Oct 27, 2023
081f591
chore: cleaup
amanji Oct 27, 2023
a1edda6
fix: mixin to access digital credential feature
amanji Oct 27, 2023
13a8187
fix: entity menu styling
amanji Oct 27, 2023
8c03739
feat: add loading indicators to digital credential route pages
amanji Oct 27, 2023
65c0c2a
feat: reset dialog and functions
amanji Oct 28, 2023
fdef2ed
chore: returl null if undefined
amanji Oct 30, 2023
f8864b8
chore: beef up conditional checks
amanji Oct 30, 2023
ae81205
chore: spelling error
amanji Oct 30, 2023
df06a6b
chore: spelling error
amanji Oct 30, 2023
40ceaf7
18284: digital business card (#552)
amanji Oct 30, 2023
4c4407d
chore: cleanup spelling and handle edge cases
amanji Oct 31, 2023
ff53d60
Merge remote-tracking branch 'upstream/feature-digital-credentials' i…
amanji Oct 31, 2023
035a716
fix: failing tests
amanji Oct 31, 2023
678323c
fix: entity menu logic
amanji Oct 31, 2023
79610c5
18284 Updated CSP (#561)
severinbeauvais Oct 31, 2023
988b97b
Merge remote-tracking branch 'upstream/feature-digital-credentials' i…
amanji Oct 31, 2023
776fd94
refactor: remove websocket support in favour of interval polling
amanji Nov 1, 2023
6421ab5
chore: remove console log
amanji Nov 1, 2023
ead55de
chore: address PR comments
amanji Nov 1, 2023
8e74db6
chore: remove unused import
amanji Nov 1, 2023
06c4c96
fix: build and test failures
amanji Nov 1, 2023
fc36d88
feat: digital business card (#562)
amanji Nov 2, 2023
4b63e47
Merge branch 'main' into feature-digital-credentials
severinbeauvais Nov 2, 2023
f0b47ae
Update EntityMenu.spec.ts
severinbeauvais Nov 2, 2023
16edd65
Merge remote-tracking branch 'upstream/feature-digital-credentials' i…
amanji Nov 3, 2023
1c57ff3
Merge branch 'feature/digital-business-card'
amanji Nov 3, 2023
f2d73c7
chore: remove web socket references
amanji Nov 3, 2023
f9b0867
chore: fix spacing
amanji Nov 3, 2023
e6a0d06
chore: some cleanup
amanji Nov 8, 2023
d798657
feat: credential detailed instructions
amanji Nov 9, 2023
45e5673
Merge remote-tracking branch 'upstream/main' into feature-digital-cre…
amanji Nov 9, 2023
dd56e84
chore: add tags to components
amanji Nov 9, 2023
3ddb95d
Merge remote-tracking branch 'upstream/main'
amanji Nov 9, 2023
a42663a
Merge branch 'main' into feature-digital-credentials
amanji Nov 9, 2023
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
Binary file added src/assets/images/bc_wallet_app_store.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion src/components/DigitalCredentials/CredentialsDashboard.vue
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,8 @@ export default class CredentialsDashboard extends Vue {
this.showLoadingContainer = true
let revokedCredential = !this.issuedCredential.isIssued || this.issuedCredential.isRevoked ? {} : null
if (this.issuedCredential.isIssued && !this.issuedCredential.isRevoked) {
revokedCredential = await LegalServices.revokeCredential(this.getIdentifier, this.issuedCredential.credentialId)
revokedCredential =
await LegalServices.revokeCredential(this.getIdentifier, this.issuedCredential.credentialId, true)
}
const removedCredential =
await LegalServices.removeCredential(this.getIdentifier, this.issuedCredential.credentialId)
Expand Down
139 changes: 139 additions & 0 deletions src/components/DigitalCredentials/CredentialsDetailSteps.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
<template>
<div id="credentials-detail-steps">
<h1>Steps to get your credential</h1>
<v-card class="mt-6">
<v-card-text class="d-flex">
<span
class="credentials-stepper-number ml-n4 my-n4 px-4
font-weight-bold align-self-stretch d-flex rounded-l"
>
<div class="align-self-center">1</div>
</span>
<span class="ml-4">
<v-row>
<v-col
cols="12"
sm="12"
lg="8"
>
<h3>Install the BC Wallet app on your phone</h3>
<p class="mt-1">
<a
href="https://www2.gov.bc.ca/gov/content/governments/government-id/bc-wallet#get"
target="_blank"
>BC Wallet<v-icon
small
color="primary"
>mdi-open-in-new</v-icon></a> is a digital identity wallet. It lets you receive, store and present
digital credentials such as memberships, permits, and ID cards.
</p>
<div>
<v-btn
color="primary"
href="https://www2.gov.bc.ca/gov/content/governments/government-id/bc-wallet#get"
target="_blank"
>Get the BC Wallet app
<v-icon>mdi-chevron-right</v-icon>
</v-btn>
</div>
<p class="mt-4">
<a
href="https://www2.gov.bc.ca/gov/content/governments/government-id/bc-wallet/help"
target="_blank"
>Help topics about using the BC Wallet app<v-icon
small
color="primary"
>mdi-open-in-new</v-icon></a>
</p>
</v-col>
<v-col>
<img
width="100%"
src="@/assets/images/bc_wallet_app_store.png"
:alt="imageAltText1"
>
</v-col>
</v-row>
</span>
</v-card-text>
</v-card>
<v-card class="mt-4">
<v-card-text class="d-flex">
<span
class="credentials-stepper-number ml-n4 my-n4 px-4
font-weight-bold align-self-stretch d-flex rounded-l"
>
<div class="align-self-center">2</div>
</span>
<span class="ml-4">
<h3>Get your Digital Business Card</h3>
<v-row class="justify-center">
<v-col
cols="12"
lg="8"
>
<img
width="100%"
src="@/assets/images/business_card_issuance_steps.png"
:alt="imageAltText2"
>
</v-col>
<v-col cols="12">
<ol class="credentials-ordered-list">
<li><p>Open the BC Wallet app on your mobile phone, tap the "Scan" button.</p></li>
<li><p>Allow (if prompted) the app to access the camera as it is needed to scan the QR code.</p></li>
<li><p>Point your camera towards the QR code on the website. Once the scan is successful,
you’ll receive a credential offer in BC Wallet over a secure connection from BC Registries.
</p></li>
<li><p>Open the credential offer and accept the credential.</p></li>
</ol>
</v-col>
</v-row>
</span>
</v-card-text>
</v-card>
<v-btn
id="hide-detail-steps-button"
class="mt-6"
color="primary"
@click.prevent="handleHideDetailSteps()"
>
Return to Simple Steps
<v-icon>mdi-chevron-right</v-icon>
</v-btn>
</div>
</template>

<script lang="ts">
import { Component, Emit, Vue } from 'vue-property-decorator'

@Component({})
export default class CredentialsDetailSteps extends Vue {
imageAltText1 = 'Two mobile phones side by side showing the BC Wallet App in the app store.'
imageAltText2 = 'On the far left is a BC Wallet with a QR code sample and arrows between 3 mobile phones ' +
'showing the steps below.'

@Emit('onHideDetailSteps')
handleHideDetailSteps (): void {
return undefined
}
}
</script>

<style lang="scss" scoped>
@import "@/assets/styles/theme.scss";

.credentials-stepper-number {
color: white;
background-color: $app-blue;
}

.credentials-ordered-list {
li::marker {
font-weight: bold;
}
li {
padding-left: $px-10;
}
}
</style>
101 changes: 101 additions & 0 deletions src/components/DigitalCredentials/CredentialsSimpleSteps.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<template>
<div id="credentials-simple-steps">
<v-card class="pa-3">
<v-card-text>
<h1>Steps to get your credential:</h1>
<v-card class="mt-6">
<v-card-text class="d-flex">
<span
class="credentials-stepper-number ml-n4 my-n4 px-8
font-weight-bold align-self-stretch d-flex rounded-l"
>
<div class="align-self-center">1</div>
</span>
<span class="ml-8">
Have the
<a
href="https://www2.gov.bc.ca/gov/content/governments/government-id/bc-wallet"
target="_blank"
>
BC Wallet app<v-icon
small
color="primary"
>mdi-open-in-new</v-icon></a>
installed on your mobile phone.
</span>
</v-card-text>
</v-card>
<v-card class="mt-2">
<v-card-text class="d-flex">
<span
class="credentials-stepper-number ml-n4 my-n4 px-8
font-weight-bold align-self-stretch d-flex rounded-l"
>
<div class="align-self-center">2</div>
</span>
<span class="ml-8">
Scan the QR code with your BC Wallet to get your Digital Business Card and accept it in your BC
Wallet app.
</span>
</v-card-text>
</v-card>
<v-card class="mt-2">
<v-card-text class="d-flex">
<span
class="credentials-stepper-number ml-n4 my-n4 px-8
font-weight-bold align-self-stretch d-flex rounded-l"
>
<div class="align-self-center">3</div>
</span>
<span class="ml-8">
Check your Digital Business Cards on the
<router-link to="/digital-credentials">credential dashboard</router-link>.
</span>
</v-card-text>
</v-card>
</v-card-text>
<v-card-text class="mt-n2">
<a
href="#"
@click.prevent="handleShowDetailSteps()"
>Read detailed instructions</a>
</v-card-text>
</v-card>

<v-btn
id="return-to-company-dashboard-button"
color="primary"
class="mt-6"
@click="handleGoToCredentialsDashboard()"
>
Return to Company Dashboard
<v-icon>mdi-chevron-right</v-icon>
</v-btn>
</div>
</template>

<script lang="ts">
import { Component, Emit, Vue } from 'vue-property-decorator'

@Component({})
export default class CredentialSimpleSteps extends Vue {
@Emit('onGoToCredentialsDashboard')
handleGoToCredentialsDashboard (): void {
return undefined
}

@Emit('onShowDetailSteps')
handleShowDetailSteps (): void {
return undefined
}
}
</script>

<style lang="scss" scoped>
@import "@/assets/styles/theme.scss";

.credentials-stepper-number {
color: white;
background-color: $app-blue;
}
</style>
Loading
Loading