@@ -14,8 +48,15 @@ const EmptyView = (props: Props) => {
Examples
-
This is the latest placeholder
-
Another example
+ {examples.map((example) => (
+
handleExampleClick(example)}
+ >
+ {`"${example}"`} →
+
+ ))}
diff --git a/components/MessageLoader.tsx b/components/MessageLoader.tsx
new file mode 100644
index 0000000..1fcee7f
--- /dev/null
+++ b/components/MessageLoader.tsx
@@ -0,0 +1,27 @@
+import { useEffect, useState } from "react";
+import Icon from "./Icon";
+
+const MessageLoader = () => {
+ const [loader, setLoader] = useState
(".");
+
+ useEffect(() => {
+ setTimeout(() => {
+ if (loader.length === 3) {
+ setLoader(".");
+ } else {
+ setLoader(loader + ".");
+ }
+ }, 300);
+ }, [loader]);
+
+ return (
+
+ );
+};
+
+export default MessageLoader;
diff --git a/store/message.ts b/store/message.ts
index cdfdb15..76c7c04 100644
--- a/store/message.ts
+++ b/store/message.ts
@@ -7,7 +7,7 @@ interface MessageState {
messageList: Message[];
getState: () => MessageState;
addMessage: (message: Message) => void;
- updateMessageContent: (messageId: Id, content: string) => void;
+ updateMessage: (messageId: Id, message: Partial) => void;
clearMessage: (filter: (message: Message) => boolean) => void;
}
@@ -17,13 +17,23 @@ export const useMessageStore = create()(
messageList: [],
getState: () => get(),
addMessage: (message: Message) => set((state) => ({ messageList: [...state.messageList, message] })),
- updateMessageContent: (messageId: Id, content: string) => {
- const message = get().messageList.find((message) => message.id === messageId);
- if (!message) {
+ updateMessage: (messageId: Id, message: Partial) => {
+ const rawMessage = get().messageList.find((message) => message.id === messageId);
+ if (!rawMessage) {
return;
}
- message.content = content;
- set((state) => ({ messageList: uniqBy([...state.messageList, message], (message) => message.id) }));
+ set((state) => ({
+ messageList: uniqBy(
+ [
+ ...state.messageList,
+ {
+ ...rawMessage,
+ ...message,
+ },
+ ],
+ (message) => message.id
+ ),
+ }));
},
clearMessage: (filter: (message: Message) => boolean) => set((state) => ({ messageList: state.messageList.filter(filter) })),
}),
diff --git a/types/message.ts b/types/message.ts
index 3860f59..e1e30a2 100644
--- a/types/message.ts
+++ b/types/message.ts
@@ -13,4 +13,5 @@ export interface Message {
creatorRole: CreatorRole;
createdAt: Timestamp;
content: string;
+ isGenerated: boolean;
}