Skip to content

Commit 3cde14a

Browse files
authored
Merge pull request #13 from themeum/v1.1.0_digital_wallet
[Feat] introduce collaborator system, fundraiser tools, and admin enhancements
2 parents aebed44 + ea63749 commit 3cde14a

253 files changed

Lines changed: 6846 additions & 1390 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
-1.47 KB
Loading
6.84 KB
Loading

apps/growfund/public/openapi.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3688,19 +3688,19 @@
36883688
"type": "boolean",
36893689
"default": false
36903690
},
3691-
"enable_admin_commission": {
3691+
"enable_platform_fee": {
36923692
"type": "boolean",
36933693
"default": false
36943694
},
3695-
"admin_commission_type": {
3695+
"platform_fee_type": {
36963696
"type": "string",
36973697
"enum": [
36983698
"percent",
36993699
"flat"
37003700
],
37013701
"default": "percent"
37023702
},
3703-
"admin_commission_value": {
3703+
"platform_fee": {
37043704
"type": "number",
37053705
"nullable": true
37063706
},

apps/growfund/src/app/icons.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import BankTransferIcon from '@/assets/icons/bank-transfer.svg?react';
12
import BrandWhiteIcon from '@/assets/icons/brand-white.svg?react';
23
import BrandIcon from '@/assets/icons/brand.svg?react';
34
import BridgeIcon from '@/assets/icons/bridge.svg?react';
@@ -17,6 +18,8 @@ import RewardItemEmptyStateIcon from '@/assets/icons/empty-state/reward-item.svg
1718
import RewardEmptyStateIcon from '@/assets/icons/empty-state/reward.svg?react';
1819
import TagEmptyStateIcon from '@/assets/icons/empty-state/tag.svg?react';
1920
import EmptyThemesIcon from '@/assets/icons/empty-state/themes.svg?react';
21+
import EmptyWithdawalRequestIcon from '@/assets/icons/empty-state/withdrawal-request.svg?react';
22+
import WithdrawalEmptyStateIcon from '@/assets/icons/empty-state/withdrawal.svg?react';
2023
import EndFlagIcon from '@/assets/icons/end-flag.svg?react';
2124
import { default as EmptySearchIcon2, default as ErrorIcon } from '@/assets/icons/error.svg?react';
2225
import GiftPackIcon from '@/assets/icons/gift-pack.svg?react';
@@ -25,6 +28,8 @@ import ItemsColorful from '@/assets/icons/items-colorful.svg?react';
2528
import SpecialTributeIcon from '@/assets/icons/mdi_flower.svg?react';
2629
import NativePaymentIcon from '@/assets/icons/onboarding/native-payment.svg?react';
2730
import WooCommercePaymentIcon from '@/assets/icons/onboarding/woo-commerce.svg?react';
31+
import PaypalGatewayIcon from '@/assets/icons/paypal-gateway.svg?react';
32+
import PayPal from '@/assets/icons/paypal.svg?react';
2833
import FlowerIcon from '@/assets/icons/pepicon.svg?react';
2934
import RocketIcon from '@/assets/icons/rocket.svg?react';
3035
import SettingsWindowIcon from '@/assets/icons/settings-window.svg?react';
@@ -43,6 +48,7 @@ import WhiteLabelIcon from '@/assets/icons/white-label.svg?react';
4348

4449
export {
4550
BackerEmptyStateIcon,
51+
BankTransferIcon,
4652
BrandIcon,
4753
BrandWhiteIcon,
4854
BridgeIcon,
@@ -57,6 +63,7 @@ export {
5763
EmptySearchIcon,
5864
EmptySearchIcon2,
5965
EmptyThemesIcon,
66+
EmptyWithdawalRequestIcon,
6067
EndFlagIcon,
6168
ErrorIcon,
6269
FacebookSocialIcon,
@@ -69,6 +76,8 @@ export {
6976
LinkedinSocialIcon,
7077
MessagesEmptyStateIcon,
7178
NativePaymentIcon,
79+
PayPal,
80+
PaypalGatewayIcon,
7281
PledgeEmptyStateIcon,
7382
RewardEmptyStateIcon,
7483
RewardItemEmptyStateIcon,
@@ -84,5 +93,6 @@ export {
8493
TwitterXSocialIcon,
8594
WhatsappSocialIcon,
8695
WhiteLabelIcon,
96+
WithdrawalEmptyStateIcon,
8797
WooCommercePaymentIcon,
8898
};

apps/growfund/src/app/routes.tsx

Lines changed: 57 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ const SecuritySettingsPage = React.lazy(
4949
const UserPermissionsSettingsPage = React.lazy(
5050
() => import('@/features/settings/pages/user-permissions-settings-page'),
5151
);
52-
const ManualPagesGenerationSettingspage = React.lazy(
52+
const ManualPagesGenerationSettingsPage = React.lazy(
5353
() => import('@/features/settings/pages/manual-pages-generation-page'),
5454
);
5555

@@ -131,6 +131,9 @@ const FundraiserDetailsCampaigns = React.lazy(
131131
() => import('@/pages/fundraisers/fundraiser-details-campaigns'),
132132
);
133133

134+
//Withdrawal Requests Page
135+
const WithdrawalRequestPage = React.lazy(() => import('@/pages/withdrawals-page'));
136+
134137
// user
135138
const UserHomePage = React.lazy(() => import('@/dashboards/shared/pages/user-home-page'));
136139
const UserDonationsPage = React.lazy(() => import('@/dashboards/shared/pages/user-donations-page'));
@@ -142,6 +145,7 @@ const UserAccountSettingsPage = React.lazy(
142145
const UserNotificationsPage = React.lazy(
143146
() => import('@/dashboards/shared/pages/settings/user-notifications-page'),
144147
);
148+
145149
const UserBookmarkPage = React.lazy(() => import('@/dashboards/shared/pages/user-bookmarks-page'));
146150
const UserAnnualReceiptPage = React.lazy(
147151
() => import('@/dashboards/shared/pages/user-annual-receipt-page'),
@@ -160,10 +164,12 @@ const PledgeReceiptPage = React.lazy(() => import('@/public/pages/pledge-receipt
160164
const FundPage = loadComponentLazily('FundPage');
161165
const LicenseSettingsPage = loadComponentLazily('LicenseSettingsPage');
162166
const FundraiserBookmarkPage = loadComponentLazily('FundraiserBookmarkPage');
167+
const FundraiserWalletPage = loadComponentLazily('FundraiserWalletPage');
163168
const FundraiserProfilePage = loadComponentLazily('FundraiserProfilePage');
164169
const FundraiserMyDonationsPage = loadComponentLazily('FundraiserMyDonationsPage');
165170
const FundraiserAnnualReceiptsPage = loadComponentLazily('FundraiserAnnualReceiptsPage');
166171
const FundraiserMyPledgesPage = loadComponentLazily('FundraiserMyPledgesPage');
172+
const PayoutSettingPage = loadComponentLazily('UserPayoutSettingPage');
167173

168174
const allRoutes = [
169175
{
@@ -176,12 +182,12 @@ const allRoutes = [
176182
path: RouteConfig.Home.template,
177183
Component: RootLayout,
178184
ErrorBoundary: ErrorBoundary,
179-
roles: ['administrator', 'growfund_fundraiser'],
185+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
180186
children: [
181187
{
182188
path: RouteConfig.Home.template,
183189
Component: HomePage,
184-
roles: ['administrator', 'growfund_fundraiser'],
190+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
185191
mode: 'all',
186192
},
187193
{
@@ -193,13 +199,13 @@ const allRoutes = [
193199
{
194200
path: RouteConfig.Campaigns.template,
195201
Component: CampaignsPage,
196-
roles: ['administrator', 'growfund_fundraiser'],
202+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
197203
mode: 'all',
198204
},
199205
{
200206
path: RouteConfig.CampaignDetails.template,
201207
Component: CampaignDetailsPage,
202-
roles: ['administrator', 'growfund_fundraiser'],
208+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
203209
mode: 'all',
204210
},
205211
{
@@ -215,57 +221,57 @@ const allRoutes = [
215221
{
216222
path: RouteConfig.CampaignStepBasic.template,
217223
Component: BasicStep,
218-
roles: ['administrator', 'growfund_fundraiser'],
224+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
219225
mode: 'all',
220226
},
221227
{
222228
path: RouteConfig.CampaignStepGoal.template,
223229
Component: GoalStep,
224-
roles: ['administrator', 'growfund_fundraiser'],
230+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
225231
mode: 'all',
226232
},
227233
{
228234
path: RouteConfig.CampaignStepRewards.template,
229235
Component: RewardsStep,
230-
roles: ['administrator', 'growfund_fundraiser'],
236+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
231237
mode: 'reward',
232238
},
233239
{
234240
path: RouteConfig.CampaignStepSettings.template,
235241
Component: SettingsStep,
236-
roles: ['administrator', 'growfund_fundraiser'],
242+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
237243
mode: 'all',
238244
},
239245
{
240246
path: RouteConfig.CampaignStepAdditional.template,
241247
Component: AdditionalPage,
242-
roles: ['administrator', 'growfund_fundraiser'],
248+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
243249
mode: 'all',
244250
},
245251
],
246252
},
247253
{
248254
path: RouteConfig.Pledges.template,
249255
Component: PledgesPage,
250-
roles: ['administrator', 'growfund_fundraiser'],
256+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
251257
mode: 'reward',
252258
},
253259
{
254260
path: RouteConfig.CreatePledge.template,
255261
Component: CreatePledgePage,
256-
roles: ['administrator', 'growfund_fundraiser'],
262+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
257263
mode: 'reward',
258264
},
259265
{
260266
path: RouteConfig.EditPledge.template,
261267
Component: PledgeDetailsPage,
262-
roles: ['administrator', 'growfund_fundraiser'],
268+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
263269
mode: 'reward',
264270
},
265271
{
266272
path: RouteConfig.Backers.template,
267273
Component: BackersListingPage,
268-
roles: ['administrator', 'growfund_fundraiser'],
274+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
269275
mode: 'reward',
270276
},
271277
{
@@ -280,21 +286,21 @@ const allRoutes = [
280286
{
281287
path: RouteConfig.BackerOverview.template,
282288
Component: BackerDetailsOverviewPage,
283-
roles: ['administrator', 'growfund_fundraiser'],
289+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
284290
mode: 'reward',
285291
},
286292
{
287293
path: RouteConfig.BackerPledges.template,
288294
Component: BackerDetailsPledgesPage,
289-
roles: ['administrator', 'growfund_fundraiser'],
295+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
290296
mode: 'reward',
291297
},
292298
],
293299
},
294300
{
295301
path: RouteConfig.Donors.template,
296302
Component: DonorsListingPage,
297-
roles: ['administrator', 'growfund_fundraiser'],
303+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
298304
mode: 'donation',
299305
},
300306
{
@@ -309,13 +315,13 @@ const allRoutes = [
309315
{
310316
path: RouteConfig.DonorOverview.template,
311317
Component: DonorDetailsOverviewPage,
312-
roles: ['administrator', 'growfund_fundraiser'],
318+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
313319
mode: 'donation',
314320
},
315321
{
316322
path: RouteConfig.DonorDonations.template,
317323
Component: DonorDetailsDonationsPage,
318-
roles: ['administrator', 'growfund_fundraiser'],
324+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
319325
mode: 'donation',
320326
},
321327
],
@@ -352,25 +358,25 @@ const allRoutes = [
352358
{
353359
path: RouteConfig.Donations.template,
354360
Component: DonationsPage,
355-
roles: ['administrator', 'growfund_fundraiser'],
361+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
356362
mode: 'donation',
357363
},
358364
{
359365
path: RouteConfig.CreateDonation.template,
360366
Component: CreateDonationPage,
361-
roles: ['administrator'],
367+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
362368
mode: 'donation',
363369
},
364370
{
365371
path: RouteConfig.EditDonation.template,
366372
Component: EditDonationPage,
367-
roles: ['administrator'],
373+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
368374
mode: 'donation',
369375
},
370376
{
371377
path: RouteConfig.Analytics.template,
372378
Component: AnalyticsPage,
373-
roles: ['administrator', 'growfund_fundraiser'],
379+
roles: ['administrator', 'growfund_fundraiser', 'growfund_collaborator'],
374380
mode: 'all',
375381
},
376382
{
@@ -391,6 +397,12 @@ const allRoutes = [
391397
roles: ['administrator'],
392398
mode: 'all',
393399
},
400+
{
401+
path: RouteConfig.WithdrawalRequest.template,
402+
Component: WithdrawalRequestPage,
403+
roles: ['administrator'],
404+
mode: 'all',
405+
},
394406
{
395407
path: RouteConfig.Settings.template,
396408
Component: SettingsLayout,
@@ -466,7 +478,7 @@ const allRoutes = [
466478
},
467479
{
468480
path: RouteConfig.PagesSettings.template,
469-
Component: ManualPagesGenerationSettingspage,
481+
Component: ManualPagesGenerationSettingsPage,
470482
roles: ['administrator'],
471483
mode: 'all',
472484
},
@@ -531,60 +543,74 @@ const allRoutes = [
531543
{
532544
path: RouteConfig.FundraiserBookmarks.template,
533545
Component: FundraiserBookmarkPage,
546+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
547+
mode: 'all',
548+
ignore: !growfundConfig.has_growfund_pro,
549+
},
550+
{
551+
path: RouteConfig.FundraiserWallet.template,
552+
Component: FundraiserWalletPage,
534553
roles: ['growfund_fundraiser'],
535554
mode: 'all',
536555
ignore: !growfundConfig.has_growfund_pro,
537556
},
538557
{
539558
path: RouteConfig.FundraiserProfile.template,
540559
Component: FundraiserProfilePage,
541-
roles: ['growfund_fundraiser'],
560+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
542561
mode: 'all',
543562
ignore: !growfundConfig.has_growfund_pro,
544563
},
545564
{
546565
path: RouteConfig.FundraiserMyDonations.template,
547566
Component: FundraiserMyDonationsPage,
548-
roles: ['growfund_fundraiser'],
567+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
549568
mode: 'donation',
550569
ignore: !growfundConfig.has_growfund_pro,
551570
},
552571
{
553572
path: RouteConfig.FundraiserAnnualReceipts.template,
554573
Component: FundraiserAnnualReceiptsPage,
555-
roles: ['growfund_fundraiser'],
574+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
556575
mode: 'donation',
557576
ignore: !growfundConfig.has_growfund_pro,
558577
},
559578
{
560579
path: RouteConfig.FundraiserMyPledges.template,
561580
Component: FundraiserMyPledgesPage,
562-
roles: ['growfund_fundraiser'],
581+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
563582
mode: 'reward',
564583
ignore: !growfundConfig.has_growfund_pro,
565584
},
566585
{
567586
path: RouteConfig.FundraiserSettings.template,
568587
Component: UserSettingsLayout,
569-
roles: ['growfund_fundraiser'],
588+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
570589
mode: 'all',
571590
children: [
572591
{
573592
index: true,
574593
element: <Navigate to={RouteConfig.FundraiserAccount.buildLink()} replace />,
575-
roles: ['growfund_fundraiser'],
594+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
576595
mode: 'all',
577596
},
578597
{
579598
path: RouteConfig.FundraiserAccount.template,
580599
Component: UserAccountSettingsPage,
600+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
601+
mode: 'all',
602+
},
603+
{
604+
path: RouteConfig.FundraiserPayouts.template,
605+
Component: PayoutSettingPage,
581606
roles: ['growfund_fundraiser'],
582607
mode: 'all',
608+
ignore: !growfundConfig.has_growfund_pro,
583609
},
584610
{
585611
path: RouteConfig.FundraiserNotifications.template,
586612
Component: UserNotificationsPage,
587-
roles: ['growfund_fundraiser'],
613+
roles: ['growfund_fundraiser', 'growfund_collaborator'],
588614
mode: 'all',
589615
},
590616
],
Lines changed: 1 addition & 0 deletions
Loading

0 commit comments

Comments
 (0)