open-article.ts 917 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { createSlice, PayloadAction } from "@reduxjs/toolkit";
  2. import type { RootState } from "../store";
  3. export interface ISite {
  4. title: string;
  5. url: string;
  6. id: string;
  7. }
  8. interface IState {
  9. site?: ISite;
  10. title?: string;
  11. }
  12. const initialState: IState = {};
  13. export const slice = createSlice({
  14. name: "open-article",
  15. initialState,
  16. reducers: {
  17. refresh: (state, action: PayloadAction<ISite>) => {
  18. state.site = action.payload;
  19. },
  20. setTitle: (state, action: PayloadAction<string>) => {
  21. state.title = action.payload;
  22. },
  23. },
  24. });
  25. export const { refresh, setTitle } = slice.actions;
  26. export const openArticle = (state: RootState): IState => state.openArticle;
  27. export const siteInfo = (state: RootState): ISite | undefined =>
  28. state.openArticle.site;
  29. export const pageTitle = (state: RootState): string | undefined =>
  30. state.openArticle.title;
  31. export default slice.reducer;