forked from trent_larson/crowd-funder-for-time-pwa
Compare commits
8 Commits
gifted-cam
...
button-vis
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6e344a15e | ||
|
|
3d1c46aef8 | ||
| ce05f7d003 | |||
| 313cd79e60 | |||
| 121991b53a | |||
| a230506d96 | |||
| c49c55d394 | |||
|
|
a5c3600673 |
@@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Nothing
|
- Nothing
|
||||||
|
|
||||||
|
|
||||||
## [0.3.2] - 2024.03.17
|
## [0.3.3] - 2024.03.18
|
||||||
### Added
|
### Added
|
||||||
- Photo on gift record
|
- Photo on gift record
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ npm run lint
|
|||||||
```
|
```
|
||||||
# (See .env.development for more details.)
|
# (See .env.development for more details.)
|
||||||
# The test BVC_MEETUPS_PROJECT_CLAIM_ID does not resolve as a URL because it's only in the test DB and the prod redirect won't redirect there.
|
# The test BVC_MEETUPS_PROJECT_CLAIM_ID does not resolve as a URL because it's only in the test DB and the prod redirect won't redirect there.
|
||||||
APP_TITLE="TimeSafari_Test" VUE_APP_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01HNTZYJJXTGT0EZS3VEJGX7AK VUE_APP_DEFAULT_ENDORSER_API_SERVER=https://test-api.endorser.ch VUE_APP_DEFAULT_IMAGE_API_SERVER=https://test-image-api.timesafari.app npm run build
|
TIME_SAFARI_APP_TITLE="TimeSafari_Test" VUE_APP_BVC_MEETUPS_PROJECT_CLAIM_ID=https://endorser.ch/entity/01HNTZYJJXTGT0EZS3VEJGX7AK VUE_APP_DEFAULT_ENDORSER_API_SERVER=https://test-api.endorser.ch VUE_APP_DEFAULT_IMAGE_API_SERVER=https://test-image-api.timesafari.app npm run build
|
||||||
```
|
```
|
||||||
|
|
||||||
* Production
|
* Production
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "TimeSafari",
|
"name": "TimeSafari",
|
||||||
"version": "0.3.2",
|
"version": "0.3.3",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "TimeSafari",
|
"name": "TimeSafari",
|
||||||
"version": "0.3.2",
|
"version": "0.3.3",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@dicebear/collection": "^5.3.5",
|
"@dicebear/collection": "^5.3.5",
|
||||||
"@dicebear/core": "^5.3.5",
|
"@dicebear/core": "^5.3.5",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "TimeSafari",
|
"name": "TimeSafari",
|
||||||
"version": "0.3.2",
|
"version": "0.3.3",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"serve": "vue-cli-service serve",
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
|
|
||||||
tasks :
|
tasks :
|
||||||
|
|
||||||
|
- bug - landscape doesn't show full camera
|
||||||
|
- but - portrait stretches pic
|
||||||
|
- add to readme - check version, close tabs & restart phone if necessary
|
||||||
- bug maybe - a new give remembers the previous project
|
- bug maybe - a new give remembers the previous project
|
||||||
- alert & stop if give amount < 0
|
- alert & stop if give amount < 0
|
||||||
|
- add warning that all data (except ID) is public
|
||||||
- onboarding video
|
- onboarding video
|
||||||
|
|
||||||
- .1 on feed, don't show "to someone anonymous" if it's to a project
|
- .1 on feed, don't show "to someone anonymous" if it's to a project
|
||||||
@@ -55,7 +59,7 @@ tasks :
|
|||||||
- .1 hide project-create button on project page if not registered
|
- .1 hide project-create button on project page if not registered
|
||||||
- .1 hide offer & give buttons on project list page if not registered
|
- .1 hide offer & give buttons on project list page if not registered
|
||||||
- .1 add cursor-pointer on the icons for giving on the project page, and on the list of projects on the discover page
|
- .1 add cursor-pointer on the icons for giving on the project page, and on the list of projects on the discover page
|
||||||
- .2 record when InfiniteScroll hits the end of the list and don't trigger any more loads
|
- .2 record when InfiniteScroll hits the end of the list and don't trigger any more loads (feed, project list, give & offer lists)
|
||||||
|
|
||||||
- bug - turning notifications on from the help screen did not stay, though account screen toggle did stay (From Jason on iPhone.)
|
- bug - turning notifications on from the help screen did not stay, though account screen toggle did stay (From Jason on iPhone.)
|
||||||
- refactor - supply the projectId to the OfferDialog just like we do with the GiftedDialog offerId (in the "open" method, maybe as well as an attribute)
|
- refactor - supply the projectId to the OfferDialog just like we do with the GiftedDialog offerId (in the "open" method, maybe as well as an attribute)
|
||||||
@@ -119,6 +123,7 @@ tasks :
|
|||||||
- .5 show seed phrase in a QR code for transfer to another device
|
- .5 show seed phrase in a QR code for transfer to another device
|
||||||
- .5 on DiscoverView, switch to a filter UI (eg. just from friend
|
- .5 on DiscoverView, switch to a filter UI (eg. just from friend
|
||||||
- .5 don't show "Offer" on project screen if they aren't registered
|
- .5 don't show "Offer" on project screen if they aren't registered
|
||||||
|
- 01 especially for iOS, check for new version & update, eg. https://stackoverflow.com/questions/52221805/any-way-yet-to-auto-update-or-just-clear-the-cache-on-a-pwa-on-ios
|
||||||
|
|
||||||
- 24 Move to Vite
|
- 24 Move to Vite
|
||||||
- 32 accept images for projects
|
- 32 accept images for projects
|
||||||
|
|||||||
@@ -61,13 +61,13 @@
|
|||||||
Sign & Send to publish to the world
|
Sign & Send to publish to the world
|
||||||
</p>
|
</p>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
@click="confirm"
|
@click="confirm"
|
||||||
>
|
>
|
||||||
Sign & Send
|
Sign & Send
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="cancel"
|
@click="cancel"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
|
|||||||
@@ -1,18 +1,15 @@
|
|||||||
<template>
|
<template>
|
||||||
<div v-if="visible" class="dialog-overlay z-[60]">
|
<div v-if="visible" class="dialog-overlay z-[60]">
|
||||||
<!-- Breadcrumb -->
|
|
||||||
<div class="dialog relative">
|
<div class="dialog relative">
|
||||||
<!-- Back -->
|
|
||||||
<div class="text-lg text-center font-light relative z-50">
|
<div class="text-lg text-center font-light relative z-50">
|
||||||
<!-- Heading -->
|
<div
|
||||||
<h1
|
|
||||||
id="ViewHeading"
|
id="ViewHeading"
|
||||||
class="text-center font-bold absolute top-0 left-0 right-0 px-4 py-2 bg-black/50 text-white leading-none"
|
class="text-center font-bold absolute top-0 left-0 right-0 px-4 py-2 bg-black/50 text-white leading-none"
|
||||||
>
|
>
|
||||||
<span v-if="uploading"> Uploading... </span>
|
<span v-if="uploading"> Uploading... </span>
|
||||||
<span v-else-if="blob"> Look Good? </span>
|
<span v-else-if="blob"> Look Good? </span>
|
||||||
<span v-else> Say "Cheese"! </span>
|
<span v-else> Say "Cheese"! </span>
|
||||||
</h1>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
class="text-lg text-center p-2 leading-none absolute right-0 top-0 text-white"
|
class="text-lg text-center p-2 leading-none absolute right-0 top-0 text-white"
|
||||||
@@ -31,18 +28,20 @@
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
@click="uploadImage"
|
@click="uploadImage"
|
||||||
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded-full"
|
class="bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white font-bold py-2 px-4 rounded-md"
|
||||||
>
|
>
|
||||||
<span>Upload</span>
|
<span>Upload</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@click="retryImage"
|
@click="retryImage"
|
||||||
class="bg-slate-500 hover:bg-slate-700 text-white font-bold py-2 px-4 rounded-full"
|
class="bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white font-bold py-2 px-4 rounded-md"
|
||||||
>
|
>
|
||||||
<span>Retry</span>
|
<span>Retry</span>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<img :src="URL.createObjectURL(blob)" class="mt-2 w-full" />
|
<div class="flex justify-center">
|
||||||
|
<img :src="URL.createObjectURL(blob)" class="mt-2 rounded" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<!--
|
<!--
|
||||||
@@ -53,7 +52,6 @@
|
|||||||
<div
|
<div
|
||||||
class="absolute portrait:bottom-0 portrait:left-0 portrait:right-0 landscape:right-0 landscape:top-0 landscape:bottom-0 flex landscape:flex-row justify-center items-center portrait:pb-2 landscape:pr-4"
|
class="absolute portrait:bottom-0 portrait:left-0 portrait:right-0 landscape:right-0 landscape:top-0 landscape:bottom-0 flex landscape:flex-row justify-center items-center portrait:pb-2 landscape:pr-4"
|
||||||
>
|
>
|
||||||
<!-- Button -->
|
|
||||||
<button
|
<button
|
||||||
@click="takeImage"
|
@click="takeImage"
|
||||||
class="bg-blue-500 hover:bg-blue-700 text-white font-bold p-3 rounded-full text-2xl leading-none"
|
class="bg-blue-500 hover:bg-blue-700 text-white font-bold p-3 rounded-full text-2xl leading-none"
|
||||||
@@ -85,6 +83,9 @@ export default class GiftedPhotoDialog extends Vue {
|
|||||||
activeDid = "";
|
activeDid = "";
|
||||||
blob: Blob | null = null;
|
blob: Blob | null = null;
|
||||||
setImage: (arg: string) => void = () => {};
|
setImage: (arg: string) => void = () => {};
|
||||||
|
imageHeight?: number = window.innerHeight / 2;
|
||||||
|
imageWidth?: number = window.innerWidth / 2;
|
||||||
|
imageWarning = ".";
|
||||||
uploading = false;
|
uploading = false;
|
||||||
visible = false;
|
visible = false;
|
||||||
|
|
||||||
@@ -112,17 +113,64 @@ export default class GiftedPhotoDialog extends Vue {
|
|||||||
|
|
||||||
open(setImageFn: (arg: string) => void) {
|
open(setImageFn: (arg: string) => void) {
|
||||||
this.visible = true;
|
this.visible = true;
|
||||||
|
const bottomNav = document.querySelector("#QuickNav") as HTMLElement;
|
||||||
|
if (bottomNav) {
|
||||||
|
bottomNav.style.display = "none";
|
||||||
|
}
|
||||||
this.setImage = setImageFn;
|
this.setImage = setImageFn;
|
||||||
}
|
}
|
||||||
|
|
||||||
close() {
|
close() {
|
||||||
this.visible = false;
|
this.visible = false;
|
||||||
|
const bottomNav = document.querySelector("#QuickNav") as HTMLElement;
|
||||||
|
if (bottomNav) {
|
||||||
|
bottomNav.style.display = "";
|
||||||
|
}
|
||||||
this.blob = null;
|
this.blob = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
async takeImage(/* payload: MouseEvent */) {
|
async takeImage(/* payload: MouseEvent */) {
|
||||||
const cameraComponent = this.$refs.camera as InstanceType<typeof Camera>;
|
const cameraComponent = this.$refs.camera as InstanceType<typeof Camera>;
|
||||||
this.blob = await cameraComponent?.snapshot(); // png is default; if that changes, change extension in formData.append
|
|
||||||
|
/**
|
||||||
|
* This logic to set the image height & width correctly.
|
||||||
|
* Without it, the portrait orientation ends up with an image that is stretched horizontally.
|
||||||
|
* Note that it's the same with raw browser Javascript; see the "drawImage" example below.
|
||||||
|
* Now that I've done it, I can't explain why it works.
|
||||||
|
*/
|
||||||
|
let imageHeight = cameraComponent?.resolution?.height;
|
||||||
|
let imageWidth = cameraComponent?.resolution?.width;
|
||||||
|
const initialImageRatio = imageWidth / imageHeight;
|
||||||
|
const windowRatio = window.innerWidth / window.innerHeight;
|
||||||
|
if (initialImageRatio > 1 && windowRatio < 1) {
|
||||||
|
// the image is wider than it is tall, and the window is taller than it is wide
|
||||||
|
// For some reason, mobile in portrait orientation renders a horizontally-stretched image.
|
||||||
|
// We're gonna force it opposite.
|
||||||
|
imageHeight = cameraComponent?.resolution?.width;
|
||||||
|
imageWidth = cameraComponent?.resolution?.height;
|
||||||
|
} else if (initialImageRatio < 1 && windowRatio > 1) {
|
||||||
|
// the image is taller than it is wide, and the window is wider than it is tall
|
||||||
|
// Haven't seen this happen, but we'll do it just in case.
|
||||||
|
imageHeight = cameraComponent?.resolution?.width;
|
||||||
|
imageWidth = cameraComponent?.resolution?.height;
|
||||||
|
}
|
||||||
|
const newImageRatio = imageWidth / imageHeight;
|
||||||
|
if (newImageRatio < windowRatio) {
|
||||||
|
// the image is a taller ratio than the window, so fit the height first
|
||||||
|
imageHeight = window.innerHeight / 2;
|
||||||
|
imageWidth = imageHeight * newImageRatio;
|
||||||
|
} else {
|
||||||
|
// the image is a wider ratio than the window, so fit the width first
|
||||||
|
imageWidth = window.innerWidth / 2;
|
||||||
|
imageHeight = imageWidth / newImageRatio;
|
||||||
|
}
|
||||||
|
|
||||||
|
// The resolution is only necessary because of that mobile portrait-orientation case.
|
||||||
|
// The mobile emulation in a browser shows something stretched vertically, but real devices work fine.
|
||||||
|
this.blob = await cameraComponent?.snapshot({
|
||||||
|
height: imageHeight,
|
||||||
|
width: imageWidth,
|
||||||
|
}); // png is default; if that changes, change extension in formData.append
|
||||||
if (!this.blob) {
|
if (!this.blob) {
|
||||||
this.$notify(
|
this.$notify(
|
||||||
{
|
{
|
||||||
@@ -141,6 +189,54 @@ export default class GiftedPhotoDialog extends Vue {
|
|||||||
this.blob = null;
|
this.blob = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****
|
||||||
|
|
||||||
|
Here's an approach to photo capture without a library. It has similar quirks.
|
||||||
|
Now that we've fixed styling for simple-vue-camera, it's not critical to refactor. Maybe someday.
|
||||||
|
|
||||||
|
<button id="start-camera" @click="cameraClicked">Start Camera</button>
|
||||||
|
<video id="video" width="320" height="240" autoplay></video>
|
||||||
|
<button id="snap-photo" @click="photoSnapped">Snap Photo</button>
|
||||||
|
<canvas id="canvas" width="320" height="240"></canvas>
|
||||||
|
|
||||||
|
async cameraClicked() {
|
||||||
|
console.log("camera_button clicked");
|
||||||
|
const video = document.querySelector("#video");
|
||||||
|
const stream = await navigator.mediaDevices.getUserMedia({
|
||||||
|
video: true,
|
||||||
|
audio: false,
|
||||||
|
});
|
||||||
|
if (video instanceof HTMLVideoElement) {
|
||||||
|
video.srcObject = stream;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
photoSnapped() {
|
||||||
|
console.log("snap_photo clicked");
|
||||||
|
const video = document.querySelector("#video");
|
||||||
|
const canvas = document.querySelector("#canvas");
|
||||||
|
if (
|
||||||
|
canvas instanceof HTMLCanvasElement &&
|
||||||
|
video instanceof HTMLVideoElement
|
||||||
|
) {
|
||||||
|
canvas
|
||||||
|
?.getContext("2d")
|
||||||
|
?.drawImage(video, 0, 0, canvas.width, canvas.height);
|
||||||
|
// ... or set the blob:
|
||||||
|
// canvas?.toBlob(
|
||||||
|
// (blob) => {
|
||||||
|
// this.blob = blob;
|
||||||
|
// },
|
||||||
|
// "image/jpeg",
|
||||||
|
// 1,
|
||||||
|
// );
|
||||||
|
|
||||||
|
// data url of the image
|
||||||
|
const image_data_url = canvas?.toDataURL("image/jpeg");
|
||||||
|
console.log(image_data_url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
****/
|
||||||
|
|
||||||
async uploadImage() {
|
async uploadImage() {
|
||||||
this.uploading = true;
|
this.uploading = true;
|
||||||
const identifier = await getIdentity(this.activeDid);
|
const identifier = await getIdentity(this.activeDid);
|
||||||
|
|||||||
@@ -33,7 +33,7 @@
|
|||||||
<span class="flex justify-between">
|
<span class="flex justify-between">
|
||||||
<span />
|
<span />
|
||||||
<button
|
<button
|
||||||
class="text-center bg-slate-500 text-white px-1.5 py-2 rounded-md mt-4"
|
class="text-center bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-4"
|
||||||
@click="nextIdeaPastContacts()"
|
@click="nextIdeaPastContacts()"
|
||||||
>
|
>
|
||||||
Skip Contacts <fa icon="forward" />
|
Skip Contacts <fa icon="forward" />
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mt-4"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-4"
|
||||||
@click="cancel"
|
@click="cancel"
|
||||||
>
|
>
|
||||||
That's it!
|
That's it!
|
||||||
|
|||||||
@@ -51,13 +51,13 @@
|
|||||||
Sign & Send to publish to the world
|
Sign & Send to publish to the world
|
||||||
</p>
|
</p>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
@click="confirm"
|
@click="confirm"
|
||||||
>
|
>
|
||||||
Sign & Send
|
Sign & Send
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="cancel"
|
@click="cancel"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
<span>
|
<span>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'help' }"
|
:to="{ name: 'help' }"
|
||||||
class="text-xs uppercase bg-blue-500 text-white px-1.5 py-1 rounded-md ml-1"
|
class="text-xs uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-1 rounded-md ml-1"
|
||||||
>
|
>
|
||||||
Help
|
Help
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -55,7 +55,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'start' }"
|
:to="{ name: 'start' }"
|
||||||
class="inline-block text-md uppercase bg-amber-600 text-white px-4 py-2 rounded-md"
|
class="inline-block text-md uppercase bg-gradient-to-b from-amber-400 to-amber-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Create An Identifier
|
Create An Identifier
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'contact-qr' }"
|
:to="{ name: 'contact-qr' }"
|
||||||
class="inline-block text-md uppercase bg-amber-600 text-white px-4 py-2 rounded-md"
|
class="inline-block text-md uppercase bg-gradient-to-b from-amber-400 to-amber-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Share Your Info
|
Share Your Info
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<button
|
<button
|
||||||
class="block float-right w-fit text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mt-2"
|
class="block float-right w-fit text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md mt-2"
|
||||||
@click="checkLimits()"
|
@click="checkLimits()"
|
||||||
>
|
>
|
||||||
Recheck Limits
|
Recheck Limits
|
||||||
@@ -204,14 +204,14 @@
|
|||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'seed-backup' }"
|
:to="{ name: 'seed-backup' }"
|
||||||
v-if="activeDid"
|
v-if="activeDid"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mb-2 mt-2"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2 mt-2"
|
||||||
>
|
>
|
||||||
Backup Identifier Seed
|
Backup Identifier Seed
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
v-bind:class="computedStartDownloadLinkClassNames()"
|
v-bind:class="computedStartDownloadLinkClassNames()"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mb-6"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-6"
|
||||||
@click="exportDatabase()"
|
@click="exportDatabase()"
|
||||||
>
|
>
|
||||||
Download Settings & Contacts
|
Download Settings & Contacts
|
||||||
@@ -221,7 +221,7 @@
|
|||||||
<a
|
<a
|
||||||
ref="downloadLink"
|
ref="downloadLink"
|
||||||
v-bind:class="computedDownloadLinkClassNames()"
|
v-bind:class="computedDownloadLinkClassNames()"
|
||||||
class="block w-full text-center text-md uppercase bg-green-600 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-green-500 to-green-800 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
If no download happened yet, click again here to download now.
|
If no download happened yet, click again here to download now.
|
||||||
</a>
|
</a>
|
||||||
@@ -302,7 +302,7 @@
|
|||||||
<router-link
|
<router-link
|
||||||
id="switch-identity-link"
|
id="switch-identity-link"
|
||||||
:to="{ name: 'identity-switcher' }"
|
:to="{ name: 'identity-switcher' }"
|
||||||
class="block w-fit text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mb-2"
|
class="block w-fit text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
Switch Identifier
|
Switch Identifier
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -482,7 +482,7 @@
|
|||||||
<input type="file" @change="uploadFile" class="ml-2" />
|
<input type="file" @change="uploadFile" class="ml-2" />
|
||||||
<div v-if="showContactImport()">
|
<div v-if="showContactImport()">
|
||||||
<button
|
<button
|
||||||
class="block text-center text-md uppercase bg-blue-500 text-white px-1.5 py-2 rounded-md mb-6"
|
class="block text-center text-md uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-6"
|
||||||
@click="submitFile()"
|
@click="submitFile()"
|
||||||
>
|
>
|
||||||
Import Settings & Contacts
|
Import Settings & Contacts
|
||||||
@@ -497,7 +497,7 @@
|
|||||||
<button>
|
<button>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'statistics' }"
|
:to="{ name: 'statistics' }"
|
||||||
class="block w-fit text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mb-2"
|
class="block w-fit text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
See Global Animated History of Giving
|
See Global Animated History of Giving
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
|
|
||||||
<div class="columns-3">
|
<div class="columns-3">
|
||||||
<button
|
<button
|
||||||
class="col-span-1 bg-blue-600 text-white px-4 py-2 rounded-md"
|
class="col-span-1 bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-4 py-2 rounded-md"
|
||||||
v-if="
|
v-if="
|
||||||
libsUtil.isGiveRecordTheUserCanConfirm(
|
libsUtil.isGiveRecordTheUserCanConfirm(
|
||||||
veriClaim,
|
veriClaim,
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<button
|
<button
|
||||||
v-if="libsUtil.canFulfillOffer(veriClaim)"
|
v-if="libsUtil.canFulfillOffer(veriClaim)"
|
||||||
@click="openFulfillGiftDialog()"
|
@click="openFulfillGiftDialog()"
|
||||||
class="col-span-1 block w-fit text-center text-md bg-blue-600 text-white px-1.5 py-2 rounded-md"
|
class="col-span-1 block w-fit text-center text-md bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Affirm Delivery
|
Affirm Delivery
|
||||||
<fa icon="hand-holding-heart" class="ml-2 text-white cursor-pointer" />
|
<fa icon="hand-holding-heart" class="ml-2 text-white cursor-pointer" />
|
||||||
@@ -377,7 +377,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<button
|
<button
|
||||||
v-else
|
v-else
|
||||||
class="block w-full text-center text-md uppercase bg-blue-600 text-white px-1.5 py-2 rounded-md mb-2"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2"
|
||||||
@click="showFullClaim(veriClaim.id as string)"
|
@click="showFullClaim(veriClaim.id as string)"
|
||||||
>
|
>
|
||||||
Load Full Claim Details
|
Load Full Claim Details
|
||||||
@@ -390,7 +390,7 @@
|
|||||||
<a
|
<a
|
||||||
:href="apiServer + '/api/claim/' + veriClaim.id"
|
:href="apiServer + '/api/claim/' + veriClaim.id"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="block w-full text-center text-md uppercase bg-blue-600 text-white px-1.5 py-2 rounded-md mb-2"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
View on the Public Server
|
View on the Public Server
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -32,12 +32,12 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<input
|
<input
|
||||||
type="submit"
|
type="submit"
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
value="Add Contact"
|
value="Add Contact"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@click="openDialog()"
|
@click="openDialog()"
|
||||||
class="block w-full text-center text-sm uppercase bg-blue-600 text-white px-3 py-1.5 rounded-md"
|
class="block w-full text-center text-sm uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-3 py-1.5 rounded-md"
|
||||||
>
|
>
|
||||||
<fa icon="gift" class="fa-fw"></fa>
|
<fa icon="gift" class="fa-fw"></fa>
|
||||||
</button>
|
</button>
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
@click="openDialog(contact)"
|
@click="openDialog(contact)"
|
||||||
class="block w-full text-center text-sm uppercase bg-blue-600 text-white px-3 py-1.5 rounded-md"
|
class="block w-full text-center text-sm uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-3 py-1.5 rounded-md"
|
||||||
>
|
>
|
||||||
<fa icon="gift" class="fa-fw"></fa>
|
<fa icon="gift" class="fa-fw"></fa>
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
You aren't sharing your name, so quickly
|
You aren't sharing your name, so quickly
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'new-edit-account' }"
|
:to="{ name: 'new-edit-account' }"
|
||||||
class="bg-blue-500 text-white px-1.5 py-1 rounded-md"
|
class="bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-1 rounded-md"
|
||||||
>
|
>
|
||||||
click here to set it for them.
|
click here to set it for them.
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|||||||
@@ -67,12 +67,12 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<input
|
<input
|
||||||
type="submit"
|
type="submit"
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
value="Look Up Contact"
|
value="Look Up Contact"
|
||||||
/>
|
/>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
<span>
|
<span>
|
||||||
<a
|
<a
|
||||||
@click="showHintsForOnboarding()"
|
@click="showHintsForOnboarding()"
|
||||||
class="text-xs uppercase bg-blue-500 text-white px-1.5 py-1 rounded-md ml-1"
|
class="text-xs uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-1 rounded-md ml-1"
|
||||||
>
|
>
|
||||||
Onboarding Guide
|
Onboarding Guide
|
||||||
</a>
|
</a>
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<div class="mt-4 mb-4 flex items-stretch">
|
<div class="mt-4 mb-4 flex items-stretch">
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'contact-qr' }"
|
:to="{ name: 'contact-qr' }"
|
||||||
class="flex items-center bg-slate-500 text-white px-1.5 py-1 mr-1 rounded-md"
|
class="flex items-center bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-1 mr-1 rounded-md"
|
||||||
>
|
>
|
||||||
<fa icon="qrcode" class="fa-fw text-2xl" />
|
<fa icon="qrcode" class="fa-fw text-2xl" />
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
<br />
|
<br />
|
||||||
(Only most recent hours included. To see more, click
|
(Only most recent hours included. To see more, click
|
||||||
<span
|
<span
|
||||||
class="text-sm uppercase bg-slate-500 text-white px-1 py-1 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1 py-1 rounded-md"
|
||||||
>
|
>
|
||||||
<fa icon="file-lines" class="fa-fw" />
|
<fa icon="file-lines" class="fa-fw" />
|
||||||
</span>
|
</span>
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
></EntityIcon>
|
></EntityIcon>
|
||||||
{{ contact.name || AppString.NO_CONTACT_NAME }}
|
{{ contact.name || AppString.NO_CONTACT_NAME }}
|
||||||
<button
|
<button
|
||||||
class="text-sm uppercase bg-slate-500 text-white px-1 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1 rounded-md"
|
||||||
@click="
|
@click="
|
||||||
contactEdit = contact;
|
contactEdit = contact;
|
||||||
contactNewName = contact.name;
|
contactNewName = contact.name;
|
||||||
@@ -137,7 +137,7 @@
|
|||||||
<div v-if="activeDid">
|
<div v-if="activeDid">
|
||||||
<button
|
<button
|
||||||
v-if="contact.seesMe"
|
v-if="contact.seesMe"
|
||||||
class="text-sm uppercase bg-slate-500 text-white mx-0.5 my-0.5 px-2 py-1.5 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mx-0.5 my-0.5 px-2 py-1.5 rounded-md"
|
||||||
@click="setVisibility(contact, false, true)"
|
@click="setVisibility(contact, false, true)"
|
||||||
title="They can see you"
|
title="They can see you"
|
||||||
>
|
>
|
||||||
@@ -145,14 +145,14 @@
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
v-else
|
v-else
|
||||||
class="text-sm uppercase bg-slate-500 text-white mx-0.5 my-0.5 px-2 py-1.5 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mx-0.5 my-0.5 px-2 py-1.5 rounded-md"
|
||||||
@click="setVisibility(contact, true, true)"
|
@click="setVisibility(contact, true, true)"
|
||||||
title="They cannot see you"
|
title="They cannot see you"
|
||||||
>
|
>
|
||||||
<fa icon="eye-slash" class="fa-fw" />
|
<fa icon="eye-slash" class="fa-fw" />
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="text-sm uppercase bg-slate-500 text-white mx-0.5 my-0.5 px-2 py-1.5 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mx-0.5 my-0.5 px-2 py-1.5 rounded-md"
|
||||||
@click="checkVisibility(contact)"
|
@click="checkVisibility(contact)"
|
||||||
title="Check Visibility"
|
title="Check Visibility"
|
||||||
v-if="activeDid"
|
v-if="activeDid"
|
||||||
@@ -161,7 +161,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@click="register(contact)"
|
@click="register(contact)"
|
||||||
class="text-sm uppercase bg-slate-500 text-white ml-6 px-2 py-1.5 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white ml-6 px-2 py-1.5 rounded-md"
|
||||||
v-if="activeDid"
|
v-if="activeDid"
|
||||||
title="Registration"
|
title="Registration"
|
||||||
>
|
>
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
|
|
||||||
<button
|
<button
|
||||||
@click="deleteContact(contact)"
|
@click="deleteContact(contact)"
|
||||||
class="text-sm uppercase bg-red-600 text-white ml-24 px-2 py-1.5 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-rose-500 to-rose-800 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white ml-24 px-2 py-1.5 rounded-md"
|
||||||
title="Delete"
|
title="Delete"
|
||||||
>
|
>
|
||||||
<fa icon="trash-can" class="fa-fw" />
|
<fa icon="trash-can" class="fa-fw" />
|
||||||
@@ -187,7 +187,7 @@
|
|||||||
class="ml-auto flex gap-1.5"
|
class="ml-auto flex gap-1.5"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="text-sm bg-blue-600 text-white px-2 py-1.5 rounded-l-md"
|
class="text-sm bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-1.5 rounded-l-md"
|
||||||
@click="onClickAddGive(activeDid, contact.did)"
|
@click="onClickAddGive(activeDid, contact.did)"
|
||||||
:title="givenByMeDescriptions[contact.did] || ''"
|
:title="givenByMeDescriptions[contact.did] || ''"
|
||||||
>
|
>
|
||||||
@@ -229,7 +229,7 @@
|
|||||||
name: 'contact-amounts',
|
name: 'contact-amounts',
|
||||||
query: { contactDid: contact.did },
|
query: { contactDid: contact.did },
|
||||||
}"
|
}"
|
||||||
class="text-sm uppercase bg-slate-500 text-white px-2 py-1.5 rounded-md"
|
class="text-sm uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-1.5 rounded-md"
|
||||||
title="See more given activity"
|
title="See more given activity"
|
||||||
>
|
>
|
||||||
<fa icon="file-lines" class="fa-fw" />
|
<fa icon="file-lines" class="fa-fw" />
|
||||||
|
|||||||
@@ -65,7 +65,7 @@
|
|||||||
<span v-else>
|
<span v-else>
|
||||||
<fa
|
<fa
|
||||||
icon="camera"
|
icon="camera"
|
||||||
class="bg-blue-500 text-white px-2 py-2 rounded-md"
|
class="bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-2 rounded-md"
|
||||||
@click="openPhotoDialog"
|
@click="openPhotoDialog"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
@@ -94,13 +94,13 @@
|
|||||||
Sign & Send to publish to the world
|
Sign & Send to publish to the world
|
||||||
</p>
|
</p>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
@click="confirm"
|
@click="confirm"
|
||||||
>
|
>
|
||||||
Sign & Send
|
Sign & Send
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="cancel"
|
@click="cancel"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
If this works then you're all set.
|
If this works then you're all set.
|
||||||
<button
|
<button
|
||||||
@click="sendTestWebPushMessage(true)"
|
@click="sendTestWebPushMessage(true)"
|
||||||
class="block w-full text-center text-md bg-slate-500 text-white px-1.5 py-2 rounded-md mb-2"
|
class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
Send Yourself a Test Web Push Message (Through Push Server but
|
Send Yourself a Test Web Push Message (Through Push Server but
|
||||||
Skipping Client Filter)
|
Skipping Client Filter)
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
<h2 class="text-xl font-semibold mt-4">Tests</h2>
|
<h2 class="text-xl font-semibold mt-4">Tests</h2>
|
||||||
<button
|
<button
|
||||||
@click="showTestNotification()"
|
@click="showTestNotification()"
|
||||||
class="block w-full text-center text-md bg-slate-500 text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
||||||
>
|
>
|
||||||
Send Test Notification Directly to Device (Not Through Push Server)
|
Send Test Notification Directly to Device (Not Through Push Server)
|
||||||
</button>
|
</button>
|
||||||
@@ -246,7 +246,7 @@
|
|||||||
|
|
||||||
<button
|
<button
|
||||||
@click="alertWebPushSubscription()"
|
@click="alertWebPushSubscription()"
|
||||||
class="block w-full text-center text-md bg-slate-500 text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
||||||
>
|
>
|
||||||
Show Web Push Subscription Info
|
Show Web Push Subscription Info
|
||||||
</button>
|
</button>
|
||||||
@@ -259,7 +259,7 @@
|
|||||||
|
|
||||||
<button
|
<button
|
||||||
@click="sendTestWebPushMessage(true)"
|
@click="sendTestWebPushMessage(true)"
|
||||||
class="block w-full text-center text-md bg-slate-500 text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
||||||
>
|
>
|
||||||
Send Yourself a Test Web Push Message (Through Push Server but Skipping
|
Send Yourself a Test Web Push Message (Through Push Server but Skipping
|
||||||
Client Filter)
|
Client Filter)
|
||||||
@@ -272,7 +272,7 @@
|
|||||||
|
|
||||||
<button
|
<button
|
||||||
@click="sendTestWebPushMessage()"
|
@click="sendTestWebPushMessage()"
|
||||||
class="block w-full text-center text-md bg-slate-500 text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
class="block w-full text-center text-md bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-4 mb-2"
|
||||||
>
|
>
|
||||||
Send Yourself a Test Web Push Message (Through Push Server and Client
|
Send Yourself a Test Web Push Message (Through Push Server and Client
|
||||||
Filter)
|
Filter)
|
||||||
|
|||||||
@@ -62,7 +62,7 @@
|
|||||||
<div v-if="showShortcutBvc" class="mb-4">
|
<div v-if="showShortcutBvc" class="mb-4">
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'quick-action-bvc' }"
|
:to="{ name: 'quick-action-bvc' }"
|
||||||
class="block text-center text-md font-bold uppercase bg-blue-500 text-white mt-2 px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Bountiful Voluntaryist Community Actions</router-link
|
Bountiful Voluntaryist Community Actions</router-link
|
||||||
>
|
>
|
||||||
@@ -85,7 +85,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'start' }"
|
:to="{ name: 'start' }"
|
||||||
class="block text-center text-md font-bold uppercase bg-blue-500 text-white mt-2 px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Create An Identifier</router-link
|
Create An Identifier</router-link
|
||||||
>
|
>
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
giving.
|
giving.
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'contact-qr' }"
|
:to="{ name: 'contact-qr' }"
|
||||||
class="block text-center text-md font-bold uppercase bg-blue-500 text-white mt-2 px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Show Them Your Identifier Info</router-link
|
Show Them Your Identifier Info</router-link
|
||||||
>
|
>
|
||||||
@@ -152,13 +152,13 @@
|
|||||||
<router-link
|
<router-link
|
||||||
v-if="allContacts.length >= 7"
|
v-if="allContacts.length >= 7"
|
||||||
:to="{ name: 'contact-gives' }"
|
:to="{ name: 'contact-gives' }"
|
||||||
class="block text-center text-md font-bold uppercase bg-slate-500 text-white px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Choose From All Contacts
|
Choose From All Contacts
|
||||||
</router-link>
|
</router-link>
|
||||||
<button
|
<button
|
||||||
@click="openGiftedPrompts()"
|
@click="openGiftedPrompts()"
|
||||||
class="block text-center text-md font-bold bg-slate-500 text-white px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Ideas...
|
Ideas...
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -65,13 +65,13 @@
|
|||||||
<router-link
|
<router-link
|
||||||
id="start-link"
|
id="start-link"
|
||||||
:to="{ name: 'start' }"
|
:to="{ name: 'start' }"
|
||||||
class="block text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
Add Another Identity…
|
Add Another Identity…
|
||||||
</router-link>
|
</router-link>
|
||||||
<a
|
<a
|
||||||
href="#"
|
href="#"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mb-8"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mb-8"
|
||||||
@click="switchAccount('0')"
|
@click="switchAccount('0')"
|
||||||
>
|
>
|
||||||
No Identity
|
No Identity
|
||||||
|
|||||||
@@ -58,14 +58,14 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<button
|
<button
|
||||||
@click="fromMnemonic()"
|
@click="fromMnemonic()"
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
Import
|
Import
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@click="onCancelClick()"
|
@click="onCancelClick()"
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -51,14 +51,14 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<button
|
<button
|
||||||
@click="incrementDerivation()"
|
@click="incrementDerivation()"
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
>
|
>
|
||||||
Increment and Import
|
Increment and Import
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@click="onCancelClick()"
|
@click="onCancelClick()"
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
@click="onClickSaveChanges()"
|
@click="onClickSaveChanges()"
|
||||||
>
|
>
|
||||||
Save Changes
|
Save Changes
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
<!-- SHOW ME instead while processing saving changes -->
|
<!-- SHOW ME instead while processing saving changes -->
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="onClickCancel()"
|
@click="onClickCancel()"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
|
|||||||
@@ -106,7 +106,7 @@
|
|||||||
<div class="mt-8">
|
<div class="mt-8">
|
||||||
<button
|
<button
|
||||||
:disabled="isHiddenSave"
|
:disabled="isHiddenSave"
|
||||||
class="block w-full text-center text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md mb-2"
|
class="block w-full text-center text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md mb-2"
|
||||||
@click="onSaveProjectClick()"
|
@click="onSaveProjectClick()"
|
||||||
>
|
>
|
||||||
<!-- SHOW if in idle state -->
|
<!-- SHOW if in idle state -->
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="onCancelClick()"
|
@click="onCancelClick()"
|
||||||
>
|
>
|
||||||
Cancel
|
Cancel
|
||||||
|
|||||||
@@ -105,7 +105,7 @@
|
|||||||
<button
|
<button
|
||||||
v-if="activeDid === issuer || activeDid === agentDid"
|
v-if="activeDid === issuer || activeDid === agentDid"
|
||||||
type="button"
|
type="button"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="onEditClick()"
|
@click="onEditClick()"
|
||||||
>
|
>
|
||||||
Edit
|
Edit
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<button
|
<button
|
||||||
@click="openOfferDialog()"
|
@click="openOfferDialog()"
|
||||||
class="block w-full text-lg font-bold uppercase bg-blue-600 text-white px-2 py-3 rounded-md"
|
class="block w-full text-lg font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Offer (maybe with conditions)...
|
Offer (maybe with conditions)...
|
||||||
</button>
|
</button>
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
<a
|
<a
|
||||||
v-if="allContacts.length >= 7"
|
v-if="allContacts.length >= 7"
|
||||||
@click="onClickAllContactsGifting()"
|
@click="onClickAllContactsGifting()"
|
||||||
class="block text-center text-md font-bold uppercase bg-slate-500 text-white px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Show More Contacts…
|
Show More Contacts…
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -49,14 +49,14 @@
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
@click="record()"
|
@click="record()"
|
||||||
class="block text-center text-md font-bold bg-blue-500 text-white px-2 py-3 rounded-md w-56"
|
class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md w-56"
|
||||||
>
|
>
|
||||||
Sign & Send
|
Sign & Send
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="flex justify-center mt-4">
|
<div v-else class="flex justify-center mt-4">
|
||||||
<button
|
<button
|
||||||
class="block text-center text-md font-bold bg-slate-500 text-white px-2 py-3 rounded-md w-56"
|
class="block text-center text-md font-bold bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md w-56"
|
||||||
>
|
>
|
||||||
Select Your Actions
|
Select Your Actions
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -109,14 +109,14 @@
|
|||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
@click="record()"
|
@click="record()"
|
||||||
class="block text-center text-md font-bold bg-blue-500 text-white px-2 py-3 rounded-md w-56"
|
class="block text-center text-md font-bold bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md w-56"
|
||||||
>
|
>
|
||||||
Sign & Send
|
Sign & Send
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-else class="flex justify-center mt-4">
|
<div v-else class="flex justify-center mt-4">
|
||||||
<button
|
<button
|
||||||
class="block text-center text-md font-bold bg-slate-500 text-white px-2 py-3 rounded-md w-56"
|
class="block text-center text-md font-bold bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md w-56"
|
||||||
>
|
>
|
||||||
Choose What To Confirm
|
Choose What To Confirm
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -22,13 +22,13 @@
|
|||||||
<div>
|
<div>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'quick-action-bvc-begin' }"
|
:to="{ name: 'quick-action-bvc-begin' }"
|
||||||
class="block text-center text-md font-bold uppercase bg-blue-500 text-white mt-2 px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Beginning of Meeting
|
Beginning of Meeting
|
||||||
</router-link>
|
</router-link>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'quick-action-bvc-end' }"
|
:to="{ name: 'quick-action-bvc-end' }"
|
||||||
class="block text-center text-md font-bold uppercase bg-blue-500 text-white mt-2 px-2 py-3 rounded-md"
|
class="block text-center text-md font-bold uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
End of Meeting
|
End of Meeting
|
||||||
</router-link>
|
</router-link>
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
<span>
|
<span>
|
||||||
<router-link
|
<router-link
|
||||||
:to="{ name: 'help' }"
|
:to="{ name: 'help' }"
|
||||||
class="text-xs uppercase bg-blue-500 text-white px-1.5 py-1 rounded-md ml-1"
|
class="text-xs uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-1 rounded-md ml-1"
|
||||||
>
|
>
|
||||||
Help
|
Help
|
||||||
</router-link>
|
</router-link>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
<div class="bg-slate-100 rounded-md overflow-hidden p-4 mb-4">
|
<div class="bg-slate-100 rounded-md overflow-hidden p-4 mb-4">
|
||||||
<button
|
<button
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md"
|
||||||
@click="showSeedPhrase"
|
@click="showSeedPhrase"
|
||||||
>
|
>
|
||||||
Reveal my Seed Phrase
|
Reveal my Seed Phrase
|
||||||
|
|||||||
@@ -36,20 +36,20 @@
|
|||||||
</p>
|
</p>
|
||||||
<a
|
<a
|
||||||
@click="onClickYes()"
|
@click="onClickYes()"
|
||||||
class="block w-full text-center text-lg uppercase bg-blue-600 text-white px-2 py-3 rounded-md"
|
class="block w-full text-center text-lg uppercase bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-3 rounded-md"
|
||||||
>
|
>
|
||||||
Yes, generate one
|
Yes, generate one
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
@click="onClickNo()"
|
@click="onClickNo()"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mt-2"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-2"
|
||||||
>
|
>
|
||||||
No, I have a seed
|
No, I have a seed
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
v-if="numAccounts > 0"
|
v-if="numAccounts > 0"
|
||||||
@click="onClickDerive()"
|
@click="onClickDerive()"
|
||||||
class="block w-full text-center text-md uppercase bg-slate-500 text-white px-1.5 py-2 rounded-md mt-2"
|
class="block w-full text-center text-md uppercase bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-1.5 py-2 rounded-md mt-2"
|
||||||
>
|
>
|
||||||
Derive new address from existing seed
|
Derive new address from existing seed
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user