diff --git a/index.html b/index.html
index 55d4ca2..759cb59 100644
--- a/index.html
+++ b/index.html
@@ -1464,9 +1464,13 @@ const escapeHtml = text => {
return node.innerHTML;
}
const makeParagraph = text => `
<${ChatList} />
- <${ChatScreen} inputRef=${inputRef} />
+ <${ChatScreen} messageInputRef=${messageInputRef} />
${state.createModal && html`<${CreateModal} />`}
${state.crossReplyModal && html`<${CrossReplyModal} />`}
${state.showSettings && html`<${SettingsModal} />`}
@@ -1686,8 +1734,8 @@ function App() {
}
function ChatList() {
- const {state,setState} = useContext(AppContext);
- const sortNotebook = (notebook) => Math.max(notebook.created, ...(state.messages[notebook.id] || []).map(message => message.timestamp));
+ const {state, setState, getMessages} = useContext(AppContext);
+ const sortNotebook = (notebook) => Math.max(notebook.created, ...Object.values(getMessages(notebook.id) || []).map(message => message.created/*timestamp*/));
return html`
@@ -1773,9 +1822,9 @@ function ChatScreen({inputRef}) {
`;
}
-function Message({message}) {
+function Message({ message }) {
const {
- state, setState,
+ state, setState, getMessage,
addReaction, confirmReaction, removeReaction
} = useContext(AppContext);
return html`
@@ -1791,12 +1840,14 @@ function Message({message}) {
}}>
${message.replyTo && html`
setState(s=>({
- ...state,
+ onClick=${() => setState(s => ({ ...state,
selectedNotebook: message.replyTo.notebookId,
scrollToMessage: message.replyTo.id,
}))}>
- Reply to "${(state.messages[message.replyTo.notebookId] || []).find(x => x.id===message.replyTo.id)?.text || ''}"
+ Reply to "${
+ // (state.messages[message.replyTo.notebookId] || []).find(x => x.id===message.replyTo.id)?.text || ''
+ getMessage(message.replyTo.notebookId, message.replyTo.id)?.text || ''
+ }"
`}
${(() => {
@@ -1807,8 +1858,8 @@ function Message({message}) {
}
})()}
- ${message.reactions.map(r => html`
-
+ ${Object.keys(message.reactions).map(reaction => html`
+
`)}
${state.reactionInputFor===message.id
? html`addReaction(message.id)}>➕`
}
-
${new Date(message.timestamp).toLocaleString()}${message.edited ? ' (edited)' : ''}
+
${new Date(message.created/*timestamp*/).toLocaleString()}${message.edited ? ' (edited)' : ''}
`
}
@@ -1853,7 +1904,7 @@ function CrossReplyModal() {
}
function ContextMenu() {
- const {state, setState, deleteMessage, persistMessages} = useContext(AppContext);
+ const {state, setState, copyMessage, deleteMessage, persistMessages} = useContext(AppContext);
const idx = state.contextMenu.messageId;
const nbId = state.selectedNotebook;
const arr = state.messages[nbId] || [];
@@ -1865,10 +1916,10 @@ function ContextMenu() {
setState(s => ({ ...s, replyingTo: { notebookId: nbId, id: msg.id }, ...closedContextMenu(s) }));
return;
case 'cross-reply':
- setState(s => ({ ...s, ...closedContextMenu(s), crossReplyModal: true, crossReplySource: { notebook: nbId, id: msg.id }}));
+ setState(s => ({ ...s, ...closedContextMenu(s), crossReplyModal: true, crossReplySource: { notebook: nbId, id: msg.id } }));
return;
case 'copy':
- navigator.clipboard.writeText(msg.text);
+ copyMessage(msg);
setState(s => ({ ...s, ...closedContextMenu(s) }));
return;
case 'edit':
@@ -1888,7 +1939,7 @@ function ContextMenu() {
return html`
`}
-
${result.text}
${new Date(result.timestamp).toLocaleString()}
+
${result.text}
${new Date(result.created/*timestamp*/).toLocaleString()}
`)}