Skip to content

Commit

Permalink
feat: Add contact email for main settings in AdminCP
Browse files Browse the repository at this point in the history
  • Loading branch information
aXenDeveloper committed Sep 25, 2024
1 parent 51f9d96 commit cb76782
Show file tree
Hide file tree
Showing 26 changed files with 63 additions and 27 deletions.
3 changes: 2 additions & 1 deletion apps/backend/schema.gql
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ type Mutation {
admin__core_languages__create(allow_in_input: Boolean!, code: String!, locale: String!, name: String!, time_24: Boolean!, timezone: String!): ShowCoreLanguages!
admin__core_languages__delete(code: String!): String!
admin__core_languages__edit(allow_in_input: Boolean!, default: Boolean!, enabled: Boolean!, id: Int!, locale: String!, name: String!, time_24: Boolean!, timezone: String!): ShowCoreLanguages!
admin__core_main_settings__edit(site_copyright: [StringLanguageInput!]!, site_description: [StringLanguageInput!]!, site_name: String!, site_short_name: String!): EditAdminSettingsObj!
admin__core_main_settings__edit(contact_email: String!, site_copyright: [StringLanguageInput!]!, site_description: [StringLanguageInput!]!, site_name: String!, site_short_name: String!): EditAdminSettingsObj!
admin__core_manifest_metadata__edit(background_color: String!, display: String!, start_url: String!, theme_color: String!): ShowAdminManifestMetadataObj!
admin__core_members__create(email: String!, name: String!, password: String!): SignUpCoreSessionsObj!
admin__core_members__delete(id: Float!): String!
Expand Down Expand Up @@ -713,6 +713,7 @@ type ShowCoreThemeEditorObj {
}

type ShowSettingsObj {
contact_email: String!
site_copyright: [StringLanguage!]!
site_description: [StringLanguage!]!
site_name: String!
Expand Down
2 changes: 2 additions & 0 deletions apps/frontend/src/graphql/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@ export type MutationAdmin__Core_Languages__EditArgs = {


export type MutationAdmin__Core_Main_Settings__EditArgs = {
contact_email: Scalars['String']['input'];
site_copyright: Array<StringLanguageInput>;
site_description: Array<StringLanguageInput>;
site_name: Scalars['String']['input'];
Expand Down Expand Up @@ -1236,6 +1237,7 @@ export type ShowCoreThemeEditorObj = {

export type ShowSettingsObj = {
__typename?: 'ShowSettingsObj';
contact_email: Scalars['String']['output'];
site_copyright: Array<StringLanguage>;
site_description: Array<StringLanguage>;
site_name: Scalars['String']['output'];
Expand Down
5 changes: 5 additions & 0 deletions apps/frontend/src/plugins/admin/langs/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
"settings": {
"main": {
"title": "Main Settings",
"desc": "These settings are used to configure the main features of your website.",
"name": {
"label": "Name Site"
},
Expand All @@ -70,6 +71,10 @@
},
"copyright": {
"label": "Copyright Site"
},
"contact_email": {
"label": "Contact Email",
"desc": "This email address will be applied to the contact form and other contact points on your website."
}
},
"email": {
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend/src/plugins/core/langs/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@
"title": "Core",
"dashboard": "Dashboard",
"settings": "Settings",
"settings_general": "General",
"settings_main": "Main",
"settings_security": "Security",
"settings_metadata": "Metadata",
"settings_email": "Email",
Expand Down
4 changes: 2 additions & 2 deletions packages/backend/scripts/generate-manifest.ts
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ export const generateManifest = () => {
const defaultManifest = generateDefaultManifest({
langCode,
frontendUrl,
siteName: config.settings.general.site_name,
siteShortName: config.settings.general.site_short_name,
siteName: config.settings.main.site_name,
siteShortName: config.settings.main.site_short_name,
});

const pathToUpload = join(
Expand Down
4 changes: 2 additions & 2 deletions packages/backend/src/core/admin/email/mail.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export class MailService extends HelpersAdminEmailSettingsService {
},
{
from: {
name: configSettings.settings.general.site_name,
name: configSettings.settings.main.site_name,
address: configSettings.settings.email.from,
},
},
Expand Down Expand Up @@ -116,7 +116,7 @@ export class MailService extends HelpersAdminEmailSettingsService {

try {
const provider = await resend.emails.send({
from: `${configSettings.settings.general.site_name} <${configSettings.settings.email.from}>`,
from: `${configSettings.settings.main.site_name} <${configSettings.settings.email.from}>`,
to,
subject,
html,
Expand Down
2 changes: 1 addition & 1 deletion packages/backend/src/core/admin/nav/show/show.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ export class ShowAdminNavService {
keywords: [],
children: [
{
code: 'general',
code: 'main',
keywords: ['name', 'title', 'description', 'desc', 'copyright'],
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ import { ArgsType, Field, ObjectType, PickType } from '@nestjs/graphql';

@ArgsType()
export class EditAdminMainSettingsArgs {
@Field(() => String)
contact_email: string;

@Field(() => [StringLanguageInput])
site_copyright: StringLanguageInput[];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -134,16 +134,18 @@ export class EditAdminMainSettingsService {
site_description,
site_name,
site_short_name,
contact_email,
}: EditAdminMainSettingsArgs): Promise<EditAdminSettingsObj> {
const config = getConfigFile();
const newData: ConfigType = {
...config,
settings: {
...config.settings,
general: {
...config.settings.general,
main: {
...config.settings.main,
site_name,
site_short_name,
contact_email,
},
},
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Module } from '@nestjs/common';

import { AdminAuthorizationSettingsModule } from './authorization/authorization.module';
import { AdminMainSettingsModule } from './main/general.module';
import { AdminMainSettingsModule } from './main/main.module';
import { AdminTermsSettingsModule } from './terms/terms.module';

@Module({
Expand Down
3 changes: 3 additions & 0 deletions packages/backend/src/core/settings/show/show.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ import { Field, ObjectType } from '@nestjs/graphql';

@ObjectType()
export class ShowSettingsObj {
@Field(() => String)
contact_email: string;

@Field(() => [StringLanguage])
site_copyright: StringLanguage[];

Expand Down
2 changes: 1 addition & 1 deletion packages/backend/src/core/settings/show/show.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ export class ShowSettingsService {
});

return {
...config.settings.general,
...config.settings.main,
site_description: manifest.map(item => ({
language_code: item.lang,
value: item.description,
Expand Down
6 changes: 4 additions & 2 deletions packages/backend/src/providers/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@ export interface ConfigType {
logo?: UploadCoreFilesObj;
provider: EmailProvider;
};
general: {
main: {
contact_email: string;
site_name: string;
site_short_name: string;
};
Expand All @@ -90,9 +91,10 @@ export const DEFAULT_CONFIG_DATA: ConfigType = {
},
},
settings: {
general: {
main: {
site_name: 'VitNode',
site_short_name: 'VitNode',
contact_email: '[email protected]',
},
email: {
provider: EmailProvider.none,
Expand Down
5 changes: 3 additions & 2 deletions packages/backend/src/providers/email/email-helpers.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@ export class EmailHelpersService {
);

return {
site_name: config.settings.general.site_name,
site_short_name: config.settings.general.site_short_name,
site_name: config.settings.main.site_name,
site_short_name: config.settings.main.site_short_name,
logo: config.settings.email.logo,
frontend_url,
backend_url,
contact_email: config.settings.main.contact_email,
color: {
primary: {
DEFAULT: `[${primaryHSL ? convertColor.hslToHex(primaryHSL) : '#215fdc'}]`,
Expand Down
1 change: 1 addition & 0 deletions packages/backend/src/providers/email/email-helpers.type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export interface GetHelpersForEmailType {
foreground: string;
};
};
contact_email: string;
frontend_url: string;
logo?: UploadCoreFilesObj;
site_name: string;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ export const EmailTemplate = ({
site_short_name,
backend_url,
logo,
contact_email,
},
user,
}: EmailTemplateProps) => {
Expand Down Expand Up @@ -145,9 +146,9 @@ export const EmailTemplate = ({
{t('footer')}{' '}
<Link
className={`text-${color.primary.DEFAULT}`}
href="mailto:[email protected]"
href={`mailto:${contact_email}`}
>
[email protected]
{contact_email}
</Link>
</Text>
</Section>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,21 @@ export type Admin__Core_Main_Settings__EditMutationVariables = Types.Exact<{
siteShortName: Types.Scalars['String']['input'];
siteDescription: Array<Types.StringLanguageInput> | Types.StringLanguageInput;
siteCopyright: Array<Types.StringLanguageInput> | Types.StringLanguageInput;
contactEmail: Types.Scalars['String']['input'];
}>;


export type Admin__Core_Main_Settings__EditMutation = { __typename?: 'Mutation', admin__core_main_settings__edit: { __typename?: 'EditAdminSettingsObj', site_name: string } };


export const Admin__Core_Main_Settings__Edit = gql`
mutation Admin__core_main_settings__edit($siteName: String!, $siteShortName: String!, $siteDescription: [StringLanguageInput!]!, $siteCopyright: [StringLanguageInput!]!) {
mutation Admin__core_main_settings__edit($siteName: String!, $siteShortName: String!, $siteDescription: [StringLanguageInput!]!, $siteCopyright: [StringLanguageInput!]!, $contactEmail: String!) {
admin__core_main_settings__edit(
site_name: $siteName
site_short_name: $siteShortName
site_description: $siteDescription
site_copyright: $siteCopyright
contact_email: $contactEmail
) {
site_name
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ mutation Admin__core_main_settings__edit(
$siteShortName: String!
$siteDescription: [StringLanguageInput!]!
$siteCopyright: [StringLanguageInput!]!
$contactEmail: String!
) {
admin__core_main_settings__edit(
site_name: $siteName
site_short_name: $siteShortName
site_description: $siteDescription
site_copyright: $siteCopyright
contact_email: $contactEmail
) {
site_name
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@ import gql from 'graphql-tag';
export type Core_Main_Settings__ShowQueryVariables = Types.Exact<{ [key: string]: never; }>;


export type Core_Main_Settings__ShowQuery = { __typename?: 'Query', core_settings__show: { __typename?: 'ShowSettingsObj', site_name: string, site_short_name: string, site_copyright: Array<{ __typename?: 'StringLanguage', language_code: string, value: string }>, site_description: Array<{ __typename?: 'StringLanguage', language_code: string, value: string }> } };
export type Core_Main_Settings__ShowQuery = { __typename?: 'Query', core_settings__show: { __typename?: 'ShowSettingsObj', site_name: string, site_short_name: string, contact_email: string, site_copyright: Array<{ __typename?: 'StringLanguage', language_code: string, value: string }>, site_description: Array<{ __typename?: 'StringLanguage', language_code: string, value: string }> } };


export const Core_Main_Settings__Show = gql`
query Core_main_settings__show {
core_settings__show {
site_name
site_short_name
contact_email
site_copyright {
language_code
value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ query Core_main_settings__show {
core_settings__show {
site_name
site_short_name
contact_email
site_copyright {
language_code
value
Expand Down
2 changes: 2 additions & 0 deletions packages/frontend/src/graphql/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,7 @@ export type MutationAdmin__Core_Languages__EditArgs = {


export type MutationAdmin__Core_Main_Settings__EditArgs = {
contact_email: Scalars['String']['input'];
site_copyright: Array<StringLanguageInput>;
site_description: Array<StringLanguageInput>;
site_name: Scalars['String']['input'];
Expand Down Expand Up @@ -1236,6 +1237,7 @@ export type ShowCoreThemeEditorObj = {

export type ShowSettingsObj = {
__typename?: 'ShowSettingsObj';
contact_email: Scalars['String']['output'];
site_copyright: Array<StringLanguage>;
site_description: Array<StringLanguage>;
site_name: Scalars['String']['output'];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,12 @@ export const ContentMainSettingsCoreAdmin = (
component: AutoFormInput,
label: t('short_name.label'),
},
{
id: 'contactEmail',
component: AutoFormInput,
label: t('contact_email.label'),
description: t('contact_email.desc'),
},
{
id: 'description',
component: AutoFormStringLanguageInput,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export const useSettingsCoreAdmin = ({
short_name: z.string().min(1).default(data.site_short_name),
description: zodLanguageInput.default(data.site_description).optional(),
copyright: zodLanguageInput.default(data.site_copyright).optional(),
contactEmail: z.string().email().default(data.contact_email),
});

const onSubmit = async (values: z.infer<typeof formSchema>) => {
Expand All @@ -24,6 +25,7 @@ export const useSettingsCoreAdmin = ({
siteShortName: values.short_name,
siteDescription: values.description ?? [],
siteCopyright: values.copyright ?? [],
contactEmail: values.contactEmail,
});

if (mutation?.error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,22 +24,22 @@ const getData = async () => {

export const generateMetadataMainSettingsCoreAdmin =
async (): Promise<Metadata> => {
const t = await getTranslations('admin_core.nav');
const t = await getTranslations('admin.core.settings.main');

return {
title: t('settings_general'),
title: t('title'),
};
};

export const MainSettingsCoreAdminView = async () => {
const [t, data] = await Promise.all([
getTranslations('admin_core.nav'),
getTranslations('admin.core.settings.main'),
getData(),
]);

return (
<>
<HeaderContent h1={t('settings_general')} />
<HeaderContent desc={t('desc')} h1={t('title')} />

<Card className="p-6">
<ContentMainSettingsCoreAdmin {...data} />
Expand Down
7 changes: 3 additions & 4 deletions packages/frontend/src/views/admin/views/slug.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,7 @@ export const generateMetadataSlugAdmin = async ({
}

if (!slug[3]) {
if (slug[2] === 'general')
return generateMetadataMainSettingsCoreAdmin();
if (slug[2] === 'main') return generateMetadataMainSettingsCoreAdmin();
if (slug[2] === 'security')
return generateMetadataCaptchaSecurityAdmin();
if (slug[2] === 'metadata')
Expand Down Expand Up @@ -171,15 +170,15 @@ export const SlugAdminView = (props: SlugViewProps) => {
}

if (!slug[3]) {
if (slug[2] === 'general') return <MainSettingsCoreAdminView />;
if (slug[2] === 'main') return <MainSettingsCoreAdminView />;
if (slug[2] === 'security') return <CaptchaSecurityAdminView />;
if (slug[2] === 'metadata') return <ManifestMetadataCoreAdminView />;

if (slug[2] === 'authorization')
return <AuthorizationSettingsCoreAdminView />;
if (slug[2] === 'legal') return <LegalSettingsAdminView {...props} />;
}
if (!slug[2]) redirect('/admin/core/settings/general');
if (!slug[2]) redirect('/admin/core/settings/main');
}

if (!slug[2]) {
Expand Down

0 comments on commit cb76782

Please sign in to comment.