import { createSlice, PayloadAction } from "@reduxjs/toolkit";
import loadingSlice from "../loading/loadingSlice";

const popupSlice = createSlice({
  name: "popup",
  initialState: {
    notification: {
      isOpen: false,
      isSuccess: true,
      title: "Notification",
      message: "",
      buttonText: "Close",
      hasRightButton: false,
      rightButtonText: "Confirm",
      rightButtonAction: "",
    },
    compatibilityModal: {
      isOpen: false,
    },
    qrModal: {
      isOpen: false,
      qrData: "",
    },
  },
  reducers: {
    openPopup: (state, action: PayloadAction<any>) => {
      return {
        ...state,
        notification: {
          isOpen: true,
          isSuccess: action.payload?.isSuccess ?? true,
          title: action.payload?.title ?? "Notification",
          message: action.payload?.message,
          buttonText: action.payload?.buttonText ?? "Close",
          hasRightButton: action.payload?.hasRightButton ?? false,
          rightButtonText: action.payload?.rightButtonText ?? "Confirm",
          rightButtonAction: action.payload?.rightButtonAction ?? "",
        },
      };
    },
    closePopup: (state) => {
      state.notification.isOpen = false;
    },
    openCompatibilityModal: (state) => {
      state.compatibilityModal.isOpen = true;
    },
    closeCompatibilityModal: (state) => {
      state.compatibilityModal.isOpen = false;
    },
    openQRModal: (state, action: PayloadAction<string>) => {
      state.qrModal.isOpen = true;
      state.qrModal.qrData = action.payload;
    },
    closeQRModal: (state) => {
      state.qrModal.isOpen = false;
    },
  },
});

export const {
  openPopup,
  closePopup,
  openCompatibilityModal,
  closeCompatibilityModal,
  openQRModal,
  closeQRModal,
} = popupSlice.actions;
export default popupSlice.reducer;
