| 1 | import { createPersistStore } from '@/utils/createPersistStore'; |
| 2 | import { StoreKey } from '@/utils/StroeEnum'; |
| 3 | import { IVideoPageStore } from '@/views/publish/children/videoPage/useVideoPageStore'; |
| 4 | import { |
| 5 | IPubParams, |
| 6 | IVideoChooseItem, |
| 7 | } from '@/views/publish/children/videoPage/videoPage'; |
| 8 | import { IImagePageStore } from '@/views/publish/children/imagePage/useImagePageStore'; |
| 9 | import { IImgFile } from '@/components/Choose/ImgChoose'; |
| 10 | import { IImageAccountItem } from '@/views/publish/children/imagePage/imagePage.type'; |
| 11 | |
| 12 | export interface IPubStore { |
| 13 | // 视频发布保存的数据 |
| 14 | videoPubSaveData: string; |
| 15 | // 图文发布保存的数据 |
| 16 | imgTexPubtSaveData: string; |
| 17 | // 视频发布是否开启填写更多参数 |
| 18 | moreParamsOpen: boolean; |
| 19 | } |
| 20 | |
| 21 | const state: IPubStore = { |
| 22 | imgTexPubtSaveData: '', |
| 23 | videoPubSaveData: '', |
| 24 | moreParamsOpen: false, |
| 25 | }; |
| 26 | |
| 27 | export const usePubStroe = createPersistStore( |
| 28 | { |
| 29 | ...state, |
| 30 | }, |
| 31 | (set, _get) => { |
| 32 | return { |
| 33 | clear() { |
| 34 | set({ |
| 35 | ...state, |
| 36 | }); |
| 37 | }, |
| 38 | |
| 39 | setMoreParamsOpen(moreParamsOpen: boolean) { |
| 40 | set({ |
| 41 | moreParamsOpen, |
| 42 | }); |
| 43 | }, |
| 44 | |
| 45 | // 设置图文发布保存的数据 |
| 46 | setImgTextPubSaveData(data: Partial<IImagePageStore>) { |
| 47 | set({ |
| 48 | imgTexPubtSaveData: JSON.stringify({ |
| 49 | images: data.images, |
| 50 | commonPubParams: data.commonPubParams, |
| 51 | imageAccounts: data.imageAccounts, |
| 52 | }), |
| 53 | }); |
| 54 | }, |
| 55 | // 获取图文发布保存的数据 |
| 56 | getImgTextPubSaveData(): |
| 57 | | { |
| 58 | images?: IImgFile[]; |
| 59 | commonPubParams?: IPubParams; |
| 60 | imageAccounts?: IImageAccountItem[]; |
| 61 | } |
| 62 | | undefined { |
| 63 | if (_get().imgTexPubtSaveData) { |
| 64 | return JSON.parse(_get().imgTexPubtSaveData); |
| 65 | } |
| 66 | }, |
| 67 | // 清空图文发布保存的数据 |
| 68 | clearImgTextPubSave() { |
| 69 | set({ |
| 70 | imgTexPubtSaveData: '', |
| 71 | }); |
| 72 | }, |
| 73 | |
| 74 | // 设置视频发布保存的数据 |
| 75 | setVideoPubSaveData(data: Partial<IVideoPageStore>) { |
| 76 | if (data.videoListChoose && data.videoListChoose.length !== 0) { |
| 77 | set({ |
| 78 | videoPubSaveData: JSON.stringify({ |
| 79 | videoListChoose: data.videoListChoose, |
| 80 | commonPubParams: data.commonPubParams, |
| 81 | operateId: data.operateId, |
| 82 | }), |
| 83 | }); |
| 84 | } |
| 85 | }, |
| 86 | // 获取视频发布保存的数据 |
| 87 | getVideoPubSaveData(): |
| 88 | | { |
| 89 | videoListChoose: IVideoChooseItem[]; |
| 90 | commonPubParams?: IPubParams; |
| 91 | operateId?: string; |
| 92 | } |
| 93 | | undefined { |
| 94 | if (_get().videoPubSaveData) { |
| 95 | return JSON.parse(_get().videoPubSaveData); |
| 96 | } |
| 97 | }, |
| 98 | // 清空视频发布保存的数据 |
| 99 | clearVideoPubSaveData() { |
| 100 | set({ |
| 101 | videoPubSaveData: '', |
| 102 | }); |
| 103 | }, |
| 104 | }; |
| 105 | }, |
| 106 | { |
| 107 | name: StoreKey.VideoPub, |
| 108 | }, |
| 109 | ); |
| 110 |