Redu

🧩 Syntax:
// Define the initial state
const initialState = {
  api: api,
  baseURL: baseURL,
  redirect: ``,
  editor: null,
  editorIsLoading: true,
  profile: {},
  isLoggedIn: false,
  loginLoading: false,
  landingPageUrl: config.landingPageUrl,
  referral: "",
  toolsKeyword: "",
  error: "",
  copyToClipboardText: "",
  feedback: "",
};

// Define the actions
const setProfile = (profile) => ({
  type: 'SET_PROFILE',
  payload: profile,
});

const setIsLoggedIn = (isLoggedIn) => ({
  type: 'SET_IS_LOGGED_IN',
  payload: isLoggedIn,
});

const setReferral = (referral) => ({
  type: 'SET_REFERRAL',
  payload: referral,
});

const setToolsKeyword = (keyword) => ({
  type: 'SET_TOOLS_KEYWORD',
  payload: keyword,
});

const setEditor = (editor) => ({
  type: 'SET_EDITOR',
  payload: editor,
});

const setEditorIsLoading = (isLoading) => ({
  type: 'SET_EDITOR_IS_LOADING',
  payload: isLoading,
});

const setError = (error) => ({
  type: 'SET_ERROR',
  payload: error,
});

const setCopyToClipboardText = (text) => ({
  type: 'SET_COPY_TO_CLIPBOARD_TEXT',
  payload: text,
});

const setFeedback = (feedback) => ({
  type: 'SET_FEEDBACK',
  payload: feedback,
});

// Define the reducer
function reducer(state = initialState, action) {
  switch (action.type) {
    case 'SET_PROFILE':
      return { ...state, profile: action.payload };
    case 'SET_IS_LOGGED_IN':
      return { ...state, isLoggedIn: action.payload };
    case 'SET_REFERRAL':
      return { ...state, referral: action.payload };
    case 'SET_TOOLS_KEYWORD':
      return { ...state, toolsKeyword: action.payload };
    case 'SET_EDITOR':
      return { ...state, editor: action.payload };
    case 'SET_EDITOR_IS_LOADING':
      return { ...state, editorIsLoading: action.payload };
    case 'SET_ERROR':
      return { ...state, error: action.payload };
    case 'SET_COPY_TO_CLIPBOARD_TEXT':
      return { ...state, copyToClipboardText: action.payload };
    case 'SET_FEEDBACK':
      return { ...state, feedback: action.payload };
    default:
      return state;
  }
}

// Create the Redux store
const store = createStore(reducer);

// Dispatch actions to update the state
store.dispatch(setProfile(profile));
store.dispatch(setIsLoggedIn(true));
store.dispatch(setReferral(referral));
store.dispatch(setToolsKeyword(keyword));
store.dispatch(setEditor(editor));
store.dispatch(setEditorIsLoading(true));
store.dispatch(setError(error));
store.dispatch(setCopyToClipboardText(text));
store.dispatch(setFeedback(feedback));