Skip to content

Commit

Permalink
Add additional fields to campaign model (#946)
Browse files Browse the repository at this point in the history
* feature(shared): Add public and featured flag to campaign model

* feature(shared): links & slug

* pr review
  • Loading branch information
andrashee authored Nov 22, 2024
1 parent 2defbf6 commit 383c570
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
53 changes: 53 additions & 0 deletions admin/src/collections/Campaigns.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,36 @@ export const campaignsCollection = buildAuditedCollection<Campaign>({
description: 'Visible in the fundraising page.',
multiline: true,
},
link_website: {
title: 'Website Link',
dataType: 'string',
validation: { required: false },
description: 'The link to the website (optional)',
},
link_instagram: {
title: 'Instagram Link',
dataType: 'string',
validation: { required: false },
description: 'The link to the Instagram profile (optional)',
},
link_tiktok: {
title: 'TikTok Link',
dataType: 'string',
validation: { required: false },
description: 'The link to the TikTok profile (optional)',
},
link_facebook: {
title: 'Facebook Link',
dataType: 'string',
validation: { required: false },
description: 'The link to the Facebook profile (optional)',
},
link_x: {
title: 'X (formerly Twitter) Link',
dataType: 'string',
validation: { required: false },
description: 'The link to the X profile (optional)',
},
amount_collected_chf: {
dataType: 'number',
name: 'Collected amount in CHF',
Expand Down Expand Up @@ -104,6 +134,29 @@ export const campaignsCollection = buildAuditedCollection<Campaign>({
enumValues: campaignStatusEnumValues,
validation: { required: true },
},
public: {
dataType: 'boolean',
name: 'Public',
description: 'Listed on campaign overview',
defaultValue: false,
},
featured: {
dataType: 'boolean',
name: 'Featured',
description: 'Featured on campaign overview',
defaultValue: false,
},
slug: {
dataType: 'string',
name: 'Url Slug',
validation: {
required: true,
matches: /^[a-z0-9]+(?:-[a-z0-9]+)*$/,
matchMessage: 'Slug must contain only lowercase letters, numbers, and hyphens',
},
description:
'URL-friendly version of the title. Must be unique and contain only lowercase letters, numbers, and hyphens.',
},
metadata_description: {
dataType: 'string',
name: 'Metadata Description',
Expand Down
13 changes: 13 additions & 0 deletions shared/src/types/campaign.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,20 @@ export type Campaign = {
second_description?: string;
third_description_title?: string;
third_description?: string;
link_website?: string;
link_instagram?: string;
link_tiktok?: string;
link_facebook?: string;
link_x?: string;
amount_collected_chf: number; // automatically updated by incoming payments.
contributions: number; // automatically updated by incoming payments.
goal?: number;
goal_currency?: Currency;
end_date: Timestamp;
status: CampaignStatus;
public?: boolean;
featured?: boolean;
slug?: string; // optional, for nicer url instead of firestore id
metadata_description?: string;
metadata_ogImage?: string;
metadata_twitterImage?: string;
Expand All @@ -27,3 +35,8 @@ export enum CampaignStatus {
Active = 'active',
Inactive = 'inactive',
}

export type Link = {
name: string;
url: string;
};

0 comments on commit 383c570

Please sign in to comment.