- ${m.reactions.map(r=>html`
-
+ ${m.reactions.map(r => html`
+
`)}
${state.reactionInputFor===i
? html`
-
Create Notebook
-
-
-
-
- `;
+ const {createNotebook, setState} = useContext(AppContext);
+ createNotebook('local');
+ return '';
+ // return html`
+ //
+ //
Create Notebook
+ //
+ //
+ //
+ //
+ // `;
}
function CrossReplyModal() {
- const {state,setState} = useContext(AppContext);
+ const {state, setState} = useContext(AppContext);
return html`
Reply in Another Notebook
- ${state.notebooks.filter(n=>n.id!==state.crossReplySource.notebook).map(n=>html`
+ ${state.notebooks.filter(notebook => notebook.id!==state.crossReplySource.notebook).map(notebook => html`
+ }))}>${notebook.emoji} ${notebook.name}
`)}
@@ -1747,7 +1771,7 @@ function CrossReplyModal() {
}
function ContextMenu() {
- const {state,setState,persistMessages} = useContext(AppContext);
+ const {state, setState, persistMessages} = useContext(AppContext);
const idx = state.contextMenu.messageIndex;
const nbId = state.selectedNotebook;
const arr = state.messages[nbId] || [];
@@ -1776,75 +1800,82 @@ function ContextMenu() {
};
return html`
`;
}
function DateTimeModal() {
- const {state,setState,persistMessages} = useContext(AppContext);
+ const {state, setState, persistMessages} = useContext(AppContext);
const idx=state.dateTimeModal, nbId=state.selectedNotebook;
const arr=state.messages[nbId]||[], msg=arr[idx];
- const [dt,setDt]=useState('');
+ const [dt,setDt] = useState('');
useEffect(() => (msg && setDt(new Date(msg.timestamp).toISOString().slice(0,16))), [msg]);
const save=()=>{
- const ts=new Date(dt).getTime();
- if(!isNaN(ts)){
- const newArr=arr.map((m,i)=>i===idx?{...m,timestamp:ts}:m);
- persistMessages(nbId,newArr);
- setState(s=>({...s,messages:{...s.messages,[nbId]:newArr},dateTimeModal:null}));
+ const timestamp = new Date(dt).getTime();
+ if (!isNaN(timestamp)) {
+ const newArr = arr.map((m,i) => i===idx ? { ...m, timestamp } : m);
+ persistMessages(nbId, newArr);
+ setState(s => ({ ...s, messages: { ...s.messages, [nbId]: newArr }, dateTimeModal: null }));
}
};
return html`
Set Date/Time
- setDt(e.target.value)}/>
+ setDt(e.target.value)}/>
-
+
`;
}
function SettingsModal() {
- const {state,setState} = useContext(AppContext);
+ const {state, setState} = useContext(AppContext);
const notebook = getNotebook(state.notebooks, state.selectedNotebook);
- const [form,setForm]=useState({...notebook});
- const save=()=>setState(s=>({...s,notebooks:s.notebooks.map(n=>n.id===notebook.id?form:n),showSettings:false}));
- const del=()=>{
- if(confirm('Delete?')){
- if(notebook.sourceType==='local') localStorage.removeItem(`notebook-${notebook.id}`);
- setState(s=>({...s,notebooks:s.notebooks.filter(n=>n.id!==notebook.id),messages:{...s.messages,[notebook.id]:undefined},encrypted:{...s.encrypted,[notebook.id]:undefined},selectedNotebook:null,showSettings:false}));
+ const [form, setForm] = useState({ ...notebook });
+ const save = () => setState(s => ({ ...s, notebooks: s.notebooks.map(n => (n.id===notebook.id ? form : n)), showSettings: false }));
+ const del = () => {
+ if (confirm('Delete?')) {
+ if (notebook.sourceType==='local') {
+ localStorage.removeItem(`notebook-${notebook.id}`);
+ }
+ setState(s => ({ ...s,
+ notebooks: s.notebooks.filter(n => n.id!==notebook.id),
+ messages: { ...s.messages, [notebook.id]: undefined },
+ encrypted: { ...s.encrypted, [notebook.id]: undefined },
+ selectedNotebook: null, showSettings: false,
+ }));
}
};
return html`
-
+
Settings
-
-
-
-
-
`;
}
function SearchModal() {
- const {state,setState} = useContext(AppContext);
- const {query,global} = state.searchModal;
- const results=(global
+ const {state, setState} = useContext(AppContext);
+ const {query, global} = state.searchModal;
+ const results = (global
? state.notebooks.flatMap(notebook => (state.messages[notebook.id] || []).map(message => ({ ...message, notebook })))
: (state.messages[state.selectedNotebook] || []).map(message => ({ ...message, notebook: getNotebook(state.notebooks, state.selectedNotebook) }))
- ).filter(message => message.content.toLowerCase().includes(query.toLowerCase()));
- const select = (nbId,mId) => setState(s => ({ ...s, selectedNotebook: nbId, searchModal: { ...s.searchModal, visible: false }, scrollToMessage: mId }));
+ ).filter(message => message.text.toLowerCase().includes(query.toLowerCase()));
+ const select = (nbId, mId) => setState(s => ({ ...s, selectedNotebook: nbId, searchModal: { ...s.searchModal, visible: false }, scrollToMessage: mId }));
return html`
${global ? 'Global' : 'Notebook'} Search
@@ -1855,10 +1886,10 @@ function SearchModal() {
${result.notebook.emoji}
${result.notebook.name}
`}
-
${result.content}
${new Date(result.timestamp).toLocaleString()}
+
${result.text}
${new Date(result.timestamp).toLocaleString()}
`)}
-
+
`;
}
@@ -1896,4 +1927,4 @@ function AppSettingsModal() {
render(html`<${App}/>`, document.body);
-