From 6dc0c2cd58fcd20c4676b37a80bcf98ea3c79650 Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sat, 23 Mar 2024 01:32:55 -0600
Subject: [PATCH 01/31] add a camera-switch button
---
src/components/GiftedDialog.vue | 2 +-
src/components/GiftedPhotoDialog.vue | 37 ++++++++++++++++++++++------
src/views/HelpView.vue | 4 +--
3 files changed, 32 insertions(+), 11 deletions(-)
diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue
index cfb7f50a..386f7621 100644
--- a/src/components/GiftedDialog.vue
+++ b/src/components/GiftedDialog.vue
@@ -53,7 +53,7 @@
}"
class="text-blue-500"
>
- More Options
+ Photo, ...
diff --git a/src/components/GiftedPhotoDialog.vue b/src/components/GiftedPhotoDialog.vue
index 43d4cd47..93dcb896 100644
--- a/src/components/GiftedPhotoDialog.vue
+++ b/src/components/GiftedPhotoDialog.vue
@@ -48,7 +48,12 @@
Camera "resolution" doesn't change how it shows on screen but rather stretches the result, eg the following which just stretches it vertically:
:resolution="{ width: 375, height: 812 }"
-->
-
+
@@ -59,6 +64,14 @@
+
+
+
+
+
@@ -80,12 +93,11 @@ import { accessToken } from "@/libs/crypto";
export default class GiftedPhotoDialog extends Vue {
$notify!: (notification: NotificationIface, timeout?: number) => void;
+ activeDeviceNumber = 0;
activeDid = "";
blob: Blob | null = null;
+ numDevices = 0;
setImage: (arg: string) => void = () => {};
- imageHeight?: number = window.innerHeight / 2;
- imageWidth?: number = window.innerWidth / 2;
- imageWarning = ".";
uploading = false;
visible = false;
@@ -129,6 +141,20 @@ export default class GiftedPhotoDialog extends Vue {
this.blob = null;
}
+ async cameraStarted() {
+ const cameraComponent = this.$refs.camera as InstanceType;
+ if (cameraComponent) {
+ this.numDevices = (await cameraComponent.devices(["videoinput"])).length;
+ }
+ }
+
+ async switchCamera() {
+ const cameraComponent = this.$refs.camera as InstanceType;
+ this.activeDeviceNumber = (this.activeDeviceNumber + 1) % this.numDevices;
+ const devices = await cameraComponent?.devices(["videoinput"]);
+ cameraComponent?.changeCamera(devices[this.activeDeviceNumber].deviceId);
+ }
+
async takeImage(/* payload: MouseEvent */) {
const cameraComponent = this.$refs.camera as InstanceType;
@@ -200,7 +226,6 @@ export default class GiftedPhotoDialog extends Vue {
async cameraClicked() {
- console.log("camera_button clicked");
const video = document.querySelector("#video");
const stream = await navigator.mediaDevices.getUserMedia({
video: true,
@@ -211,7 +236,6 @@ export default class GiftedPhotoDialog extends Vue {
}
}
photoSnapped() {
- console.log("snap_photo clicked");
const video = document.querySelector("#video");
const canvas = document.querySelector("#canvas");
if (
@@ -232,7 +256,6 @@ export default class GiftedPhotoDialog extends Vue {
// data url of the image
const image_data_url = canvas?.toDataURL("image/jpeg");
- console.log(image_data_url);
}
}
****/
diff --git a/src/views/HelpView.vue b/src/views/HelpView.vue
index 8e47b7c8..0db68e22 100644
--- a/src/views/HelpView.vue
+++ b/src/views/HelpView.vue
@@ -198,9 +198,7 @@
Chrome:
- clear here
+ Clear at chrome://settings/content/all and
also clear under dev tools Application
From 2b8f9579f1f4c39c508510de285de1990041e0fb Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sat, 23 Mar 2024 02:31:44 -0600
Subject: [PATCH 02/31] fix so that project agent & location removals get saved
---
src/views/NewEditProjectView.vue | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/views/NewEditProjectView.vue b/src/views/NewEditProjectView.vue
index cceaaafb..cab2b875 100644
--- a/src/views/NewEditProjectView.vue
+++ b/src/views/NewEditProjectView.vue
@@ -265,6 +265,8 @@ export default class NewEditProjectView extends Vue {
vcClaim.agent = {
identifier: this.agentDid,
};
+ } else {
+ delete vcClaim.agent;
}
if (this.includeLocation) {
vcClaim.location = {
@@ -274,6 +276,8 @@ export default class NewEditProjectView extends Vue {
longitude: this.longitude,
},
};
+ } else {
+ delete vcClaim.location;
}
// Make a payload for the claim
const vcPayload = {
From 28754bdfb1e11aa221dd49a5dce4219b69cf6a9d Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sat, 23 Mar 2024 02:41:25 -0600
Subject: [PATCH 03/31] bump version to 0.3.5
---
CHANGELOG.md | 2 +-
package-lock.json | 4 ++--
package.json | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cccdeea3..73252b8a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Nothing
-## [0.3.4] - 2024.03.21
+## [0.3.5] - 2024.03.23
### Added
- Photo on gift records
### Fixed
diff --git a/package-lock.json b/package-lock.json
index 1d576d60..cdebbe06 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "TimeSafari",
- "version": "0.3.4",
+ "version": "0.3.5",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "TimeSafari",
- "version": "0.3.4",
+ "version": "0.3.5",
"dependencies": {
"@dicebear/collection": "^5.3.5",
"@dicebear/core": "^5.3.5",
diff --git a/package.json b/package.json
index 2dff0e24..97cf9196 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "TimeSafari",
- "version": "0.3.4",
+ "version": "0.3.5",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
From 40d12b1f9c42e29f1a0b8362aeee812350b4c636 Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sat, 23 Mar 2024 16:31:23 -0600
Subject: [PATCH 04/31] add button on photo to switch to mirror mode
---
src/components/GiftedPhotoDialog.vue | 43 ++++++++++++++++++++++++----
src/main.ts | 2 ++
2 files changed, 39 insertions(+), 6 deletions(-)
diff --git a/src/components/GiftedPhotoDialog.vue b/src/components/GiftedPhotoDialog.vue
index 93dcb896..35f121da 100644
--- a/src/components/GiftedPhotoDialog.vue
+++ b/src/components/GiftedPhotoDialog.vue
@@ -43,7 +43,7 @@
-
+
+
+
+
- Cancel
+ {{ notification.onYes ? "Cancel" : "Close" }}
diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue
index 1a8d8be3..57cf3491 100644
--- a/src/components/GiftedDialog.vue
+++ b/src/components/GiftedDialog.vue
@@ -59,6 +59,11 @@
Sign & Send to publish to the world
+
diff --git a/src/libs/util.ts b/src/libs/util.ts
index 99c51ec1..6c4a5c01 100644
--- a/src/libs/util.ts
+++ b/src/libs/util.ts
@@ -20,6 +20,9 @@ const Buffer = require("buffer/").Buffer;
export const ONBOARD_MESSAGE =
"1) Read through all their yellow prompts. 2) Add them to your Contacts by scanning with the QR icon that is by the input box. 3) Click the person icon to register them. 4) Show them your QR so they'll scan you. 5) Have them enable notifications.";
+export const PRIVACY_MESSAGE =
+ "The data you send be visible to the world -- except: your IDs and the IDs of anyone you tag will stay private, only visible to those you allow.";
+
/* eslint-disable prettier/prettier */
export const UNIT_SHORT: Record = {
"BTC": "BTC",
diff --git a/src/views/GiftedDetails.vue b/src/views/GiftedDetails.vue
index 1405fbac..d2cb8f16 100644
--- a/src/views/GiftedDetails.vue
+++ b/src/views/GiftedDetails.vue
@@ -92,6 +92,11 @@
Sign & Send to publish to the world
+
From be2154f8473263c0275c37d0beca6374f9acff98 Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sat, 23 Mar 2024 19:07:53 -0600
Subject: [PATCH 07/31] change icon for detail view (from circle-info to
file-lines)
---
src/views/HomeView.vue | 2 +-
src/views/ProjectViewView.vue | 6 +++---
src/views/ProjectsView.vue | 2 +-
src/views/QuickActionBvcEndView.vue | 2 +-
4 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index fb5b030f..4edf0b99 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -207,7 +207,7 @@
{{ giveDescription(record) }}
diff --git a/src/views/ProjectViewView.vue b/src/views/ProjectViewView.vue
index 1968953d..c7da06cc 100644
--- a/src/views/ProjectViewView.vue
+++ b/src/views/ProjectViewView.vue
@@ -98,7 +98,7 @@
-
+
@@ -230,7 +230,7 @@
@click="onClickLoadClaim(offer.jwtId as string)"
class="cursor-pointer"
>
-
+
-
+
diff --git a/src/views/ProjectsView.vue b/src/views/ProjectsView.vue
index 48c7a718..ad0e930b 100644
--- a/src/views/ProjectsView.vue
+++ b/src/views/ProjectsView.vue
@@ -167,7 +167,7 @@
diff --git a/src/views/QuickActionBvcEndView.vue b/src/views/QuickActionBvcEndView.vue
index ba0dc770..930509f5 100644
--- a/src/views/QuickActionBvcEndView.vue
+++ b/src/views/QuickActionBvcEndView.vue
@@ -60,7 +60,7 @@
}}
From 0e2c5af16ead6625b27069a2aa25d3077625794a Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sun, 24 Mar 2024 17:01:53 -0600
Subject: [PATCH 08/31] add onboarding help instructions as separate page
---
README.md | 2 +-
src/libs/util.ts | 5 ---
src/router/index.ts | 20 ++++++---
src/views/ContactsView.vue | 51 +++++++++--------------
src/views/HelpOnboardingView.vue | 69 ++++++++++++++++++++++++++++++++
src/views/HelpView.vue | 17 +-------
6 files changed, 106 insertions(+), 58 deletions(-)
create mode 100644 src/views/HelpOnboardingView.vue
diff --git a/README.md b/README.md
index abb43f1a..dd2e6a0e 100644
--- a/README.md
+++ b/README.md
@@ -128,7 +128,7 @@ To add an icon, add to main.ts and reference with `fa` element and `icon` attrib
* Clear cache for site. (In Chrome, go to `chrome://settings/cookies` and "all site data and permissions"; in Firefox, go to `about:preferences` and search for "cache" then "Manage Data", and also manually remove the IndexedDB data if the DBs still show.)
* Clear notification permission. (In Chrome, go to `chrome://settings/content/notifications`; in Firefox, go to `about:preferences` and search for "notifications".)
-* Unregister service worker. (In Chrome, go to `chrome://serviceworker-internals/`; in Firefox, go to `about:serviceworkers`.)
+* Unregister service worker. (In Chrome, go to `chrome://serviceworker-internals`; in Firefox, go to `about:serviceworkers`.)
* Clear Cache Storage manually, possibly deleting the DB. (In Chrome, in dev tools under Application; in Firefox, in dev tools under Storage.)
(If you find more, add them to the HelpNotificationsView.vue file.)
diff --git a/src/libs/util.ts b/src/libs/util.ts
index 6c4a5c01..1a613df8 100644
--- a/src/libs/util.ts
+++ b/src/libs/util.ts
@@ -15,11 +15,6 @@ import * as serverUtil from "@/libs/endorserServer";
// eslint-disable-next-line @typescript-eslint/no-var-requires
const Buffer = require("buffer/").Buffer;
-// If you edit this, check that the numbers still line up on the side in the alert (on mobile, too),
-// and make sure they can take all actions while the notification shows.
-export const ONBOARD_MESSAGE =
- "1) Read through all their yellow prompts. 2) Add them to your Contacts by scanning with the QR icon that is by the input box. 3) Click the person icon to register them. 4) Show them your QR so they'll scan you. 5) Have them enable notifications.";
-
export const PRIVACY_MESSAGE =
"The data you send be visible to the world -- except: your IDs and the IDs of anyone you tag will stay private, only visible to those you allow.";
diff --git a/src/router/index.ts b/src/router/index.ts
index 4f3e9fe4..0496a37d 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -98,12 +98,6 @@ const routes: Array = [
component: () =>
import(/* webpackChunkName: "help" */ "../views/HelpView.vue"),
},
- {
- path: "/",
- name: "home",
- component: () =>
- import(/* webpackChunkName: "home" */ "../views/HomeView.vue"),
- },
{
path: "/help-notifications",
name: "help-notifications",
@@ -112,6 +106,20 @@ const routes: Array = [
/* webpackChunkName: "help-notifications" */ "../views/HelpNotificationsView.vue"
),
},
+ {
+ path: "/help-onboarding",
+ name: "help-onboarding",
+ component: () =>
+ import(
+ /* webpackChunkName: "help-onboarding" */ "../views/HelpOnboardingView.vue"
+ ),
+ },
+ {
+ path: "/",
+ name: "home",
+ component: () =>
+ import(/* webpackChunkName: "home" */ "../views/HomeView.vue"),
+ },
{
path: "/identity-switcher",
name: "identity-switcher",
diff --git a/src/views/ContactsView.vue b/src/views/ContactsView.vue
index b866e5e2..8384163d 100644
--- a/src/views/ContactsView.vue
+++ b/src/views/ContactsView.vue
@@ -10,7 +10,8 @@
Onboarding Guide
@@ -510,18 +511,6 @@ export default class ContactsView extends Vue {
}
}
- showHintsForOnboarding() {
- this.$notify(
- {
- group: "alert",
- type: "info",
- title: "Onboard Someone",
- text: libsUtil.ONBOARD_MESSAGE,
- },
- -1,
- );
- }
-
async onClickNewContact(): Promise {
if (!this.contactInput) {
this.$notify(
@@ -531,7 +520,7 @@ export default class ContactsView extends Vue {
title: "No Contact",
text: "There was no contact info to add.",
},
- -1,
+ 3000,
);
return;
}
@@ -559,7 +548,7 @@ export default class ContactsView extends Vue {
title: "Contacts Added",
text: "Each contact was added. Nothing was sent to the server.",
},
- -1, // keeping it up so that the "visibility" message is seen
+ 3000, // keeping it up so that the "visibility" message is seen
);
} catch (e) {
this.$notify(
@@ -664,7 +653,7 @@ export default class ContactsView extends Vue {
title: "No Contact Info",
text: "The contact info could not be parsed.",
},
- -1,
+ 3000,
);
return;
} else {
@@ -686,7 +675,7 @@ export default class ContactsView extends Vue {
title: "Incomplete Contact",
text: "Cannot add a contact without a DID.",
},
- -1,
+ 5000,
);
return;
}
@@ -698,7 +687,7 @@ export default class ContactsView extends Vue {
title: "Invalid DID",
text: "The DID is not valid. It must begin with 'did:'",
},
- -1,
+ 5000,
);
return;
}
@@ -737,7 +726,7 @@ export default class ContactsView extends Vue {
title: "Contact Added",
text: addedMessage,
},
- -1, // keeping it up so that the "visibility" message is seen
+ 3000,
);
})
.catch((err) => {
@@ -853,7 +842,7 @@ export default class ContactsView extends Vue {
title: "Registration Still Unknown",
text: message,
},
- -1,
+ 5000,
);
} else if (resp.data?.success?.handleId) {
contact.registered = true;
@@ -892,7 +881,7 @@ export default class ContactsView extends Vue {
title: "Registration Error",
text: userMessage,
},
- -1,
+ 5000,
);
}
}
@@ -933,7 +922,7 @@ export default class ContactsView extends Vue {
(visibility ? "" : "not ") +
"see your activity.",
},
- -1,
+ 3000,
);
}
contact.seesMe = visibility;
@@ -953,7 +942,7 @@ export default class ContactsView extends Vue {
title: "Error Setting Visibility",
text: message,
},
- -1,
+ 5000,
);
}
} catch (err) {
@@ -965,7 +954,7 @@ export default class ContactsView extends Vue {
title: "Error Setting Visibility",
text: "Check connectivity and try again.",
},
- -1,
+ 5000,
);
}
}
@@ -997,7 +986,7 @@ export default class ContactsView extends Vue {
(visibility ? "" : "not ") +
"see your activity.",
},
- -1,
+ 3000,
);
} else {
console.error("Got bad server response checking visibility:", resp);
@@ -1009,7 +998,7 @@ export default class ContactsView extends Vue {
title: "Error Checking Visibility",
text: message,
},
- -1,
+ 5000,
);
}
} catch (err) {
@@ -1021,7 +1010,7 @@ export default class ContactsView extends Vue {
title: "Error Checking Visibility",
text: "Check connectivity and try again.",
},
- -1,
+ 3000,
);
}
}
@@ -1069,7 +1058,7 @@ export default class ContactsView extends Vue {
title: "Input Error",
text: "This is not a valid number of hours: " + this.hourInput,
},
- -1,
+ 3000,
);
} else if (parseFloat(this.hourInput) == 0 && !this.hourDescriptionInput) {
this.$notify(
@@ -1079,7 +1068,7 @@ export default class ContactsView extends Vue {
title: "Input Error",
text: "Giving no hours or description does nothing.",
},
- -1,
+ 3000,
);
} else if (!identity) {
this.$notify(
@@ -1089,7 +1078,7 @@ export default class ContactsView extends Vue {
title: "Status Error",
text: "No identifier is available.",
},
- -1,
+ 3000,
);
} else {
// ask to confirm amount
@@ -1218,7 +1207,7 @@ export default class ContactsView extends Vue {
title: "Error Sending Give",
text: userMessage,
},
- -1,
+ 5000,
);
}
}
diff --git a/src/views/HelpOnboardingView.vue b/src/views/HelpOnboardingView.vue
new file mode 100644
index 00000000..e6c6b116
--- /dev/null
+++ b/src/views/HelpOnboardingView.vue
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+ Time Safari Onboarding Instructions
+
+
+
+
+
+
Install
+
+
+ 1) Have them visit TimeSafari.app in a browser, preferably Chrome or Safari.
+
+
+ 2) Have them "Install" the site to their desktop.
+
+
+
+
Add Contact & Register
+
+
+ 3) Have them follow their yellow prompts.
+
+
+ 4) Add them to your contacts
+
+
+ 5) Register them
+
+
+ 6) Add yourself to their contacts
+
+
+
+
Enable Notifications
+
+
+ 7) Enable notifications from
+
+
+
+
Discuss Backups
+
+
+ 8) Exporting backups are important if they lose their phone --- especially for the Identifier Seed!
+
+
+
+
+
+
+
+
+
diff --git a/src/views/HelpView.vue b/src/views/HelpView.vue
index 79571b6f..30cb013d 100644
--- a/src/views/HelpView.vue
+++ b/src/views/HelpView.vue
@@ -83,9 +83,9 @@
How do I add someone else?
-
+
Click here to show an alert with the steps.
-
+
To start scanning, go
here.
@@ -376,7 +376,6 @@ import { Component, Vue } from "vue-facing-decorator";
import * as Package from "../../package.json";
import QuickNav from "@/components/QuickNav.vue";
import { NotificationIface } from "@/constants/app";
-import { ONBOARD_MESSAGE } from "@/libs/util";
@Component({ components: { QuickNav } })
export default class Help extends Vue {
@@ -384,17 +383,5 @@ export default class Help extends Vue {
package = Package;
commitHash = process.env.VUE_APP_GIT_HASH;
-
- showOnboardInfo() {
- this.$notify(
- {
- group: "alert",
- type: "info",
- title: "Onboard Someone",
- text: ONBOARD_MESSAGE,
- },
- -1,
- );
- }
}
From 35455e66480c204e57591cda37839614ba6cc1e7 Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sun, 24 Mar 2024 18:27:06 -0600
Subject: [PATCH 09/31] fix check for more camera-device options
---
src/components/GiftedPhotoDialog.vue | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/components/GiftedPhotoDialog.vue b/src/components/GiftedPhotoDialog.vue
index 35f121da..8fb17bf1 100644
--- a/src/components/GiftedPhotoDialog.vue
+++ b/src/components/GiftedPhotoDialog.vue
@@ -74,7 +74,7 @@
-
+
Date: Sun, 24 Mar 2024 18:28:42 -0600
Subject: [PATCH 10/31] bump to version 0.3.6
---
CHANGELOG.md | 11 ++++++++++-
package-lock.json | 4 ++--
package.json | 2 +-
project.task.yaml | 3 +--
4 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 73252b8a..fff51476 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Nothing
-## [0.3.5] - 2024.03.23
+## [0.3.6] - 2024.03.24
+### Added
+- Button to mirror photo during video
+- More detailed onboarding help screen
+- Public-data blurb
+### Changed in DB or environment
+- Nothing
+
+
+## [0.3.5] - 2024.03.23 - 28754bdfb1e11aa221dd49a5dce4219b69cf6a9d
### Added
- Photo on gift records
### Fixed
diff --git a/package-lock.json b/package-lock.json
index cdebbe06..c620e67c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "TimeSafari",
- "version": "0.3.5",
+ "version": "0.3.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "TimeSafari",
- "version": "0.3.5",
+ "version": "0.3.6",
"dependencies": {
"@dicebear/collection": "^5.3.5",
"@dicebear/core": "^5.3.5",
diff --git a/package.json b/package.json
index 97cf9196..e92fd2d6 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "TimeSafari",
- "version": "0.3.5",
+ "version": "0.3.6",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
diff --git a/project.task.yaml b/project.task.yaml
index be9a5f9f..044f2825 100644
--- a/project.task.yaml
+++ b/project.task.yaml
@@ -1,8 +1,6 @@
tasks :
-- onboarding video
-- .2 when adding a claim on home screen, push that claim to the top of the list
- 24 allow a person record with interests, including location; purpose? contact methods? enhance other connections the same? (suggestion from Philippines) assignee-group:ui
@@ -11,6 +9,7 @@ tasks :
- 16 save data backups in Google
- 16 generate and use passkeys for identities
- .5 show "give" buttons (eg. from anonymous) even if they can't give, greyed out, and give them a warning and instructions
+- .2 when adding a claim on home screen, push that claim to the top of the list
- .2 fix give dialog from "more contacts" off home page to allow giving to this user
- .2 fix bottom of project selection map, where the icons are hidden but a tap goes to the icon's page assignee-group:ui
From b28104af5b16e77dafd56b32aab4b2a584f5640d Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sun, 24 Mar 2024 19:04:24 -0600
Subject: [PATCH 11/31] bump version and add -beta
---
CHANGELOG.md | 2 +-
README.md | 2 --
package-lock.json | 4 ++--
package.json | 2 +-
4 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fff51476..ec77cb91 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Nothing
-## [0.3.6] - 2024.03.24
+## [0.3.6] - 2024.03.24 - 3a07e31d6313ab95711265562d9023c42916e141
### Added
- Button to mirror photo during video
- More detailed onboarding help screen
diff --git a/README.md b/README.md
index dd2e6a0e..157e8b68 100644
--- a/README.md
+++ b/README.md
@@ -55,8 +55,6 @@ npm run build
* `rsync -azvu -e "ssh -i ~/.ssh/..." dist ubuntutest@test.timesafari.app:time-safari`
-* Revert src/constants/app.ts and package.json (if that was prod).
-
* Commit changes. Record the new hash in the changelog. Edit package.json to increment version & add "-beta", `npm install`, and commit. Also record what version is on production.
* [Tag with the new version.](https://gitea.anomalistdesign.com/trent_larson/crowd-funder-for-time-pwa/releases)
diff --git a/package-lock.json b/package-lock.json
index c620e67c..1cbcd8ad 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "TimeSafari",
- "version": "0.3.6",
+ "version": "0.3.7-beta",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "TimeSafari",
- "version": "0.3.6",
+ "version": "0.3.7-beta",
"dependencies": {
"@dicebear/collection": "^5.3.5",
"@dicebear/core": "^5.3.5",
diff --git a/package.json b/package.json
index e92fd2d6..5425d242 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "TimeSafari",
- "version": "0.3.6",
+ "version": "0.3.7-beta",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
From 2dfc8fedaa4d9b56b5326a6058342bcf188865e8 Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Mon, 25 Mar 2024 19:03:01 -0600
Subject: [PATCH 12/31] refactor tasks
---
project.task.yaml | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/project.task.yaml b/project.task.yaml
index 044f2825..5a8b1cce 100644
--- a/project.task.yaml
+++ b/project.task.yaml
@@ -1,9 +1,11 @@
tasks :
+- 24 contextual tutorials https://docs.google.com/document/d/11C_K3RM0rgo0onih20KFhcIzukZyq_CRWqaWX5om_kM/edit#heading=h.iwiwcydou5hw
-- 24 allow a person record with interests, including location; purpose? contact methods? enhance other connections the same? (suggestion from Philippines) assignee-group:ui
+- 24 Move to Vite
+- .1 add KindSpring link to ideas
- .1 on feed, don't show "to someone anonymous" if it's to a project
- .1 on ideas, put an "x" to close it assignee-group:ui
- 16 save data backups in Google
@@ -123,7 +125,10 @@ tasks :
- .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 allow a person record with interests, including location; purpose? contact methods? enhance other connections the same? (suggestion from Philippines) assignee-group:ui
+- 24 brief introduction slides https://docs.google.com/document/d/11C_K3RM0rgo0onih20KFhcIzukZyq_CRWqaWX5om_kM/edit#heading=h.iwiwcydou5hw
+- 12 feedback https://docs.google.com/document/d/11C_K3RM0rgo0onih20KFhcIzukZyq_CRWqaWX5om_kM/edit#heading=h.iwiwcydou5hw
+
- 32 accept images for projects
- 32 accept images for contacts
- import project interactions from GitHub/GitLab and manage signing
From 4e227fc07a9aa92f962aba9abe6b43d85f8f0dd1 Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Tue, 26 Mar 2024 16:02:24 +0800
Subject: [PATCH 13/31] Added close icon to gifted prompts dialog
---
src/components/GiftedPrompts.vue | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/components/GiftedPrompts.vue b/src/components/GiftedPrompts.vue
index 8d6aeba6..798bbeec 100644
--- a/src/components/GiftedPrompts.vue
+++ b/src/components/GiftedPrompts.vue
@@ -1,7 +1,15 @@
-
Here's one:
+
+ Here's one:
+
+
+
+
Date: Tue, 26 Mar 2024 16:54:43 +0800
Subject: [PATCH 14/31] Fixed map z-index
---
src/views/NewEditProjectView.vue | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/views/NewEditProjectView.vue b/src/views/NewEditProjectView.vue
index cab2b875..b971c0aa 100644
--- a/src/views/NewEditProjectView.vue
+++ b/src/views/NewEditProjectView.vue
@@ -73,16 +73,17 @@
/>
Include Location
-
-
+
+
For your security, choose a location nearby but not exactly at the
place.
-
+
{
latitude = event.latlng.lat;
From e028197a2ac2e683254c4d6bdf4f60650716c1c2 Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Tue, 26 Mar 2024 17:12:55 +0800
Subject: [PATCH 15/31] Optimized grid space for wider screens
---
src/views/HomeView.vue | 4 +++-
src/views/ProjectViewView.vue | 4 +++-
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 4edf0b99..153de060 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -118,7 +118,9 @@
Record Something Given By:
-
+
Record a contribution from:
-
+
Date: Tue, 26 Mar 2024 19:55:16 +0800
Subject: [PATCH 16/31] Button width changes
For buttons that are next to each other
---
src/components/GiftedDialog.vue | 26 ++++++-----
src/components/OfferDialog.vue | 26 ++++++-----
src/views/AccountViewView.vue | 2 +-
src/views/ConfirmContactView.vue | 24 +++++-----
src/views/ContactScanView.vue | 24 +++++-----
src/views/GiftedDetails.vue | 26 ++++++-----
src/views/HomeView.vue | 2 +-
src/views/ImportAccountView.vue | 28 +++++------
src/views/ImportDerivedAccountView.vue | 28 +++++------
src/views/NewEditAccountView.vue | 32 +++++++------
src/views/NewEditProjectView.vue | 42 +++++++++--------
src/views/StartView.vue | 64 ++++++++++++++------------
12 files changed, 173 insertions(+), 151 deletions(-)
diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue
index 57cf3491..ec5a77bb 100644
--- a/src/components/GiftedDialog.vue
+++ b/src/components/GiftedDialog.vue
@@ -65,18 +65,20 @@
@click="explainData()"
/>
-
- Sign & Send
-
-
- Cancel
-
+
+
+ Sign & Send
+
+
+ Cancel
+
+
diff --git a/src/components/OfferDialog.vue b/src/components/OfferDialog.vue
index 20425cbd..efbe7d78 100644
--- a/src/components/OfferDialog.vue
+++ b/src/components/OfferDialog.vue
@@ -50,18 +50,20 @@
Sign & Send to publish to the world
-
- Sign & Send
-
-
- Cancel
-
+
+
+ Sign & Send
+
+
+ Cancel
+
+
diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue
index b1dd6e6f..1c2ccc50 100644
--- a/src/views/AccountViewView.vue
+++ b/src/views/AccountViewView.vue
@@ -503,7 +503,7 @@
See Global Animated History of Giving
diff --git a/src/views/ConfirmContactView.vue b/src/views/ConfirmContactView.vue
index 1ef05462..4e15c575 100644
--- a/src/views/ConfirmContactView.vue
+++ b/src/views/ConfirmContactView.vue
@@ -30,17 +30,19 @@
diff --git a/src/views/ContactScanView.vue b/src/views/ContactScanView.vue
index 9ca3b0bf..7a8a87d9 100644
--- a/src/views/ContactScanView.vue
+++ b/src/views/ContactScanView.vue
@@ -65,17 +65,19 @@
/>
diff --git a/src/views/GiftedDetails.vue b/src/views/GiftedDetails.vue
index d2cb8f16..5b911aef 100644
--- a/src/views/GiftedDetails.vue
+++ b/src/views/GiftedDetails.vue
@@ -98,18 +98,20 @@
@click="explainData()"
/>
-
- Sign & Send
-
-
- Cancel
-
+
+
+ Sign & Send
+
+
+ Cancel
+
+
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 153de060..29a89a39 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -160,7 +160,7 @@
Ideas...
diff --git a/src/views/ImportAccountView.vue b/src/views/ImportAccountView.vue
index e3ffdf2d..e185c97a 100644
--- a/src/views/ImportAccountView.vue
+++ b/src/views/ImportAccountView.vue
@@ -56,19 +56,21 @@
-
- Import
-
-
- Cancel
-
+
+
+ Import
+
+
+ Cancel
+
+
diff --git a/src/views/ImportDerivedAccountView.vue b/src/views/ImportDerivedAccountView.vue
index 1505620e..09dbb51c 100644
--- a/src/views/ImportDerivedAccountView.vue
+++ b/src/views/ImportDerivedAccountView.vue
@@ -49,19 +49,21 @@
-
- Increment and Import
-
-
- Cancel
-
+
+
+ Increment and Import
+
+
+ Cancel
+
+
diff --git a/src/views/NewEditAccountView.vue b/src/views/NewEditAccountView.vue
index a3f1435e..cae8c7d6 100644
--- a/src/views/NewEditAccountView.vue
+++ b/src/views/NewEditAccountView.vue
@@ -22,21 +22,23 @@
/>
-
- Save Changes
-
-
-
- Cancel
-
+
+
+ Save Changes
+
+
+
+ Cancel
+
+
diff --git a/src/views/NewEditProjectView.vue b/src/views/NewEditProjectView.vue
index b971c0aa..b2392b22 100644
--- a/src/views/NewEditProjectView.vue
+++ b/src/views/NewEditProjectView.vue
@@ -105,28 +105,30 @@
-
-
- Save Project
+
+
+
+ Save Project
-
-
-
-
- Saving...
+
+
+
+ Saving...
+
+
-
-
- Cancel
-
+ Cancel
+
+
diff --git a/src/views/StartView.vue b/src/views/StartView.vue
index e73256ff..04558e37 100644
--- a/src/views/StartView.vue
+++ b/src/views/StartView.vue
@@ -23,36 +23,40 @@
-
- Do you want a new identifier of your own?
-
-
- If you haven't used this before, click "Yes" to generate a new
- identifier.
-
-
- Only click "No" if you have a seed of 12 or 24 words generated
- elsewhere.
-
-
- Yes, generate one
-
-
- No, I have a seed
-
-
- Derive new address from existing seed
-
+
+
+ Do you want a new identifier of your own?
+
+
+ If you haven't used this before, click "Yes" to generate a new
+ identifier.
+
+
+ Only click "No" if you have a seed of 12 or 24 words generated
+ elsewhere.
+
+
+ Yes, generate one
+
+
+
From 55da3d0b1cdf7ce5c487a35e8eb39130a6b504e9 Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Tue, 26 Mar 2024 21:38:21 +0800
Subject: [PATCH 17/31] Map fix #2
---
src/views/SearchAreaView.vue | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/views/SearchAreaView.vue b/src/views/SearchAreaView.vue
index 4b3a7501..e4d4444d 100644
--- a/src/views/SearchAreaView.vue
+++ b/src/views/SearchAreaView.vue
@@ -64,10 +64,11 @@
-
+
From 4635c1ac481da1d98c016a4a573bf147fa0d2b87 Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Wed, 27 Mar 2024 19:57:31 +0800
Subject: [PATCH 18/31] Feed filters dialog
---
src/components/FeedFilters.vue | 190 +++++++++++++++++++++++++++++++++
src/views/HomeView.vue | 17 ++-
2 files changed, 206 insertions(+), 1 deletion(-)
create mode 100644 src/components/FeedFilters.vue
diff --git a/src/components/FeedFilters.vue b/src/components/FeedFilters.vue
new file mode 100644
index 00000000..c711eb5d
--- /dev/null
+++ b/src/components/FeedFilters.vue
@@ -0,0 +1,190 @@
+
+
+
+
Feed Filters
+
+
Show only activities that are…
+
+
+
+
+
+
+
From my contacts
+
+
+
+
+
+
+
From my projects
+
+
+
+
+
+
+
Matched to my topics of interest
+
+
+
+
+
+
+
+
+
+
+ Apply
+
+
+
+ Clear All
+
+
+ Cancel
+
+
+
+
+
+
+
+
+
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 4edf0b99..e6172ce4 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -172,10 +172,19 @@
showGivenToUser="true"
/>
+
-
Latest Activity
+
+
Latest Activity
+
+ Filter…
+
+
From 7f66addfe313869d7b9019c1e7bbcfb4bd8ae8bc Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Fri, 29 Mar 2024 15:53:46 +0800
Subject: [PATCH 19/31] Filter options reduced for release
---
src/components/FeedFilters.vue | 48 ----------------------------------
1 file changed, 48 deletions(-)
diff --git a/src/components/FeedFilters.vue b/src/components/FeedFilters.vue
index c711eb5d..1f054109 100644
--- a/src/components/FeedFilters.vue
+++ b/src/components/FeedFilters.vue
@@ -38,54 +38,6 @@
-
-
-
From my projects
-
-
-
-
-
-
-
Matched to my topics of interest
-
-
-
-
-
-
Nearby
From cfd53bc186a98e47f8e394635dbcfc4cbb5dc50e Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Fri, 29 Mar 2024 15:55:16 +0800
Subject: [PATCH 20/31] Removed one more
---
src/components/FeedFilters.vue | 16 ----------------
1 file changed, 16 deletions(-)
diff --git a/src/components/FeedFilters.vue b/src/components/FeedFilters.vue
index 1f054109..0b3cae5c 100644
--- a/src/components/FeedFilters.vue
+++ b/src/components/FeedFilters.vue
@@ -6,22 +6,6 @@
Show only activities that are…
-
-
From my contacts
From 0b4f2484f75acd90a8c116522fd02e2cafbcf50a Mon Sep 17 00:00:00 2001
From: Jose Olarte III
Date: Fri, 29 Mar 2024 21:41:14 +0800
Subject: [PATCH 21/31] Additions to Account View
---
src/views/AccountViewView.vue | 38 ++++++++++++++++++++++++++++-------
1 file changed, 31 insertions(+), 7 deletions(-)
diff --git a/src/views/AccountViewView.vue b/src/views/AccountViewView.vue
index b1dd6e6f..5f6c78e2 100644
--- a/src/views/AccountViewView.vue
+++ b/src/views/AccountViewView.vue
@@ -112,6 +112,8 @@
+
+
Settings
-
+
Troubleshoot your notification setup.
+
+
+ Set Search Area…
+
+
+
+
+ Topics of Interest
+
+
+
+ Separate topics with a comma.
+
-
Usage Limits
+
Usage Limits
Checking…
@@ -200,7 +224,7 @@
-
Data Export
+
Data Export
Download Settings & Contacts
@@ -221,7 +245,7 @@
If no download happened yet, click again here to download now.
@@ -952,13 +976,13 @@ export default class AccountViewView extends Vue {
public computedStartDownloadLinkClassNames() {
return {
- invisible: this.downloadUrl,
+ hidden: this.downloadUrl,
};
}
public computedDownloadLinkClassNames() {
return {
- invisible: !this.downloadUrl,
+ hidden: !this.downloadUrl,
};
}
From 7692cc2b35238340f4f96a89831e18b2c54d047e Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Mon, 1 Apr 2024 19:04:54 -0600
Subject: [PATCH 22/31] add logic to send a time for notifications
---
src/App.vue | 106 ++++++++++++++++++++++++++++++++++++++++-------
src/libs/util.ts | 6 ++-
src/main.ts | 4 ++
3 files changed, 100 insertions(+), 16 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index 63c3ebab..d4f9aa0b 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -191,7 +191,7 @@
>
- Would you like to turn on notifications for this app?
+ Would you like to be notified of new activity once a day?
Waiting for system initialization, which may take up to 10
@@ -199,22 +199,42 @@
-
- Turn on Notifications
-
+
+
+ Yes, tell me at:
+
+
+ AM
+ PM
+
+
+ {
+ if (checkHour()) {
+ close(notification.id);
+ turnOnNotifications();
+ }
+ }
+ "
+ >
+ Turn on Daily Message
+
+
- Maybe Later
+ No, Not Now
@@ -297,8 +317,11 @@
diff --git a/src/views/SearchAreaView.vue b/src/views/SearchAreaView.vue
index 4b3a7501..e9c30e85 100644
--- a/src/views/SearchAreaView.vue
+++ b/src/views/SearchAreaView.vue
@@ -208,9 +208,9 @@ export default class DiscoverView extends Vue {
group: "alert",
type: "success",
title: "Saved",
- text: "That has been saved in your preferences.",
+ text: "That has been saved in your preferences. You can now filter by it on your home screen feed.",
},
- -1,
+ 7000,
);
this.$router.back();
} catch (err) {
@@ -246,6 +246,7 @@ export default class DiscoverView extends Vue {
await db.open();
db.settings.update(MASTER_SETTINGS_KEY, {
searchBoxes: [],
+ filterFeedNearby: false,
});
this.searchBox = null;
this.localCenterLat = 0;
From 640d2736468fe2d514fbfb3989af02b9a40bea72 Mon Sep 17 00:00:00 2001
From: Trent Larson
Date: Sat, 6 Apr 2024 14:01:18 -0600
Subject: [PATCH 29/31] filter by selections (now all working), add cache for
plans
---
babel.config.js | 1 +
package-lock.json | 149 ++++++++++++++++++++++++++--
package.json | 1 +
project.task.yaml | 5 +-
src/components/FeedFilters.vue | 50 +++++-----
src/db/tables/settings.ts | 8 +-
src/libs/endorserServer.ts | 94 +++++++++++++++---
src/libs/util.ts | 14 +--
src/views/ContactAmountsView.vue | 10 +-
src/views/ContactsView.vue | 4 +-
src/views/HomeView.vue | 113 ++++++++++++++++-----
src/views/ProjectViewView.vue | 30 +++---
src/views/ProjectsView.vue | 4 +-
src/views/QuickActionBvcEndView.vue | 6 +-
src/views/SearchAreaView.vue | 2 +-
15 files changed, 384 insertions(+), 107 deletions(-)
diff --git a/babel.config.js b/babel.config.js
index 162a3ea9..cfbc5715 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -1,3 +1,4 @@
module.exports = {
+ plugins: ["@babel/plugin-transform-private-methods"],
presets: ["@vue/cli-plugin-babel/preset"],
};
diff --git a/package-lock.json b/package-lock.json
index 1cbcd8ad..4c5c5683 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -42,6 +42,7 @@
"js-generate-password": "^0.1.9",
"js-yaml": "^4.1.0",
"localstorage-slim": "^2.5.0",
+ "lru-cache": "^10.2.0",
"luxon": "^3.4.4",
"merkletreejs": "^0.3.11",
"moment": "^2.29.4",
@@ -3052,6 +3053,18 @@
"integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==",
"optional": true
},
+ "node_modules/@digitalcredentials/jsonld/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@digitalcredentials/keypair": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@digitalcredentials/keypair/-/keypair-1.0.5.tgz",
@@ -3149,6 +3162,18 @@
"integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==",
"optional": true
},
+ "node_modules/@digitalcredentials/vc-status-list/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@discoveryjs/json-ext": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz",
@@ -4317,6 +4342,19 @@
"node": ">=4"
}
},
+ "node_modules/@expo/cli/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/cli/node_modules/mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
@@ -4714,6 +4752,19 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/@expo/config/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@expo/config/node_modules/resolve-from": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
@@ -8912,6 +8963,18 @@
"node": ">=12"
}
},
+ "node_modules/@transmute/jsonld/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@transmute/ld-key-pair": {
"version": "0.7.0-unstable.81",
"resolved": "https://registry.npmjs.org/@transmute/ld-key-pair/-/ld-key-pair-0.7.0-unstable.81.tgz",
@@ -9674,6 +9737,18 @@
"integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==",
"optional": true
},
+ "node_modules/@veramo-community/lds-ecdsa-secp256k1-recovery2020/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@veramo/core": {
"version": "5.5.3",
"resolved": "https://registry.npmjs.org/@veramo/core/-/core-5.5.3.tgz",
@@ -10378,6 +10453,18 @@
"node": ">=8"
}
},
+ "node_modules/@vue/cli-shared-utils/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/@vue/cli-shared-utils/node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -12425,6 +12512,19 @@
"node": ">= 10"
}
},
+ "node_modules/cacache/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/cacache/node_modules/mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -17014,6 +17114,19 @@
"node": ">=10"
}
},
+ "node_modules/hosted-git-info/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "peer": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/hpack.js": {
"version": "2.1.6",
"resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
@@ -19269,6 +19382,18 @@
"integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==",
"optional": true
},
+ "node_modules/jsonld/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "optional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/jsonpointer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz",
@@ -20246,15 +20371,11 @@
}
},
"node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "devOptional": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz",
+ "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==",
"engines": {
- "node": ">=10"
+ "node": "14 || >=16.14"
}
},
"node_modules/luxon": {
@@ -25124,6 +25245,18 @@
"node": ">=10"
}
},
+ "node_modules/semver/node_modules/lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "devOptional": true,
+ "dependencies": {
+ "yallist": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
"node_modules/send": {
"version": "0.18.0",
"resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
diff --git a/package.json b/package.json
index 5425d242..2487cff7 100644
--- a/package.json
+++ b/package.json
@@ -42,6 +42,7 @@
"js-generate-password": "^0.1.9",
"js-yaml": "^4.1.0",
"localstorage-slim": "^2.5.0",
+ "lru-cache": "^10.2.0",
"luxon": "^3.4.4",
"merkletreejs": "^0.3.11",
"moment": "^2.29.4",
diff --git a/project.task.yaml b/project.task.yaml
index d111576c..c8db872c 100644
--- a/project.task.yaml
+++ b/project.task.yaml
@@ -1,10 +1,13 @@
tasks :
+- fix the notification link to the app
- 24 contextual tutorials https://docs.google.com/document/d/11C_K3RM0rgo0onih20KFhcIzukZyq_CRWqaWX5om_kM/edit#heading=h.iwiwcydou5hw
- 24 Move to Vite
+- feeds - add "remote" filter, if they choose 'visible' then warn that they won't see any others, cache list & don't reload front page on change
+
- .1 add KindSpring link to ideas
- .1 on feed, don't show "to someone anonymous" if it's to a project
- .1 on ideas, put an "x" to close it assignee-group:ui
@@ -122,7 +125,7 @@ tasks :
- 08 convert to cleaner implementation (maybe Drie -- https://github.com/janvorisek/drie)
- .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
- 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
diff --git a/src/components/FeedFilters.vue b/src/components/FeedFilters.vue
index 669e9531..a8b029af 100644
--- a/src/components/FeedFilters.vue
+++ b/src/components/FeedFilters.vue
@@ -3,21 +3,21 @@
Feed Filters
-
Show only activities that are…
+
Show only activities that…
-
From my contacts
+
Include Someone Visible to Me
@@ -30,6 +30,8 @@
+
or
+
-
Nearby
+
Are Nearby
@@ -109,20 +111,20 @@ import { db } from "@/db/index";
},
})
export default class FeedFilters extends Vue {
- callOnCloseIfChanged = () => {};
+ onCloseIfChanged = () => {};
hasSearchBox = false;
- isInMyContacts = false;
+ hasVisibleDid = false;
isNearby = false;
settingChanged = false;
visible = false;
- async open(callOnCloseIfChanged: () => void) {
- this.callOnCloseIfChanged = callOnCloseIfChanged;
+ async open(onCloseIfChanged: () => void) {
+ this.onCloseIfChanged = onCloseIfChanged;
await db.open();
const settings = await db.settings.get(MASTER_SETTINGS_KEY);
- this.isInMyContacts = !!settings?.filterFeedContacts;
- this.isNearby = !!settings?.filterFeedNearby;
+ this.hasVisibleDid = !!settings?.filterFeedByVisible;
+ this.isNearby = !!settings?.filterFeedByNearby;
if (settings?.searchBoxes && settings.searchBoxes.length > 0) {
this.hasSearchBox = true;
}
@@ -131,11 +133,11 @@ export default class FeedFilters extends Vue {
this.visible = true;
}
- toggleContacts() {
+ toggleHasVisibleDid() {
this.settingChanged = true;
- this.isInMyContacts = !this.isInMyContacts;
+ this.hasVisibleDid = !this.hasVisibleDid;
db.settings.update(MASTER_SETTINGS_KEY, {
- filterFeedContacts: this.isInMyContacts,
+ filterFeedByVisible: this.hasVisibleDid,
});
}
@@ -143,41 +145,41 @@ export default class FeedFilters extends Vue {
this.settingChanged = true;
this.isNearby = !this.isNearby;
db.settings.update(MASTER_SETTINGS_KEY, {
- filterFeedNearby: this.isNearby,
+ filterFeedByNearby: this.isNearby,
});
}
async clearAll() {
- if (this.isInMyContacts || this.isNearby) {
+ if (this.hasVisibleDid || this.isNearby) {
this.settingChanged = true;
}
db.settings.update(MASTER_SETTINGS_KEY, {
- filterFeedNearby: false,
- filterFeedContacts: false,
+ filterFeedByNearby: false,
+ filterFeedByVisible: false,
});
- this.isInMyContacts = false;
+ this.hasVisibleDid = false;
this.isNearby = false;
}
async setAll() {
- if (!this.isInMyContacts || !this.isNearby) {
+ if (!this.hasVisibleDid || !this.isNearby) {
this.settingChanged = true;
}
db.settings.update(MASTER_SETTINGS_KEY, {
- filterFeedNearby: true,
- filterFeedContacts: true,
+ filterFeedByNearby: true,
+ filterFeedByVisible: true,
});
- this.isInMyContacts = true;
+ this.hasVisibleDid = true;
this.isNearby = true;
}
close() {
if (this.settingChanged) {
- this.callOnCloseIfChanged();
+ this.onCloseIfChanged();
}
this.visible = false;
}
diff --git a/src/db/tables/settings.ts b/src/db/tables/settings.ts
index 479ee637..dbc4cf0c 100644
--- a/src/db/tables/settings.ts
+++ b/src/db/tables/settings.ts
@@ -17,8 +17,8 @@ export type Settings = {
activeDid?: string; // Active Decentralized ID
apiServer?: string; // API server URL
- filterFeedNearby?: string; // filter by nearby
- filterFeedContacts?: string; // filter by user contacts
+ filterFeedByNearby?: boolean; // filter by nearby
+ filterFeedByVisible?: boolean; // filter by visible users ie. anyone not hidden
firstName?: string; // User's first name
isRegistered?: boolean;
@@ -42,6 +42,10 @@ export type Settings = {
webPushServer?: string; // Web Push server URL
};
+export function isAnyFeedFilterOn(settings: Settings): boolean {
+ return !!(settings.filterFeedByNearby || settings.filterFeedByVisible);
+}
+
/**
* Schema for the Settings table in the database.
*/
diff --git a/src/libs/endorserServer.ts b/src/libs/endorserServer.ts
index 5972708c..b1676e9f 100644
--- a/src/libs/endorserServer.ts
+++ b/src/libs/endorserServer.ts
@@ -1,9 +1,11 @@
+import { Axios, AxiosResponse, RawAxiosRequestHeaders } from "axios";
+import * as didJwt from "did-jwt";
+import { LRUCache } from "lru-cache";
import * as R from "ramda";
import { IIdentifier } from "@veramo/core";
-import { accessToken, SimpleSigner } from "@/libs/crypto";
-import * as didJwt from "did-jwt";
-import { Axios, AxiosResponse } from "axios";
+
import { Contact } from "@/db/tables/contacts";
+import { accessToken, SimpleSigner } from "@/libs/crypto";
export const SCHEMA_ORG_CONTEXT = "https://schema.org";
// the object in RegisterAction claims
@@ -49,7 +51,7 @@ export interface GenericVerifiableCredential {
[key: string]: any; // eslint-disable-line @typescript-eslint/no-explicit-any
}
-export interface GenericServerRecord extends GenericVerifiableCredential {
+export interface GenericCredWrapper extends GenericVerifiableCredential {
handleId?: string;
id: string;
issuedAt: string;
@@ -58,7 +60,7 @@ export interface GenericServerRecord extends GenericVerifiableCredential {
claim: Record;
claimType?: string;
}
-export const BLANK_GENERIC_SERVER_RECORD: GenericServerRecord = {
+export const BLANK_GENERIC_SERVER_RECORD: GenericCredWrapper = {
"@context": SCHEMA_ORG_CONTEXT,
"@type": "",
claim: {},
@@ -68,7 +70,7 @@ export const BLANK_GENERIC_SERVER_RECORD: GenericServerRecord = {
};
// a summary record; the VC is found the fullClaim field
-export interface GiveServerRecord {
+export interface GiveSummaryRecord {
agentDid: string;
amount: number;
amountConfirmed: number;
@@ -83,7 +85,7 @@ export interface GiveServerRecord {
}
// a summary record; the VC is found the fullClaim field
-export interface OfferServerRecord {
+export interface OfferSummaryRecord {
amount: number;
amountGiven: number;
amountGivenConfirmed: number;
@@ -101,7 +103,7 @@ export interface OfferServerRecord {
}
// a summary record; the VC is not currently part of this record
-export interface PlanServerRecord {
+export interface PlanSummaryRecord {
agentDid?: string; // optional, if the issuer wants someone else to manage as well
description: string;
endTime?: string;
@@ -256,6 +258,10 @@ export type CreateAndSubmitClaimResult = SuccessResult | ErrorResult;
// See https://github.com/trentlarson/endorser-ch/blob/0cb626f803028e7d9c67f095858a9fc8542e3dbd/server/api/services/util.js#L6
const HIDDEN_DID = "did:none:HIDDEN";
+const planCache: LRUCache = new LRUCache({
+ max: 500,
+});
+
export function isDid(did: string) {
return did.startsWith("did:");
}
@@ -269,7 +275,7 @@ export function isEmptyOrHiddenDid(did?: string) {
}
/**
- * @return true for any nested string where func(input) === true
+ * @return true for any string within this primitive/object/array where func(input) === true
*
* Similar logic is found in endorser-mobile.
*/
@@ -304,6 +310,12 @@ export function containsHiddenDid(obj: any) {
return testRecursivelyOnStrings(isHiddenDid, obj);
}
+// eslint-disable-next-line @typescript-eslint/no-explicit-any
+export const containsNonHiddenDid = (obj: any) => {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ return testRecursivelyOnStrings((s: any) => isDid(s) && !isHiddenDid(s), obj);
+};
+
export function stripEndorserPrefix(claimId: string) {
if (claimId && claimId.startsWith(ENDORSER_CH_HANDLE_PREFIX)) {
return claimId.substring(ENDORSER_CH_HANDLE_PREFIX.length);
@@ -423,6 +435,62 @@ export function didInfo(
return didInfoForContact(did, activeDid, contact, allMyDids).displayName;
}
+async function getHeaders(identity: IIdentifier) {
+ const headers: RawAxiosRequestHeaders = {
+ "Content-Type": "application/json",
+ };
+ if (identity) {
+ const token = await accessToken(identity);
+ headers["Authorization"] = "Bearer " + token;
+ }
+ return headers;
+}
+
+export async function getPlanFromCache(
+ handleId: string,
+ identity: IIdentifier,
+ axios: Axios,
+ apiServer: string,
+) {
+ let cred = planCache.get(handleId);
+ if (!cred) {
+ const url =
+ apiServer +
+ "/api/v2/report/plans?handleId=" +
+ encodeURIComponent(handleId);
+ const headers = await getHeaders(identity);
+ try {
+ const resp = await axios.get(url, { headers });
+ if (resp.status === 200 && resp.data?.data?.length > 0) {
+ cred = resp.data.data[0];
+ planCache.set(handleId, cred);
+ } else {
+ console.log(
+ "Failed to load plan with handle",
+ handleId,
+ " Got data:",
+ resp.data,
+ );
+ }
+ } catch (error) {
+ console.log(
+ "Failed to load plan with handle",
+ handleId,
+ " Got error:",
+ error,
+ );
+ }
+ }
+ return cred;
+}
+
+export async function setPlanInCache(
+ handleId: string,
+ planSummary: PlanSummaryRecord,
+) {
+ planCache.set(handleId, planSummary);
+}
+
/**
* For result, see https://api.endorser.ch/api-docs/#/claims/post_api_v2_claim
*
@@ -475,7 +543,7 @@ export async function createAndSubmitGive(
vcClaim.image = imageUrl;
}
return createAndSubmitClaim(
- vcClaim as GenericServerRecord,
+ vcClaim as GenericCredWrapper,
identity,
apiServer,
axios,
@@ -524,7 +592,7 @@ export async function createAndSubmitOffer(
};
}
return createAndSubmitClaim(
- vcClaim as GenericServerRecord,
+ vcClaim as GenericCredWrapper,
identity,
apiServer,
axios,
@@ -695,7 +763,7 @@ const claimSummary = (claim: Record) => {
similar code is also contained in endorser-mobile
**/
export const claimSpecialDescription = (
- record: GenericServerRecord,
+ record: GenericCredWrapper,
activeDid: string,
identifiers: Array,
contacts: Array,
@@ -789,7 +857,7 @@ export const claimSpecialDescription = (
"...]"
);
} else {
- return issuer + " declared " + claimSummary(claim as GenericServerRecord);
+ return issuer + " declared " + claimSummary(claim as GenericCredWrapper);
}
};
diff --git a/src/libs/util.ts b/src/libs/util.ts
index 1a613df8..f85f550f 100644
--- a/src/libs/util.ts
+++ b/src/libs/util.ts
@@ -9,7 +9,7 @@ import { accountsDB, db } from "@/db/index";
import { Account } from "@/db/tables/accounts";
import { MASTER_SETTINGS_KEY } from "@/db/tables/settings";
import { deriveAddress, generateSeed, newIdentifier } from "@/libs/crypto";
-import { GenericServerRecord, containsHiddenDid } from "@/libs/endorserServer";
+import { GenericCredWrapper, containsHiddenDid } from "@/libs/endorserServer";
import * as serverUtil from "@/libs/endorserServer";
// eslint-disable-next-line @typescript-eslint/no-var-requires
@@ -69,7 +69,7 @@ export const isGlobalUri = (uri: string) => {
return uri && uri.match(new RegExp(/^[A-Za-z][A-Za-z0-9+.-]+:/));
};
-export const giveIsConfirmable = (veriClaim: GenericServerRecord) => {
+export const giveIsConfirmable = (veriClaim: GenericCredWrapper) => {
return veriClaim.claimType === "GiveAction";
};
@@ -85,7 +85,7 @@ export const doCopyTwoSecRedo = (text: string, fn: () => void) => {
* @param veriClaim is expected to have fields: claim, claimType, and issuer
*/
export const isGiveRecordTheUserCanConfirm = (
- veriClaim: GenericServerRecord,
+ veriClaim: GenericCredWrapper,
activeDid: string,
confirmerIdList: string[] = [],
) => {
@@ -101,9 +101,9 @@ export const isGiveRecordTheUserCanConfirm = (
* @returns the DID of the person who offered, or undefined if hidden
* @param veriClaim is expected to have fields: claim and issuer
*/
-export const offerGiverDid: (
- arg0: GenericServerRecord,
-) => string | undefined = (veriClaim) => {
+export const offerGiverDid: (arg0: GenericCredWrapper) => string | undefined = (
+ veriClaim,
+) => {
let giver;
if (
veriClaim.claim.offeredBy?.identifier &&
@@ -120,7 +120,7 @@ export const offerGiverDid: (
* @returns true if the user can fulfill the offer
* @param veriClaim is expected to have fields: claim, claimType, and issuer
*/
-export const canFulfillOffer = (veriClaim: GenericServerRecord) => {
+export const canFulfillOffer = (veriClaim: GenericCredWrapper) => {
return !!(veriClaim.claimType === "Offer" && offerGiverDid(veriClaim));
};
diff --git a/src/views/ContactAmountsView.vue b/src/views/ContactAmountsView.vue
index a6fc0ff9..1d3654ab 100644
--- a/src/views/ContactAmountsView.vue
+++ b/src/views/ContactAmountsView.vue
@@ -119,7 +119,7 @@ import { MASTER_SETTINGS_KEY } from "@/db/tables/settings";
import { accessToken, SimpleSigner } from "@/libs/crypto";
import {
AgreeVerifiableCredential,
- GiveServerRecord,
+ GiveSummaryRecord,
GiveVerifiableCredential,
SCHEMA_ORG_CONTEXT,
} from "@/libs/endorserServer";
@@ -131,7 +131,7 @@ export default class ContactAmountssView extends Vue {
activeDid = "";
apiServer = "";
contact: Contact | null = null;
- giveRecords: Array = [];
+ giveRecords: Array = [];
numAccounts = 0;
async beforeCreate() {
@@ -197,7 +197,7 @@ export default class ContactAmountssView extends Vue {
async loadGives(activeDid: string, contact: Contact) {
try {
const identity = await this.getIdentity(this.activeDid);
- let result: Array = [];
+ let result: Array = [];
const url =
this.apiServer +
"/api/v2/report/gives?agentDid=" +
@@ -252,7 +252,7 @@ export default class ContactAmountssView extends Vue {
);
}
- const sortedResult: Array = R.sort(
+ const sortedResult: Array = R.sort(
(a, b) =>
new Date(b.issuedAt).getTime() - new Date(a.issuedAt).getTime(),
result,
@@ -271,7 +271,7 @@ export default class ContactAmountssView extends Vue {
}
}
- async confirm(record: GiveServerRecord) {
+ async confirm(record: GiveSummaryRecord) {
// Make claim
// I use clone here because otherwise it gets a Proxy object.
// eslint-disable-next-line @typescript-eslint/no-explicit-any
diff --git a/src/views/ContactsView.vue b/src/views/ContactsView.vue
index 8384163d..2bf4a9a8 100644
--- a/src/views/ContactsView.vue
+++ b/src/views/ContactsView.vue
@@ -303,7 +303,7 @@ import {
import {
CONTACT_CSV_HEADER,
CONTACT_URL_PREFIX,
- GiveServerRecord,
+ GiveSummaryRecord,
GiveVerifiableCredential,
isDid,
RegisterVerifiableCredential,
@@ -410,7 +410,7 @@ export default class ContactsView extends Vue {
}
const handleResponse = (
- resp: { status: number; data: { data: GiveServerRecord[] } },
+ resp: { status: number; data: { data: GiveSummaryRecord[] } },
descriptions: Record,
confirmed: Record,
unconfirmed: Record,
diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue
index 41941517..57dca406 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -247,11 +247,17 @@
Loading…
+
+
+ No claims match your filters.
+
+