Skip to content

Commit

Permalink
DAF Checkout with chariot (#3143)
Browse files Browse the repository at this point in the history
* Update tsconfig (#3038)

* update tsconfig

* update type import

* dont include type automatically

* Program donation dropdown (#3037)

* add program attribute

* update programId

* add program selector on stripe

* add program selector in crypt oform

* daf program selector

* stocks program selector

* absolute dropdown

* add programId in intent creation

* incrementers wrap

* add program flag

* UI flagged

* update tsconfig

* update type import

* dont include type automatically

* prepend general

* use programAllowed flag

* rename constant

* BG-1336: Donate to ap wallet directly (#2978)

* Update Polygon and Ethereum testnets to Amoy and Sepolia (#2937)

* Update Polygon and Ethereum testnets to Amoy and Sepolia

* Format

* BG-1253: Pending Payment donation pickup button (#2940)

* Add 'Finish Paying' to intent table

* Remove redundant endowment fields from Donate page

* Add logic to load intent data into Donate page

* Update intent type to include token + currency + frequency

* Use Currency instead of DetailedCurrency

* Update frequency to 'one-time'+'subscription'

* Show tip as pct

* Remove tx hash column on awaiting payment table

* Reset state.transactionId on component unmount

* Pass transactionId when creating intents

* Pass old intent id in PayPal

* Update endpoint

* Rename intentTransactionId->oldTransactionId

* Add comment

* Rename intentTransactionId->oldTransactionId

* link / col header fixes

---------

Co-authored-by: Andrey <SovereignAndrey>

* fix twitter acct handle used

* V3 endowment (#2941)

* BG-1225: Donation success page: Show the name of the nonprofit donor chose (#2869)

* Pass recipientName to DonateFiatThanks from PayPal checkout

* Pass recipientName in StripePaymentStatus

* Donate page: Create PayPal order (donation intent) only on button click (#2873)

* Add new 'intent' don. status

* Create PayPal order (donation intent) only on button click

* Remove redundant isSubmitting state

* Refactor createOrder

* Revert "Add new 'intent' don. status"

This reverts commit 54af863.

* UI Error handling (#2870)

Closes BG-1263
Closes BG-1172

This PR aims to separate UI error (UI is unusable, display fallback UI) from user-initiated error (e.g. failed submission, prompt with Modal). Kindly see comments for changes explanation

NOTE: renamings, moving of files are not applied yet so that essential changes would stand out.
- [ ] rename `useErrorContext` to `useErrorHandler`
- [ ] move `useErrorHandler` to `/hooks`
- [ ] delete `contexts/ErrorContext` 


## Explanation of the solution
Sample handled UI errors:

App encountered error
<img width="1470" alt="image" src="https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/19ed5295-e3a5-4c2d-a1df-ed5533af9011">

Page encountered error
<img width="1469" alt="image" src="https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/b5203b45-d09a-47e4-9332-e5eda57a40b5">

Stripe checkout failed
<img width="794" alt="image" src="https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/9104f821-71d3-4910-96e0-0732a63af301">


## Instructions on making this work

- run `yarn` or `yarn install` to install npm dependencies
- run `yarn run test --watchAll` to verify all tests still pass
- (optional) run `yarn run build` to verify the build passes
- run `yarn start` to start the webapp
-

## UI changes for review

When major UI changes are introduced with a PR, please include links to URLS to compare or screenshots demonstrating the difference and notify on design changes

* Slug preview (#2872)

## Explanation of the solution
* add slug preview
![image](https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/7e0a5dd8-62b5-4389-90fb-bb0bd57cc422)

## Instructions on making this work

- run `yarn` or `yarn install` to install npm dependencies
- run `yarn run test --watchAll` to verify all tests still pass
- (optional) run `yarn run build` to verify the build passes
- run `yarn start` to start the webapp
-

## UI changes for review

When major UI changes are introduced with a PR, please include links to URLS to compare or screenshots demonstrating the difference and notify on design changes

* Incorrect card sizes (#2874)

## Explanation of the solution
* for smaller card sizes (multiple cards per row, where card  title alignment matters ) just fill the standard (uniform height) card image area
<img width="491" alt="image" src="https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/0a4d01b9-84d4-444d-bb73-72385ce76c1d">

<img width="603" alt="image" src="https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/858f21ba-1111-499a-b72b-20005aa6602f">


* for wide card sizes (single card per rwo), just let the browser pick from srcset and sizes provided and use the rendered size
<img width="386" alt="image" src="https://github.com/AngelProtocolFinance/angelprotocol-web-app/assets/89639563/5e440c60-acdc-491e-992a-70363f9aa61a">



## Instructions on making this work

- run `yarn` or `yarn install` to install npm dependencies
- run `yarn run test --watchAll` to verify all tests still pass
- (optional) run `yarn run build` to verify the build passes
- run `yarn start` to start the webapp
-

## UI changes for review

When major UI changes are introduced with a PR, please include links to URLS to compare or screenshots demonstrating the difference and notify on design changes

* Remove `usdRate` from fiat donation payload and update PayPal proxy endpoint (#2875)

* Removed 'usdRate' from 'FiatDonation' payload

* Updated PayPal endpoints

* BG-1289 Widget word replaced (#2876)

## Explanation of the solution
Still uising "widget" in site copy. Replaces with "Donation Form". 

## Instructions on making this work

- run `yarn` or `yarn install` to install npm dependencies
- run `yarn run test --watchAll` to verify all tests still pass
- (optional) run `yarn run build` to verify the build passes
- run `yarn start` to start the webapp
-

## UI changes for review
N/A

* BG-1281: master fixes (#2877)

## Explanation of the solution

## Instructions on making this work

- run `yarn` or `yarn install` to install npm dependencies
- run `yarn run test --watchAll` to verify all tests still pass
- (optional) run `yarn run build` to verify the build passes
- run `yarn start` to start the webapp
-

## UI changes for review

When major UI changes are introduced with a PR, please include links to URLS to compare or screenshots demonstrating the difference and notify on design changes

* Default currency (#2879)

* change type

* additional loading

* include cookie in request

* remove additional error ui

* BG-1239: Improve / Expand pending donation information (#2880)

* Add fiatramp field to DonationRecord type

* Fix network sortkey chainName->viaName

* Update to always use viaName even for fiat

* Fix NetworkDropdown to use Fiat: fiat option type

* Add third tab in the Donor's "My Donations" page that would allow them to see all payment intents explicitly (#2868)

* Include 'intent' in DonationsQueryParams['status']

* Add new 'Awaiting Payment' tab

* fix overlay for tabs

* Increase tab width to w-52

* Make more mobile-friendly

* BG-1295: Donation increment buttons (#2891)

* Add incrementers for USD

* Update src/components/donation/Steps/DonateMethods/Stripe/Incrementers.tsx

Co-authored-by: ap-justin <[email protected]>

* Use getValues instead of watch

---------

Co-authored-by: ap-justin <[email protected]>

* Set selected currency in cookie (#2893)

* custom host

* set cookie

* switch to onchange

* Update src/constants/urls.ts

added mapping in gateway

Co-authored-by: SovereignAndrey <[email protected]>

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Get/set cookie in client (#2896)

* cookie helpers

* set default code

* modify cookie on change

* set on endpoint instead

* side effect first

* comment out (#2898)

* BG-1286: compound SF opt-in (#2892)

* types and UI

* default value

* match server

* include in fetched

* BG-1298: fix img editor issues (#2897)

* remove pre-crop

* fix bug isDismissible not working

* simplify interface

* derive values

* validate cropped

* simplify handlers

* validate immediately

* remove outdated comment

* faq copy changes

* Added HomePage (#2894)

* Added HomePage

Signed-off-by: Navansh <[email protected]>

* Code Restructuring and Refactoring for Homepage

Signed-off-by: Navansh <[email protected]>

---------

Signed-off-by: Navansh <[email protected]>

* Landing page fixes (#2899)

* misnamed image file

* dup wildcard route removed

* formatting and other cleanup fixes

* spelling fixes

* fixes for styles renaming

* fix DOM property naming typo

* blog posts use dapp URL and remove trailing slash

* fix links to marketplace & register page

* fix DAPP link to drop app if on prod

* remove commented out code

* revert svg changes from DOM prop fix

* revert svg changes from DOM prop fix

* lint fixes pt1

* footer updates

* fix hooks

* use for...of

* Follow up fixes (#2901)

* yarn gormat

* done lint

* fix failing test

* revert rename

* revert react namespace

* react namespace

* react namespace

---------

Co-authored-by: Andrey <SovereignAndrey>
Co-authored-by: ap-justin <[email protected]>

* Convert common arbitrary values to built in tailwind classes (#2902)

* misnamed image file

* dup wildcard route removed

* formatting and other cleanup fixes

* spelling fixes

* fixes for styles renaming

* fix DOM property naming typo

* blog posts use dapp URL and remove trailing slash

* fix links to marketplace & register page

* fix DAPP link to drop app if on prod

* remove commented out code

* revert svg changes from DOM prop fix

* revert svg changes from DOM prop fix

* yarn gormat

* lint fixes pt1

* done lint

* footer updates

* fix failing test

* fix hooks

* use for...of

* revert rename

* revert react namespace

* react namespace

* react namespace

* blog card classes

* delete unused

* done blog card bene carousel

* more fixes

* remove unused controls

* remove unused controls

* remove one time

* unused utils

* to tailwind

* to navy

* to tw util

* to tailwind

* to tailwind

* to tailwind

---------

Co-authored-by: Andrey <SovereignAndrey>

* `DAPP_URL` to `BASE_URL` fix (#2903)

* DAPP_URL >> BASE_URL

* format/lint fixes

---------

Co-authored-by: Andrey <SovereignAndrey>

* To tsx (#2904)

* to tsx

* dryner

* common media

* remove template

* remove custom classes

* remove brand classes

* redirect signins to marketplace, not to root (#2905)

Co-authored-by: Andrey <SovereignAndrey>

* temp hide landing page btns (#2915)

Co-authored-by: Andrey <SovereignAndrey>

* Static pages for legal (#2917)

* routes for new legal pages

* 3 legal pages copied from prod

* fix landing page footerlinks

---------

Co-authored-by: Andrey <SovereignAndrey>

* Home groupings (#2916)

* remove nested

* animations

* blog card

* move hero bottom

* hero bottom

* benefits

* testimonials

* move footer

* nav bar footer

* move button

* fix lint

* Scope custom classes, remove unused (#2919)

* move carousel styles

* remove svg animation

* to module

* remove benefits landing

* remove util

* remove app.css

* common css import

* Reuse layout (#2918)

* reuse layout

* remove unused import

* move v2 footer to app/footer along with depreciated landing header file; refactor newsletter to use new styles w/ v2 footer; fix footer links & copyright;

* remove unused import

* footer social links from constants file

* fix test

* watch sticky instead of scroll

* remove no effect

* links clean up: dropdown menu & nav logo

---------

Co-authored-by: Andrey <SovereignAndrey>

* BG-1243: create crypto intents on Checkout page load + confirm crypto intents on success (#2895)

* Create crypto intent on checkout load + confirm on tx success

* Use template string in TxSubmit

* Extract useCreateCryptoIntent

* Show 'Simulating tx...' when no transactionId is present

* Remove transactionId state

* Refactor

* Turn useCryptoIntentCreatorMutation into a query

* Revert change to ErrorContext

* Remove transformResponse from useConfirmCryptoIntentMutation

* Include tip in crypto tx estimation

* Rename totalAmount->grossAmount

* Legal pages updates (#2922)

* updates to legal pages

* change Link to anchor tag

* link component added to terms page

---------

Co-authored-by: Andrey <SovereignAndrey>

* Landing page fixes (#2921)

* reuse layout

* remove unused import

* move v2 footer to app/footer along with depreciated landing header file; refactor newsletter to use new styles w/ v2 footer; fix footer links & copyright;

* remove unused import

* footer social links from constants file

* fix test

* watch sticky instead of scroll

* remove no effect

* links clean up: dropdown menu & nav logo

* hero

* done section 2

* overflow

* move asset

* position chars move assets

* remove custom css

* embed color

* exact

* done benefits

* done brands

* video desktop

* animation

* alt

* spaces

* roundness

* file name

* move assets

* done testimonials

* done blogs

* done blog

* external screen classes

* testimonials overflow fix

* hero hero bottom transition

* done hero

* carousel blemish

* benefits blemish

* done animation

* page spacing

* increate bot padding

* blurs

* skeleton

* add padding

* grid footer

* responsive styles

* intercom hide

* remove unused images

* icon

* slider buttons

* blemish transition

* spacing

* footer spacing

* increase blur

* Update src/App/Header/index.tsx

Co-authored-by: SovereignAndrey <[email protected]>

---------

Co-authored-by: Andrey <SovereignAndrey>
Co-authored-by: SovereignAndrey <[email protected]>

* overflow-x-hidden (#2923)

* hidden -> clip (#2924)

* BG tip - copy changed

* donation split copy changed

* split - patch for non-widgetConfig scenario

* temp removal of paypal btns from checkout (#2926)

* temp removal of paypal btns from checkout

* fix build

---------

Co-authored-by: Andrey <SovereignAndrey>

* copy fixes: Widget >> Donation Form

* swap in Laira mascot img

* adjust schema

* move program creator

* milestone

* remoev initial

* new program form

* new program update type

* fxi type error

* update delete

* done program editor

* add deafult value

* milestone buttons

* test change

* usesubmit only

* git reset

* remove mb-2

* create program

* add milestone

* delete method

* revert to program editor

* form before clean

* revert name

* back to defaultVals

* use values

* switch to v8 endowment

* update endpoint algolia

* registration-update

* bump endpoint versions

* crypto intent ver

* bump version

* wise error display

---------

Signed-off-by: Navansh <[email protected]>
Co-authored-by: Nenad Misic <[email protected]>
Co-authored-by: Juan Paolo Mariano <[email protected]>
Co-authored-by: SovereignAndrey <[email protected]>
Co-authored-by: Andrey <SovereignAndrey>
Co-authored-by: Navansh <[email protected]>

* Rolled back stripe donation endpoint (#2944)

* up version (#2945)

* Update deps (#2948)

* update biome and amplify

* update stripe and other minor

* rest minor

* update package manager

* revert test

* BG-1307 GDPR Banner (#2946)

* GDPR banner for non-essential cookies/trackers

* transfer to module

---------

Co-authored-by: Andrey <SovereignAndrey>
Co-authored-by: ap-justin <[email protected]>

* Rolled back crypto-donation endpoint (#2950)

* BG-1312: Nonprofits page (#2951)

* done hero

* increase padding

* nonprofit info

* done why bg

* brands content

* extract benefits content

* done benefits

* new braands

* done fiscal sponsorship

* move testimonial content

* done testimonials

* bottom cta done

* correct copy

* donor info link

* update vitest

* BG-1320 Homepage fixes (#2943)

* loader color

* brand img explicit height

* tally explicit height

* endow card explicit height

* testimonial card epxlict height

* base layout

* path bg

* Testimonials fixes to copy for punctuation and other typos/errors (#2947)

Co-authored-by: Andrey <SovereignAndrey>

* Carousel cards mixed up (#2949)

Co-authored-by: Andrey <SovereignAndrey>

* format

* fix cherrypick

* cherry fix

* detail fixes

---------

Co-authored-by: SovereignAndrey <[email protected]>

* BG-1326 Fallback Image updated (#2952)

* flying character used as fallback for logo/card img everywhere

* new img

* BG-1311: Donor info page (#2953)

* done hero

* increase padding

* nonprofit info

* done why bg

* brands content

* extract benefits content

* done benefits

* new braands

* done fiscal sponsorship

* move testimonial content

* done testimonials

* bottom cta done

* correct copy

* donor info link

* update vitest

* BG-1320 Homepage fixes (#2943)

* loader color

* brand img explicit height

* tally explicit height

* endow card explicit height

* testimonial card epxlict height

* base layout

* path bg

* Testimonials fixes to copy for punctuation and other typos/errors (#2947)

Co-authored-by: Andrey <SovereignAndrey>

* Carousel cards mixed up (#2949)

Co-authored-by: Andrey <SovereignAndrey>

* format

* fix cherrypick

* cherry fix

* detail fixes

* done hero

* move hero bottom

* benefits abstract

* benefits section

* done cta

* cta text

* add donors link

* delete

* move img

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Added JWT to registration update endpoint (#2954)

* update endpoints (#2955)

* BG-1327 Banner fallback (#2966)

* fallback banner added for profile

* admin logo fallback to character

* Get user attributes from DB instead of cognito (#2967)

* session loader

* update types

* formatted

* remove unused

* remove duplicate check

* env

* User dashboard (#2968)

* common layout

* rename sidebar header

* move sidebar header

* factor out header

* fix layout

* user dashboard

* capitalize

* copy settings page

* edit profile page

* dashborad link

* create update action

* BG-1331: Move donate page inside user dashboard (#2970)

* convert to container query

* move donations to user dashboard

* dont show icon on dashbaord

* revert hide icon

* Implement share in stripe success page (#2972)

* add recipientId

* extract share

* use extracted

* BG-1333 T&C for Widgets (#2973)

* Basic T&C added to bottom of Widget + Config preview

* simplify widget terms to remove name

* move T&C to Content component to access queried profile object

* add intent as old (#2977)

* add unsupported chainId

* skip estimation

* token option

* crypto qr submit

* update copier api

* add direct mode

* direct option

* receiver addr

* change copy (#2990)

* BG-1341 Widget adaptations (#2976)

* hide lines in summary screen when related amounts are 0 (or tipping is disabled)

* Stock & DAF donations can set BG tip & split %

* Add SF fund explainer and Laira character to Summary view

* Address PR feedback

* tweak summary info shown w/ Tip/SF logic

* BG-1346 Donation Builder: style fixes and design improvement (#2989)

* design/style changes to donation form builder

* span >> div

* tweak styles for padding & alignment on smaller screen layout

* Address PR feedback

* Nonprofits page improvs (#2991)

* change hero img

* remove old hero img

* add laira imgges

* remove waiving char

* use latest waiving char

* replace waiving laira

* replace icon with laira

* why bg icons

* sf benefits content

* formatting

* replace waving (#2992)

* Donor page changes (#2993)

* replace waving

* repalce hero image

* use sf assets

* delete unused

* laira icons

* benefits order

* fixes for testimonals

* remove unused file (missed in orig merge)

* Home fixes (#2995)

* remove unused

* replace wavenly with core

* change brands heading

* add spacing

* remove unused module

* Donate form screen short carousel (#2997)

* remove unused

* new screen shots

* create carousel

* use new carousel

* fix size

* remove unusd

* Remove Leaderboard (#2996)

* remove unused leaderboard code & tests

* remove additional Leaderboard items

* add small padding to bottom of SF msg so doesn't run into payment form (#2998)

* Bg 1343 - move tip opt out to settings (#2999)

* update types

* move component

* fix type error

* Incrementors adapted to work with all currencies (#3004)

* BG-1350 ComplyDog sans Quill (#3005)

* complydog JS sans Quill

* use local script instead of hitting complydog's server

* BG-1344: Program donate checkbox (#3003)

* add prog type

* prog disable checkbox

* retrive attribute

* correct endpoints (#3000)

* rename variable

* Donation state handling (#3002)

* local state

* improve shape

* apply new types

* save

* widget content

* doante state to be constructed inside

* use intent instead

* remove reducer

* state shape

* crypto sender

* hello

* tip format

* clearer state

* merge or replace

* working fiat intent

* remove redundant

* remove unwanted

* add mode

* to switch

* fixes

* daf and stocks doesnt skip

* add loader

* remoev unused comment

* convert widget slice to plain state

* set init state instead

* skip split

* remove comment

* remove unsed

* resume no longer need intermediary donation loader page

* info comment

* add recipientId

* apply skips on back

* revert crypto checkout

* revert stripe checkout

* revert stripe checkout

* tx submit loading

* reset tip on token change

* change comment loctin

* tip back to donate form if skipped

* revert rename

* remove unsed comment

* remove unused omit

* verbose comment

* revert optional

* remove intent after loading

* fetch hide tip config

* info

* split desc

* testimonial copy fixes (#3007)

* BG-1357: DB Split settings (#3008)

* render slider

* split fix flag

* fix check field

* change type and adjust (#3006)

* add in donation state

* mix db value to widget value

* add label

* revert mixup

* standalone source attr

* format

* revert for endow option

* take inverse

* fee corrected & copy updates in Admin Settings (#3016)

* Payout min edit UI (#3015)

* update type and add field

* add placeholder

* add spacing

* Methods widget config (#3017)

* add method types

* donate methods widget config

* remove unused

* order configurer component

* format

* error message

* error msg

* fix bug

* no need for whole mthod

* revert smaple

* error msg

* Donate methods admin setting (#3018)

* move comp and helper

* sort

* reuse in settings page

* doante page use setting

* update link (#3009)

* swap tab name (#3019)

* distinguish supported/unsupported

* qr token type

* format

* switch to chainId map

* reverts

* generic donate thanks

* add spacing

* create intent on direct donation

* add space

* rename

* remove as const

* format

* Add lefthook git hooks (#3020)

* lefthook install and config

* hello world

* hello world

* add glob

* ehello world

* x

* x

* test

* test

* test

* testunused

* testunused

* Endow videos UI (#3021)

* media endpoints

* use v1

* media page and route

* container and header

* featured video container

* video adder modal

* show modal

* add video wiring

* paginated videos

* edit pros

* video preview

* videos nested

* adder to edidtor

* update payload

* init params

* responsive video

* toggle featured

* increase card per row

* add disabled

* pagination limit

* render videos in profile

* edit albel

* BG-1374: admin settings tweaks (#3033)

* 5 rows

* separator heading

* move payout minimum

* remove unused

* switch from Algolia >> CloudSearch (#3034)

* Widget custom title and description (#3035)

* udpate checkfield style

* parse description in widget page

* add onChange check field

* title and description fields

* show fallback if empty

* get recipient addr

* revert additional wallets

* direct button primary accent

---------

Signed-off-by: Navansh <[email protected]>
Co-authored-by: Nenad Misic <[email protected]>
Co-authored-by: Andrey <SovereignAndrey>
Co-authored-by: Juan Paolo Mariano <[email protected]>
Co-authored-by: SovereignAndrey <[email protected]>
Co-authored-by: Navansh <[email protected]>

* Program metrics (#3041)

* add new attributes

* target raise edit field

* program tally

* targetRaise is nullable

* unset targetRaise

* Update src/pages/Admin/Charity/ProgramEditor/ProgramInfo/ProgramInfo.tsx

Co-authored-by: SovereignAndrey <[email protected]>

---------

Co-authored-by: SovereignAndrey <[email protected]>

* nav dropdown label fixes

* BG-1381: Program selector in widget (#3049)

* export program selector

* load everythig

* add in snippet program id

* add prog field

* parse program id

* program initial state widget

* add on loaded

* update stocks schema

* update stocks schema

* remove unused

* ignore lint

* preview selected program

* BG-1383 BG-1384 minor fixes (#3051)

* User bookmarks (#3052)

* remove old type

* bookmarks update

* bookmarks btn

* bookmarks list

* bookmarks lists

* userId from jwt

* favorite -> profile

* update endpoints

* Header search V1 (#3054)

* convert to input

* show on focus

* update styles

* remain open when hovered

* marketplace context

* convert to context

* remoev log

* marketplace flag

* endowments search

* unitialized as loading

* separate search component

* search dropdown component

* propagate search to marketplace

* link home and marketplace query

* debounce happens in useCards

* BG-1385 WP Plugin doc page (#3053)

* WP Plugin Documentation page

* remove import

* clean up table

* address PR feedback

* fix typo

* add top countries (#3065)

* HOTFIX: switch to AWS WP server

* HOTFIX: WP server - HTTPS

* WP API updated

* Revert "WP API updated"

This reverts commit 402c3d5.

* Update deps (#3066)

* batch one updates

* update deps

* replace iwth write

* BG-1393: UK aid UI (#3068)

* batch one updates

* update deps

* replace iwth write

* uk fields

* shown checkbox not crypto

* form donor and server format

* change format

* donor address apes

* add annotation

* Update src/components/donation/Steps/Summary/DonorForm.tsx

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Display top countries (#3070)

* endpoint

* top countries data-access

* new chains integrated (#3080)

* new chains updated

* add chains to other types

* update rest of token/chain items; add stargaze/kujira testnets;

* add new chains to keplr wallet

* BG-1390: Cards v2 (#3081)

* remove implicit fields

* card content

* bookmark btn improvement

* link and button within card

* bookmark btn optimistic update

* comments

* fix arg

* remove decimal

* Custom tokens UI (#3069)

* coin gecko query

* token search component

* add name and logo

* add coingecko platformId

* add static list

* temp remove queyr

* warning

* use fuse for search

* remove coins

* max size

* init token not required

* add example

* file size

* proceed button

* dont format json

* set as token

* ignore json

* no need for amount

* remoev custom solana xrp

* platformId

* udpate coins

* usd rate

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Chain selector (#3082)

* add logos

* chain combobox

* use new chain selector

* option chainId to chainId

* value chainId

* Osmosis support added (#3084)

* add osmosis chains

* post-fix 'Testnet' to unsupported chain name (when applicable)

* Headless UI v2 (#3085)

* headless ui

* done batch one

* done coutnries

* done batch two

* done batch 3

* done batch 4

* chain selector scroller click

* token options scroll click fix

* max height

* remove extra border

* downgrade yarn

* fix program hidden

* combobox null value

* 2.1.0 transition built in dialog

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Add coinbase extension wallet (#3087)

* update icons

* use 6963 and add coinbase

* update icon imports

* unload after switching error

---------

Co-authored-by: SovereignAndrey <[email protected]>

* QR copy (#3088)

* add QR warning

* more readable

* In honor of field (#3089)

* honor field

* set from intent

* closer to label

* close to lable

* rename form

* wiring

* Fix token selector search and updates (#3091)

* combobox inside popover

* search icon on right

* rename interface

* BG-1417: Cheque FAQ (#3105)

* add content

* faq content

* BG-1423: chain selector updates (#3104)

* change type and adjust for chainId ''

* shorter

* sort chains

* display and focus on error

* Network dropdown bug fixes (#3106)

* add immediate to open on focus

* remove hidden input

* WP url updated

* BG-1424: Improve token search (#3102)

* add not listed

* mixed

* virtualized

* per chain json file

* biome ignore

* add missing

* add token placeholder

* spacing

* Revert "WP url updated"

This reverts commit ffb6814.

* upgrade to signclient (#3103)

* Network select should focus first when all is error (#3109)

* more flexible api

* use new api

* selector value is chainId

* remove hookform context

* Donate crash + cherry pick from master (#3108)

* make default values required

* remove undefined

* remove placeholder (#3039)

* BG-1380: share fixes (#3040)

* remove excess

* lines and punctuations

* handles and notes

* BG-1382: Users unable to create programs occasionally (#3050)

* fetch new token

* comment

* refresh token every 5 minutes

* add ms multiplier (#3067)

* HOTFIX: switch to AWS WP server

* HOTFIX: WP server - HTTPS

* WP API updated

* Revert "WP API updated"

This reverts commit 3ecb5d0.

* fix source (#3083)

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Crypto form integration test (#3110)

* init test and mocks

* persisted state

* empty form validation msgs

* prior to selecting token

* error correcting

* remove test id

* BG-1399: Stripe status handling for manual bank verification (#3107)

* Update stripe payment status API to use latest version

* Added verify bank account button to 'pending' tab in My Donations

* Add 'arrivalDate' in Donations Thanks page

* Donation Thanks Page for 'requires_action' status and logged in donor

* Show bank verification link for guest donors on thank you page

* Removed redundant comment

* Renamed 'Verify Bank Account' to 'Action'

* Removed unused import

* Add type def for specific bank verification fields

* Add wordpress assets to post page (#3090)

* add in public assets and load via react helmet

* remove extra space

* dry input

* preserve header and footer style

---------

Co-authored-by: SovereignAndrey <[email protected]>

* Stripe form integration test (#3111)

* update currency selector with accessible headless components

* extract rhf from field

* no rhf stripe form

* add missing error

* rhf hook

* rhf

* should focus

* init setup

* prefilled state

* validation test and increments

* stripe form loading and error

* Node proxies (#3113)

* optimism proxy

* revert mistake

* base proxy

* terra proxies

* stargaze and juno, compress lcd,rpc to nodeUrl

* osmosis

* kujira

* update terra

* Add 'ukGiftAid' field in fiat donation payload (#3121)

* WP URL updated

* Cover processing fee UI (#3112)

* processing fees

* fee allowance on intent

* fix type errors

* fee allowance checkbox

* flatten

* save as fee allowance instead of bool

* processing fee row

* fee allowance row

* remove console log

* add fee allowance to estimate gross amount

* add to deps list

* tip doesnt disable processign fee

* total include processing fee

* parent set border child set individual padding

* no need for custom bottom margin

* psersistend state doesnt drive UI show

* fix ts error

* Copy tweak

---------

Co-authored-by: SovereignAndrey <[email protected]>

* BG-1437: Tribute notif UI (#3122)

* fix: pass type

* form elements

* schema and field sizing

* remove unused import

* init tribute

* stripe checkout tribute wiring

* wiring crypto

* fix spacing

* fix initial size of

* msg char counter

* FIX: header footer styles (#3124)

* only apply wp override in /blog

* only apply wp override on /blog

* only to blog/:slug

* stocks form test (#3126)

* Async chain (#3123)

* update definition and adjust consumers

* cached get chain options

* use token definition

* only pick subset

* actual url

* New donations table fields (#3125)

* Update '/ap/donations.ts' types with new fields

* Fix 'Action' column for fiat bank verification url in mobile table

* Fix 'Action' column for fiat bank verification url in donations table

* Added 'Recurring' column for donor My Donations tables

* Added 'Direct Donation' and 'SF Donation' columns for donor My Donations tables

* Added 'appUsed' in nonprofit My Donations table

* Added 'paymentMethod' in nonprofit My Donations table

* Added 'isRecurring' in nonprofit My Donations table

* Single csv report

* Add other fields into nonprofit Donations table

* Fix 'Load More' button to span full width of table

* DAF form test + MSW mocking (#3127)

* add msw

* done crypto using msw

* done incrementers

* stocks test use msw

* fix fetch error

* fix build

* DAF form test

* Add staging endpoint for S3 file uploading (#3139)

* Donate steps - test skips and resets (#3128)

* add msw

* done crypto using msw

* done incrementers

* stocks test use msw

* fix fetch error

* fix build

* DAF form test

* test skips

* tip reset

* fix steps test

* fix copier warning

* remove mock

* change donation method

* remove unused

---------

Co-authored-by: SovereignAndrey <[email protected]>

* compress images and use webp format (#3140)

* Stripe checkout test - error paths (#3141)

* add msw

* done crypto using msw

* done incrementers

* stocks test use msw

* fix fetch error

* fix build

* DAF form test

* test skips

* tip reset

* fix steps test

* fix copier warning

* remove mock

* change donation method

* remove unused

* client secret loading

* by test id

* separate file

* error

* error modals

* donate btn

* remove debug

* deps

* use chariot connect

* grant error handling

* move type to types/page

* button loader

* success screen

* set chariot as default

* remove error

* adjust actual amount

* include in try catch

* show prompts

---------

Signed-off-by: Navansh <[email protected]>
Co-authored-by: Nenad Misic <[email protected]>
Co-authored-by: Juan Paolo Mariano <[email protected]>
Co-authored-by: SovereignAndrey <[email protected]>
Co-authored-by: Navansh <[email protected]>
  • Loading branch information
5 people committed Aug 5, 2024
1 parent 29df0fc commit 3ec29b0
Show file tree
Hide file tree
Showing 19 changed files with 287 additions and 127 deletions.
3 changes: 3 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@ PUBLIC_STRIPE_KEY=

# value "sb" recommended in sandbox mode, see https://developer.paypal.com/sdk/js/configuration/#link-clientid
PUBLIC_PAYPAL_CLIENT_ID=sb

# Recommended test value, see https://givechariot.readme.io/reference/integrating-connect#add-chariot-connect
PUBLIC_CHARIOT_CONNECT_ID="test_15b867c559e3c73a80cd69efd115cb928cb9874625291f756f7273446bcd8f88"
1 change: 1 addition & 0 deletions amplify.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ frontend:
- PUBLIC_SENTRY_DSN=${SENTRY_DSN}
- PUBLIC_STRIPE_KEY=${PUBLIC_STRIPE_KEY}
- PUBLIC_PAYPAL_CLIENT_ID=${PUBLIC_PAYPAL_CLIENT_ID}
- PUBLIC_CHARIOT_CONNECT_ID=${PUBLIC_CHARIOT_CONNECT_ID}
- export NODE_OPTIONS="--max-old-space-size=8192"
- yarn run build
artifacts:
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
"qrcode.react": "3.1.0",
"quill": "2.0.2",
"react": "18.2.0",
"react-chariot-connect": "1.0.8",
"react-csv": "2.2.2",
"react-dom": "18.2.0",
"react-dropzone": "14.2.3",
Expand Down
2 changes: 1 addition & 1 deletion src/components/donation/Steps/Submit/Crypto/DirectMode.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@ import Copier from "components/Copier";
import QueryLoader from "components/QueryLoader";
import { chains } from "constants/chains";
import { appRoutes } from "constants/routes";
import type { DonateThanksState } from "pages/DonateThanks";
import { QRCodeSVG } from "qrcode.react";
import { useNavigate } from "react-router-dom";
import { useCreateCryptoIntentQuery } from "services/apes";
import type { DonateThanksState } from "types/pages";
import ContinueBtn from "../../common/ContinueBtn";
import { toDonor } from "../../common/constants";
import type { CryptoSubmitStep } from "../../types";
Expand Down
136 changes: 136 additions & 0 deletions src/components/donation/Steps/Submit/DAFCheckout/ChariotCheckout.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
import ContentLoader from "components/ContentLoader";
import Prompt from "components/Prompt";
import { CHARIOT_CONNECT_ID } from "constants/env";
import { appRoutes } from "constants/routes";
import { useErrorContext } from "contexts/ErrorContext";
import { useModalContext } from "contexts/ModalContext";
import ErrorBoundary from "errors/ErrorBoundary";
import ChariotConnect from "react-chariot-connect";
import { useNavigate } from "react-router-dom";
import { useLazyChariotGrantQuery } from "services/apes";
import { useGetter } from "store/accessors";
import { userIsSignedIn } from "types/auth";
import type { DonateThanksState } from "types/pages";
import { useDonationState } from "../../Context";
import { currency } from "../../common/Currency";
import Summary from "../../common/Summary";
import { toDonor } from "../../common/constants";
import type { DafCheckoutStep } from "../../types";
import { DonationTerms } from "../DonationTerms";
import { toPlatformValues } from "./toPlatformValues";

export default function ChariotCheckout(props: DafCheckoutStep) {
const {
init,
details,
liquidSplitPct,
tip,
donor: fvDonor,
honorary,
feeAllowance,
} = props;
const { setState } = useDonationState();
const { handleError } = useErrorContext();
const { showModal, closeModal } = useModalContext();
const [createGrant, { isLoading }] = useLazyChariotGrantQuery();
const navigate = useNavigate();
const user = useGetter((state) => state.auth.user);

const platformAmount = +details.amount + feeAllowance + (tip?.value ?? 0);

return (
<Summary
classes="group grid content-start p-4 @md/steps:p-8 [&_#connectContainer]:mt-8"
onBack={() => setState({ ...props, step: "summary" })}
Amount={currency(details.currency)}
amount={+details.amount}
feeAllowance={feeAllowance}
splitLiq={liquidSplitPct}
frequency="one-time"
tip={
props.tip
? {
value: props.tip.value,
charityName: init.recipient.name,
}
: undefined
}
>
<ErrorBoundary>
<ChariotConnect
theme="LightBlueTheme"
disabled={isLoading}
cid={CHARIOT_CONNECT_ID}
// https://givechariot.readme.io/reference/integrating-connect#pre-populate-data-into-your-connect-session
onDonationRequest={async () => ({
amount: platformAmount * 100, //in cents
firstName: fvDonor.firstName,
lastName: fvDonor.lastName,
email: fvDonor.email,
})}
// see https://givechariot.readme.io/reference/integrating-connect#capture-your-grant-intent
onSuccess={async (ev) => {
try {
showModal(Prompt, {
type: "loading",
children: "Processing payment..",
});

const { grantIntent, workflowSessionId } = ev.detail;
/** user may input amount different from our donate form */
const grantAmount: number = grantIntent.amount / 100;
const adjusted = toPlatformValues(grantAmount, {
amount: +details.amount,
tip: tip?.value ?? 0,
feeAllowance,
});

await createGrant({
transactionId: workflowSessionId,
amount: adjusted.amount,
tipAmount: adjusted.tip,
feeAllowance: adjusted.feeAllowance,
currency: details.currency.code,
endowmentId: init.recipient.id,
splitLiq: liquidSplitPct,
donor: toDonor(fvDonor),
source: init.source,
...(honorary.honoraryFullName && {
inHonorOf: honorary.honoraryFullName,
tributeNotif: honorary.withTributeNotif
? honorary.tributeNotif
: undefined,
}),
...(details.program.value && {
programId: details.program.value,
}),
}).unwrap();

closeModal();

navigate(`${appRoutes.donate_thanks}`, {
state: {
guestDonor: userIsSignedIn(user)
? undefined
: {
email: fvDonor.email,
fullName: `${fvDonor.firstName} ${fvDonor.lastName}`,
},
recipientId: init.recipient.id,
recipientName: init.recipient.name,
} satisfies DonateThanksState,
});
} catch (err) {
handleError(err, { context: "processing donation" });
}
}}
/>
</ErrorBoundary>
<ContentLoader className="h-12 mt-4 block group-has-[chariot-connect]:hidden" />
<DonationTerms
endowName={props.init.recipient.name}
classes="border-t border-gray-l4 mt-5 pt-4 "
/>
</Summary>
);
}
15 changes: 0 additions & 15 deletions src/components/donation/Steps/Submit/DAFCheckout/DAFCheckout.tsx

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion src/components/donation/Steps/Submit/DAFCheckout/index.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export { default } from "./DAFCheckout";
export { default } from "./ChariotCheckout";
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { describe, expect, it } from "vitest";
import { toPlatformValues } from "./toPlatformValues"; // Replace with the actual module name

describe("toPlatformValues", () => {
const testCases = [
{
name: "actual = specified",
actual: 107,
specified: { amount: 100, tip: 5, feeAllowance: 2 },
expected: { amount: 100, tip: 5, feeAllowance: 2 },
},
{
name: "actual > specified",
actual: 250,
specified: { amount: 100, tip: 5, feeAllowance: 2 },
expected: { amount: 233.64, tip: 11.68, feeAllowance: 4.67 },
},
{
name: "actual < specified",
actual: 80,
specified: { amount: 100, tip: 5, feeAllowance: 3 },
expected: { amount: 74.07, tip: 3.7, feeAllowance: 2.22 },
},
{
name: "zero tip and fee allowance",
actual: 1000,
specified: { amount: 100, tip: 0, feeAllowance: 0 },
expected: { amount: 1000, tip: 0, feeAllowance: 0 },
},
{
name: "actual < specified : tip is greater than amount (custom tip)",
actual: 100,
specified: { amount: 100, tip: 150, feeAllowance: 2 },
expected: { amount: 39.68, tip: 59.52, feeAllowance: 0.79 },
},
];

for (const { name, actual, specified, expected } of testCases) {
it(name, () => {
const adjusted = toPlatformValues(actual, specified);

// Check individual components
expect(adjusted.amount).toBeCloseTo(expected.amount, 2);
expect(adjusted.tip).toBeCloseTo(expected.tip, 2);
expect(adjusted.feeAllowance).toBeCloseTo(expected.feeAllowance, 2);

// Ensure the sum of components equals the grant amount
const totalResult =
adjusted.amount + adjusted.tip + adjusted.feeAllowance;
expect(totalResult).toBeCloseTo(actual, 2);
});
}
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
export function toPlatformValues(
/** amount provided by user in DAFPay form */
actual: number,
/** amounts provided by user in donation flow */
platform: { amount: number; tip: number; feeAllowance: number }
) {
const platFormTotal = Object.values(platform).reduce((a, b) => a + b);
const allowanceRate = platform.feeAllowance / platFormTotal;
const tipRate = platform.tip / platFormTotal;

const actualTip = actual * tipRate;
const actualFeeAllowance = actual * allowanceRate;

const actualAmount = actual - actualTip - actualFeeAllowance;

return {
amount: actualAmount,
tip: actualTip,
feeAllowance: actualFeeAllowance,
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ import ContentLoader from "components/ContentLoader";
import { appRoutes, donateWidgetRoutes } from "constants/routes";
import { useErrorContext } from "contexts/ErrorContext";
import { isEmpty } from "helpers";
import type { DonateThanksState } from "pages/DonateThanks";
import { useNavigate } from "react-router-dom";
import {
useCapturePayPalOrderMutation,
usePaypalOrderMutation,
} from "services/apes";
import type { DonateThanksState } from "types/pages";
import { toDonor } from "../../../common/constants";
import type { StripeCheckoutStep } from "../../../types";

Expand Down
2 changes: 1 addition & 1 deletion src/constants/env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ export const INTERCOM_HELP = "https://intercom.help/better-giving/en";
export const AWS_S3_PUBLIC_BUCKET = "https://endow-profiles.s3.amazonaws.com";

export const PUBLIC_STRIPE_KEY = process.env.PUBLIC_STRIPE_KEY || "";

export const PAYPAL_CLIENT_ID = process.env.PUBLIC_PAYPAL_CLIENT_ID || "";
export const CHARIOT_CONNECT_ID = process.env.PUBLIC_CHARIOT_CONNECT_ID || "";
1 change: 0 additions & 1 deletion src/pages/Donate/Content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ function Content({ intent, endowment }: Props) {
classes="max-md:px-4 md:col-start-2 md:row-span-5 md:w-[18.875rem]"
endowId={endowment.id}
/>

<p className="max-md:px-4 mb-4 max-mbcol-start-1 text-sm leading-normal text-left text-navy-l1 dark:text-navy-l2">
<span className="block mb-0.5">
Need help? See{" "}
Expand Down
Loading

0 comments on commit 3ec29b0

Please sign in to comment.