2023-04-08 12:48:57 +00:00
|
|
|
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
|
|
|
import { RawEvent, TaggedRawEvent } from "@snort/nostr";
|
|
|
|
|
|
|
|
interface NoteCreatorStore {
|
|
|
|
show: boolean;
|
|
|
|
note: string;
|
|
|
|
error: string;
|
|
|
|
active: boolean;
|
2023-04-10 14:55:25 +00:00
|
|
|
preview?: RawEvent;
|
|
|
|
replyTo?: TaggedRawEvent;
|
2023-04-08 12:48:57 +00:00
|
|
|
showAdvanced: boolean;
|
2023-05-04 13:16:58 +00:00
|
|
|
selectedCustomRelays: false | Array<string>;
|
2023-04-08 12:48:57 +00:00
|
|
|
zapForward: string;
|
|
|
|
sensitive: string;
|
2023-04-10 14:55:25 +00:00
|
|
|
pollOptions?: Array<string>;
|
2023-04-17 10:57:13 +00:00
|
|
|
otherEvents: Array<RawEvent>;
|
2023-04-08 12:48:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
const InitState: NoteCreatorStore = {
|
|
|
|
show: false,
|
|
|
|
note: "",
|
|
|
|
error: "",
|
|
|
|
active: false,
|
|
|
|
showAdvanced: false,
|
2023-05-04 13:16:58 +00:00
|
|
|
selectedCustomRelays: false,
|
2023-04-08 12:48:57 +00:00
|
|
|
zapForward: "",
|
|
|
|
sensitive: "",
|
2023-04-17 13:33:31 +00:00
|
|
|
otherEvents: [],
|
2023-04-08 12:48:57 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
const NoteCreatorSlice = createSlice({
|
|
|
|
name: "NoteCreator",
|
|
|
|
initialState: InitState,
|
|
|
|
reducers: {
|
|
|
|
setShow: (state, action: PayloadAction<boolean>) => {
|
|
|
|
state.show = action.payload;
|
|
|
|
},
|
|
|
|
setNote: (state, action: PayloadAction<string>) => {
|
|
|
|
state.note = action.payload;
|
|
|
|
},
|
|
|
|
setError: (state, action: PayloadAction<string>) => {
|
|
|
|
state.error = action.payload;
|
|
|
|
},
|
|
|
|
setActive: (state, action: PayloadAction<boolean>) => {
|
|
|
|
state.active = action.payload;
|
|
|
|
},
|
2023-04-10 14:55:25 +00:00
|
|
|
setPreview: (state, action: PayloadAction<RawEvent | undefined>) => {
|
2023-04-08 12:48:57 +00:00
|
|
|
state.preview = action.payload;
|
|
|
|
},
|
2023-04-10 14:55:25 +00:00
|
|
|
setReplyTo: (state, action: PayloadAction<TaggedRawEvent | undefined>) => {
|
2023-04-08 12:48:57 +00:00
|
|
|
state.replyTo = action.payload;
|
|
|
|
},
|
|
|
|
setShowAdvanced: (state, action: PayloadAction<boolean>) => {
|
|
|
|
state.showAdvanced = action.payload;
|
|
|
|
},
|
2023-05-04 13:16:58 +00:00
|
|
|
setSelectedCustomRelays: (state, action: PayloadAction<false | Array<string>>) => {
|
|
|
|
state.selectedCustomRelays = action.payload;
|
|
|
|
},
|
2023-04-08 12:48:57 +00:00
|
|
|
setZapForward: (state, action: PayloadAction<string>) => {
|
|
|
|
state.zapForward = action.payload;
|
|
|
|
},
|
|
|
|
setSensitive: (state, action: PayloadAction<string>) => {
|
|
|
|
state.sensitive = action.payload;
|
|
|
|
},
|
2023-04-10 14:55:25 +00:00
|
|
|
setPollOptions: (state, action: PayloadAction<Array<string> | undefined>) => {
|
|
|
|
state.pollOptions = action.payload;
|
|
|
|
},
|
2023-04-17 10:57:13 +00:00
|
|
|
setOtherEvents: (state, action: PayloadAction<Array<RawEvent>>) => {
|
|
|
|
state.otherEvents = action.payload;
|
|
|
|
},
|
2023-04-08 12:48:57 +00:00
|
|
|
reset: () => InitState,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
export const {
|
|
|
|
setShow,
|
|
|
|
setNote,
|
|
|
|
setError,
|
|
|
|
setActive,
|
|
|
|
setPreview,
|
|
|
|
setReplyTo,
|
|
|
|
setShowAdvanced,
|
2023-05-04 13:16:58 +00:00
|
|
|
setSelectedCustomRelays,
|
2023-04-08 12:48:57 +00:00
|
|
|
setZapForward,
|
|
|
|
setSensitive,
|
2023-04-10 14:55:25 +00:00
|
|
|
setPollOptions,
|
2023-04-17 10:57:13 +00:00
|
|
|
setOtherEvents,
|
2023-04-08 12:48:57 +00:00
|
|
|
reset,
|
|
|
|
} = NoteCreatorSlice.actions;
|
|
|
|
|
|
|
|
export const reducer = NoteCreatorSlice.reducer;
|