From cf2e800deca0610fe77c30c08151ba90c2ffef95 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 cfb7f50..386f762 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 43d4cd4..93dcb89 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 8e47b7c..0db68e2 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 c3fd27b140e62b145ce7b9d4252bef7dd7f9a362 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 cceaaaf..cab2b87 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 e6cd86618ef3e9c12c750af339c76c3f76b51408 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 cccdeea..73252b8 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 1d576d6..cdebbe0 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 2dff0e2..97cf919 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 9059f7a9a784517273fff0d7bfa0ac4061dd5bd3 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 93dcb89..35f121d 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 1a8d8be..57cf349 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 99c51ec..6c4a5c0 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 1405fba..d2cb8f1 100644
--- a/src/views/GiftedDetails.vue
+++ b/src/views/GiftedDetails.vue
@@ -92,6 +92,11 @@
Sign & Send to publish to the world
+
From 214a26417924a06cbb1f65f58526186b978d8a75 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 fb5b030..4edf0b9 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 1968953..c7da06c 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 48c7a71..ad0e930 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 ba0dc77..930509f 100644
--- a/src/views/QuickActionBvcEndView.vue
+++ b/src/views/QuickActionBvcEndView.vue
@@ -60,7 +60,7 @@
}}
From e43c45ebea1584dfcb9eb7759417ece9e1a2b740 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 abb43f1..dd2e6a0 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 6c4a5c0..1a613df 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 4f3e9fe..0496a37 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 b866e5e..8384163 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 0000000..e6c6b11
--- /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 79571b6..30cb013 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 75f9f20ea3e611ace4fd20b01fa147edfaf41e86 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 35f121d..8fb17bf 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 73252b8..fff5147 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 cdebbe0..c620e67 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 97cf919..e92fd2d 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 be9a5f9..044f282 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 7412d67c336440d74a8e15a788a79b8bcd3e616e 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 fff5147..ec77cb9 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 dd2e6a0..157e8b6 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 c620e67..1cbcd8a 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 e92fd2d..5425d24 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 340d0a521975b9b1e0b174317436c9430d367914 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 044f282..5a8b1cc 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 31954d2690d0411bcd4a868c711895d8aa271dcc 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 8d6aeba..798bbee 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 cab2b87..b971c0a 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 21fe5a02792ba2ce29ba04b3b8ab8c409768c25a 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 4edf0b9..153de06 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 57cf349..ec5a77b 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 20425cb..efbe7d7 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 b1dd6e6..1c2ccc5 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 1ef0546..4e15c57 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 9ca3b0b..7a8a87d 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 d2cb8f1..5b911ae 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 153de06..29a89a3 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 e3ffdf2..e185c97 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 1505620..09dbb51 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 a3f1435..cae8c7d 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 b971c0a..b2392b2 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 e73256f..04558e3 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 94b600e5278821fda0b0da842c7e0df13fdbb5db 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 4b3a750..e4d4444 100644
--- a/src/views/SearchAreaView.vue
+++ b/src/views/SearchAreaView.vue
@@ -64,10 +64,11 @@
-
+
From 62e0fc51c2ba18ecd48313787224c2aa36115d86 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 0000000..c711eb5
--- /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 4edf0b9..e6172ce 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -172,10 +172,19 @@
showGivenToUser="true"
/>
+
-
Latest Activity
+
+
Latest Activity
+
+ Filter…
+
+
From 07f542ca16e9ef07261e964e12c1e129a7b58399 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 c711eb5..1f05410 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 570b31e2d6755eb7ab342a43e8d8214e1255c158 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 1f05410..0b3cae5 100644
--- a/src/components/FeedFilters.vue
+++ b/src/components/FeedFilters.vue
@@ -6,22 +6,6 @@
Show only activities that are…
-
-
From my contacts
From 8da2c8cc306abec64dd683b83327ade2d34df95c 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 b1dd6e6..5f6c78e 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 144ab767161d64a6cc5ddbd9f384a362f72622c4 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 63c3eba..d4f9aa0 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 4b3a750..e9c30e8 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 3fbf68b117d135e58d3365ab8db134ca62cc44da 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 162a3ea..cfbc571 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 1cbcd8a..4c5c568 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 5425d24..2487cff 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 d111576..c8db872 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 669e953..a8b029a 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 479ee63..dbc4cf0 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 5972708..b1676e9 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 1a613df..f85f550 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 a6fc0ff..1d3654a 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 8384163..2bf4a9a 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 4194151..57dca40 100644
--- a/src/views/HomeView.vue
+++ b/src/views/HomeView.vue
@@ -247,11 +247,17 @@
Loading…
+
+
+ No claims match your filters.
+
+