From 8a7ce0fe651453c057b6a5894604d08bf271f763 Mon Sep 17 00:00:00 2001 From: Trent Larson Date: Mon, 8 Jan 2024 21:28:04 -0700 Subject: [PATCH] add flag for logging a contribution as a trade --- README.md | 2 ++ package.json | 2 +- project.task.yaml | 25 +++++++++++++++++-------- src/components/GiftedDialog.vue | 16 ++++++++++++---- src/libs/endorserServer.ts | 15 +++++++++++---- src/views/HomeView.vue | 4 +++- src/views/ProjectViewView.vue | 6 ++++-- 7 files changed, 50 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 5e418a1..a3609cb 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,8 @@ If you are deploying in a subdirectory, add it to `publicPath` in vue.config.js, ... to copy the contents of the `sw_scripts` folder to the `dist` folder - except additional_scripts.js. +* Get on the server and back up the time-safari folder. + * `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), edit package.json to increment version & add "-beta", `npm install`, and commit. Also record what version is on production. diff --git a/package.json b/package.json index 95bcbd8..c8f78ed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "TimeSafari_Test", - "version": "0.2.2", + "version": "0.2.3-beta", "private": true, "scripts": { "serve": "vue-cli-service serve", diff --git a/project.task.yaml b/project.task.yaml index 367108f..ec5f705 100644 --- a/project.task.yaml +++ b/project.task.yaml @@ -1,19 +1,30 @@ tasks: +- record donations vs gives + - in mobile - change give & fulfills to array of objects? + - migrate all existing records to gifts (after clients send DonateAction) + - update docs + - show VC details... somehow: + - add VC confirmation - BVC may have an org page - 01 show my VCs - most interesting, or via search - 04 allow user to download chains of VCs, mine + ones I can see about me from others - - add VC confirmation + +- on gives feed - link to project +- show feed of offers, new projects, etc -- maybe limited to my search area + +- revenue - copy button for seed - .5 If notifications are not enabled, add message to front page with link/button to enable -- record donations vs gives - make server endpoint for full English description of limits - make identicons for contacts into more-memorable faces (and maybe change project identicons, too) - create a help-desk document & add screenshots - 01 server - show all claim details when issued by the issuer +- .1 update "offer" units to have same functionality as "give" units +- on home page, prompt for install check in addition to "supports notifications" check (since they won't get notified if Chrome is closed) - 01 on Mac (& Windows?) desktop, add a help blurb so that they can find it again (since it doesn't show in Application list) - bug - got error adding on Firefox user #0 as contact for themselves - bug (that is hard to reproduce) - back-and-forth on discovery & project pages led to "You need an identity to load your projects." error on product page when I had an identity @@ -21,12 +32,10 @@ tasks: - bug (that is hard to reproduce) - on the second 'give' recorded on prod it showed me as the agent - 01 send visibility signal as a VC and store it - 04 remove 'rowid' references (that are sqlite-specific); may involve server -- 04 look at other examples for better UI friend.tech -- 01 make the prod build copy the sw_scripts -- .5 Add start date to project +- 04 look at other examples for better UI, eg friend.tech +- .5 Add inactive flag / end date, start date to project - .3 check that Android shows "back" buttons on screens without bottom tray - .1 Make give description text box into something that expands as they type? -- .5 customize favicon assignee-group:ui - .2 Show a warning if both giver and recipient are the same (but still allow?) - 01 Would it look better to shrink the buttons on many pages so they don't expand to the width of the screen? assignee-group:ui - .5 Display a more appealing confirmation on the map when erasing the marker @@ -34,11 +43,11 @@ tasks: - switch some checks for activeDid to check for isRegistered - .2 in SeedBackupView, don't load the mnemonic and keep it in memory; only load it when they click "show" - .5 fix cert generation on server (since it didn't happen automatically for Nov 30) +- .1 remove 2 second setTimeout in NewEditProjectView.vue - warn if they're using the web (android only?) https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getInstalledRelatedApps https://web.dev/articles/get-installed-related-apps - -- 04 fix lack of initial notification in Firefox (on MacOS, maybe others) +- .5 fix masked icon (because some of the top-right of the binoculars is cut off) - contacts v+ : - 01 Import all the non-sensitive data (ie. contacts & settings). diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue index e236246..ac95d50 100644 --- a/src/components/GiftedDialog.vue +++ b/src/components/GiftedDialog.vue @@ -36,9 +36,15 @@ -
- - +
+ + + + + + + +

Sign & Send to publish to the world @@ -88,6 +94,7 @@ export default class GiftedDialog extends Vue { giver?: GiverInputInfo; // undefined means no identified giver agent description = ""; givenToUser = false; + isTrade = false; unitCode = "HUR"; visible = false; @@ -264,6 +271,7 @@ export default class GiftedDialog extends Vue { amountInput, unitCode, this.projectId, + this.isTrade, ); if ( @@ -287,7 +295,7 @@ export default class GiftedDialog extends Vue { group: "alert", type: "success", title: "Success", - text: "That gift was recorded.", + text: `That ${this.isTrade ? "trade" : "gift"} was recorded.`, }, 7000, ); diff --git a/src/libs/endorserServer.ts b/src/libs/endorserServer.ts index c4b8dcc..faba1c0 100644 --- a/src/libs/endorserServer.ts +++ b/src/libs/endorserServer.ts @@ -88,7 +88,7 @@ export interface GiveVerifiableCredential { "@type": "GiveAction"; agent?: { identifier: string }; description?: string; - fulfills?: { "@type": string; identifier?: string; lastClaimId?: string }; + fulfills?: { "@type": string; identifier?: string; lastClaimId?: string }[]; identifier?: string; object?: { amountOfThisGood: number; unitCode: string }; recipient?: { identifier: string }; @@ -312,6 +312,7 @@ export async function createAndSubmitGive( hours?: number, unitCode?: string, fulfillsProjectHandleId?: string, + isTrade: boolean = false, ): Promise { const vcClaim: GiveVerifiableCredential = { "@context": "https://schema.org", @@ -322,10 +323,16 @@ export async function createAndSubmitGive( object: hours ? { amountOfThisGood: hours, unitCode: unitCode || "HUR" } : undefined, - fulfills: fulfillsProjectHandleId - ? { "@type": "PlanAction", identifier: fulfillsProjectHandleId } - : undefined, + fulfills: [{ "@type": isTrade ? "TradeAction" : "DonateAction" }], }; + if (fulfillsProjectHandleId) { + vcClaim.fulfills = vcClaim.fulfills || []; // weird that it won't typecheck without this + vcClaim.fulfills.push({ + "@type": "PlanAction", + identifier: fulfillsProjectHandleId, + }); + } + console.log("createAndSubmitGive vcClaim", vcClaim); return createAndSubmitClaim( vcClaim as GenericServerRecord, identity, diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index 1ba2254..edc54ad 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -385,7 +385,9 @@ export default class HomeView extends Vue { public async retrieveGives(endorserApiServer: string, beforeId?: string) { const beforeQuery = beforeId == null ? "" : "&beforeId=" + beforeId; const response = await fetch( - endorserApiServer + "/api/v2/report/gives?" + beforeQuery, + endorserApiServer + + "/api/v2/report/gives?giftNotTrade=true&" + + beforeQuery, { method: "GET", headers: await this.buildHeaders(), diff --git a/src/views/ProjectViewView.vue b/src/views/ProjectViewView.vue index 919f3b3..38456fe 100644 --- a/src/views/ProjectViewView.vue +++ b/src/views/ProjectViewView.vue @@ -162,7 +162,7 @@

- (None yet. Record one above.) + (None yet. Wanna offer something if others join you?)
    @@ -197,7 +197,9 @@

    Given To This Idea

    -
    (None yet. Record one above.)
    +
    + (None yet. You can be the first.) +