From d78354b796f8ae0bc6a5f6899966b093b99ddb3e Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Wed, 11 Sep 2024 11:15:04 +0300 Subject: [PATCH 1/3] Fix validations for fields in charter Africa --- apps/charterafrica/next-env.d.ts | 2 +- .../src/payload/globals/FocalCountries.js | 4 +- .../src/payload/globals/Footer.js | 61 ++++++++++--------- .../src/payload/globals/Settings.js | 4 +- 4 files changed, 38 insertions(+), 33 deletions(-) diff --git a/apps/charterafrica/next-env.d.ts b/apps/charterafrica/next-env.d.ts index 4f11a03dc..a4a7b3f5c 100644 --- a/apps/charterafrica/next-env.d.ts +++ b/apps/charterafrica/next-env.d.ts @@ -2,4 +2,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information. diff --git a/apps/charterafrica/src/payload/globals/FocalCountries.js b/apps/charterafrica/src/payload/globals/FocalCountries.js index 6a48011c2..660c73bd8 100644 --- a/apps/charterafrica/src/payload/globals/FocalCountries.js +++ b/apps/charterafrica/src/payload/globals/FocalCountries.js @@ -1,5 +1,5 @@ import { slateEditor } from "@payloadcms/richtext-slate"; -import { array } from "payload/dist/fields/validations"; +import { text } from "payload/dist/fields/validations"; import linkGroup from "../fields/linkGroup"; import richText from "../fields/richText"; @@ -67,7 +67,7 @@ const FocalCountries = { ) { return t("charterafrica.site:uniqueCountries"); } - return array(val, options); + return text(val, options); }, admin: { width: "50%", diff --git a/apps/charterafrica/src/payload/globals/Footer.js b/apps/charterafrica/src/payload/globals/Footer.js index af6251078..018b5459b 100644 --- a/apps/charterafrica/src/payload/globals/Footer.js +++ b/apps/charterafrica/src/payload/globals/Footer.js @@ -1,9 +1,36 @@ import { slateEditor } from "@payloadcms/richtext-slate"; -import { text, array } from "payload/dist/fields/validations"; +import { text, select } from "payload/dist/fields/validations"; import linkArray from "../fields/linkArray"; import richText from "../fields/richText"; +const socialMediaOptions = [ + { + value: "facebook", + label: "Facebook", + }, + { + value: "github", + label: "Github", + }, + { + value: "instagram", + label: "Instagram", + }, + { + value: "linkedin", + label: "LinkedIn", + }, + { + value: "slack", + label: "Slack", + }, + { + value: "twitter", + label: "Twitter", + }, +]; + const Footer = { slug: "footer", access: { @@ -120,32 +147,7 @@ const Footer = { pt: "Media", }, type: "select", - options: [ - { - value: "facebook", - label: "Facebook", - }, - { - value: "github", - label: "Github", - }, - { - value: "instagram", - label: "Instagram", - }, - { - value: "linkedin", - label: "LinkedIn", - }, - { - value: "slack", - label: "Slack", - }, - { - value: "twitter", - label: "Twitter", - }, - ], + options: socialMediaOptions, unique: true, required: true, admin: { @@ -160,7 +162,10 @@ const Footer = { ) { return t("charterafrica.site:uniqueMedia"); } - return array(val, options); + return select(val, { + ...options, + options: socialMediaOptions, + }); }, }, { diff --git a/apps/charterafrica/src/payload/globals/Settings.js b/apps/charterafrica/src/payload/globals/Settings.js index 0263d0e4c..f2be13749 100644 --- a/apps/charterafrica/src/payload/globals/Settings.js +++ b/apps/charterafrica/src/payload/globals/Settings.js @@ -1,4 +1,4 @@ -import { array } from "payload/dist/fields/validations"; +import { select } from "payload/dist/fields/validations"; import { locales } from "../utils/locales"; @@ -85,7 +85,7 @@ const Settings = { ) { return t("charterafrica.site:uniqueLocales"); } - return array(val, options); + return select(val, { ...options, options: locales }); }, }, { From a0a7b2898ae9e3c3d263ef8b8f78db1df5916049 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Wed, 11 Sep 2024 11:17:21 +0300 Subject: [PATCH 2/3] Bump Charter Africa version from 0.1.30 -> 0.1.31 --- apps/charterafrica/contrib/dokku/Dockerfile | 2 +- apps/charterafrica/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/charterafrica/contrib/dokku/Dockerfile b/apps/charterafrica/contrib/dokku/Dockerfile index b59a2e385..481de4776 100644 --- a/apps/charterafrica/contrib/dokku/Dockerfile +++ b/apps/charterafrica/contrib/dokku/Dockerfile @@ -1 +1 @@ -FROM codeforafrica/charterafrica-ui:0.1.30 +FROM codeforafrica/charterafrica-ui:0.1.31 diff --git a/apps/charterafrica/package.json b/apps/charterafrica/package.json index b6fca2c7a..6af5bfbbd 100644 --- a/apps/charterafrica/package.json +++ b/apps/charterafrica/package.json @@ -1,6 +1,6 @@ { "name": "charterafrica", - "version": "0.1.30", + "version": "0.1.31", "private": true, "author": "Code for Africa ", "description": "This is the official code for https://charter.africa site", From 501518737c7ef5d5bf3cd9480cd3182714006eff Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Wed, 11 Sep 2024 12:55:49 +0300 Subject: [PATCH 3/3] Update field to use validateUniqueArrayFieldSelect --- .../src/payload/globals/Footer.js | 22 +++++++------------ .../src/payload/globals/Settings.js | 18 ++++++--------- 2 files changed, 15 insertions(+), 25 deletions(-) diff --git a/apps/charterafrica/src/payload/globals/Footer.js b/apps/charterafrica/src/payload/globals/Footer.js index 018b5459b..ced5131f4 100644 --- a/apps/charterafrica/src/payload/globals/Footer.js +++ b/apps/charterafrica/src/payload/globals/Footer.js @@ -1,8 +1,9 @@ import { slateEditor } from "@payloadcms/richtext-slate"; -import { text, select } from "payload/dist/fields/validations"; +import { text } from "payload/dist/fields/validations"; import linkArray from "../fields/linkArray"; import richText from "../fields/richText"; +import validateUniqueArrayFieldSelect from "../utils/validateUniqueArrayFieldSelect"; const socialMediaOptions = [ { @@ -154,19 +155,12 @@ const Footer = { isClearable: false, isSortable: true, }, - validate: (val, options) => { - const { data, t } = options || {}; - if ( - data?.connect?.links?.filter((l) => l.media === val)?.length > - 1 - ) { - return t("charterafrica.site:uniqueMedia"); - } - return select(val, { - ...options, - options: socialMediaOptions, - }); - }, + validate: validateUniqueArrayFieldSelect( + "links", + "media", + socialMediaOptions, + "charterafrica.site:uniqueMedia", + ), }, { name: "url", diff --git a/apps/charterafrica/src/payload/globals/Settings.js b/apps/charterafrica/src/payload/globals/Settings.js index f2be13749..d5bbd7b24 100644 --- a/apps/charterafrica/src/payload/globals/Settings.js +++ b/apps/charterafrica/src/payload/globals/Settings.js @@ -1,6 +1,5 @@ -import { select } from "payload/dist/fields/validations"; - import { locales } from "../utils/locales"; +import validateUniqueArrayFieldSelect from "../utils/validateUniqueArrayFieldSelect"; const Settings = { slug: "settings", @@ -78,15 +77,12 @@ const Settings = { isClearable: false, isSortable: true, }, - validate: (val, options) => { - const { data, t } = options || {}; - if ( - data?.languages?.filter((l) => l.locale === val)?.length > 1 - ) { - return t("charterafrica.site:uniqueLocales"); - } - return select(val, { ...options, options: locales }); - }, + validate: validateUniqueArrayFieldSelect( + "languages", + "locale", + locales, + "charterafrica.site:uniqueLocales", + ), }, { name: "label",