When adding a domain, you can also add a custom email address.
This commit is contained in:
@@ -10,9 +10,12 @@ import {
|
||||
useReducer,
|
||||
} from "react";
|
||||
import { configReducer } from "./reducer";
|
||||
import { getEmails } from "@/repository/settings";
|
||||
import { Setting } from "@/domain/settings";
|
||||
|
||||
export type ConfigData = {
|
||||
accesses: Access[];
|
||||
emails: Setting;
|
||||
};
|
||||
|
||||
export type ConfigContext = {
|
||||
@@ -20,6 +23,7 @@ export type ConfigContext = {
|
||||
deleteAccess: (id: string) => void;
|
||||
addAccess: (access: Access) => void;
|
||||
updateAccess: (access: Access) => void;
|
||||
setEmails: (email: Setting) => void;
|
||||
};
|
||||
|
||||
const Context = createContext({} as ConfigContext);
|
||||
@@ -31,7 +35,10 @@ interface ContainerProps {
|
||||
}
|
||||
|
||||
export const ConfigProvider = ({ children }: ContainerProps) => {
|
||||
const [config, dispatchConfig] = useReducer(configReducer, { accesses: [] });
|
||||
const [config, dispatchConfig] = useReducer(configReducer, {
|
||||
accesses: [],
|
||||
emails: { content: { emails: [] } },
|
||||
});
|
||||
|
||||
useEffect(() => {
|
||||
const featchData = async () => {
|
||||
@@ -41,6 +48,18 @@ export const ConfigProvider = ({ children }: ContainerProps) => {
|
||||
featchData();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const featchEmails = async () => {
|
||||
const emails = await getEmails();
|
||||
dispatchConfig({ type: "SET_EMAILS", payload: emails });
|
||||
};
|
||||
featchEmails();
|
||||
}, []);
|
||||
|
||||
const setEmails = useCallback((emails: Setting) => {
|
||||
dispatchConfig({ type: "SET_EMAILS", payload: emails });
|
||||
}, []);
|
||||
|
||||
const deleteAccess = useCallback((id: string) => {
|
||||
dispatchConfig({ type: "DELETE_ACCESS", payload: id });
|
||||
}, []);
|
||||
@@ -58,9 +77,11 @@ export const ConfigProvider = ({ children }: ContainerProps) => {
|
||||
value={{
|
||||
config: {
|
||||
accesses: config.accesses,
|
||||
emails: config.emails,
|
||||
},
|
||||
deleteAccess,
|
||||
addAccess,
|
||||
setEmails,
|
||||
updateAccess,
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import { Access } from "@/domain/access";
|
||||
import { ConfigData } from ".";
|
||||
import { Setting } from "@/domain/settings";
|
||||
|
||||
type Action =
|
||||
| { type: "ADD_ACCESS"; payload: Access }
|
||||
| { type: "DELETE_ACCESS"; payload: string }
|
||||
| { type: "UPDATE_ACCESS"; payload: Access }
|
||||
| { type: "SET_ACCESSES"; payload: Access[] };
|
||||
| { type: "SET_ACCESSES"; payload: Access[] }
|
||||
| { type: "SET_EMAILS"; payload: Setting }
|
||||
| { type: "ADD_EMAIL"; payload: string };
|
||||
|
||||
export const configReducer = (
|
||||
state: ConfigData,
|
||||
@@ -40,6 +43,23 @@ export const configReducer = (
|
||||
),
|
||||
};
|
||||
}
|
||||
case "SET_EMAILS": {
|
||||
return {
|
||||
...state,
|
||||
emails: action.payload,
|
||||
};
|
||||
}
|
||||
case "ADD_EMAIL": {
|
||||
return {
|
||||
...state,
|
||||
emails: {
|
||||
...state.emails,
|
||||
content: {
|
||||
emails: [...state.emails.content.emails, action.payload],
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
default:
|
||||
return state;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user