Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: #1668 #1681 #1693

Merged
merged 4 commits into from
May 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion app/client/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ export const ChatControllerPool = {

remove(sessionIndex: number, messageId: number) {
const key = this.key(sessionIndex, messageId);
this.controllers[key]?.abort();
delete this.controllers[key];
},

Expand Down
7 changes: 6 additions & 1 deletion app/components/exporter.module.scss
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,8 @@
position: absolute;
top: 0px;
left: 0px;
transform: scale(2);
height: 50%;
transform: scale(1.5);
}

.main-title {
Expand Down Expand Up @@ -184,6 +185,10 @@
max-width: calc(100% - 104px);
box-shadow: var(--card-shadow);
border: var(--border-in-light);

* {
overflow: hidden;
}
}

&-assistant {
Expand Down
43 changes: 32 additions & 11 deletions app/components/exporter.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,19 @@ import { copyToClipboard, downloadAs, useMobileScreen } from "../utils";

import CopyIcon from "../icons/copy.svg";
import LoadingIcon from "../icons/three-dots.svg";
import ChatGptIcon from "../icons/chatgpt.svg";
import ChatGptIcon from "../icons/chatgpt.png";
import ShareIcon from "../icons/share.svg";
import BotIcon from "../icons/bot.png";

import DownloadIcon from "../icons/download.svg";
import { useMemo, useRef, useState } from "react";
import { MessageSelector, useMessageSelector } from "./message-selector";
import { Avatar } from "./emoji";
import { MaskAvatar } from "./mask";
import dynamic from "next/dynamic";
import NextImage from "next/image";

import { toBlob, toPng } from "html-to-image";
import { DEFAULT_MASK_AVATAR } from "../store/mask";

const Markdown = dynamic(async () => (await import("./markdown")).Markdown, {
loading: () => <LoadingIcon />,
Expand Down Expand Up @@ -253,6 +255,22 @@ export function PreviewActions(props: {
);
}

function ExportAvatar(props: { avatar: string }) {
if (props.avatar === DEFAULT_MASK_AVATAR) {
return (
<NextImage
src={BotIcon.src}
width={30}
height={30}
alt="bot"
className="user-avatar"
/>
);
}

return <Avatar avatar={props.avatar}></Avatar>;
}

export function ImagePreviewer(props: {
messages: ChatMessage[];
topic: string;
Expand Down Expand Up @@ -319,7 +337,12 @@ export function ImagePreviewer(props: {
>
<div className={styles["chat-info"]}>
<div className={styles["logo"] + " no-dark"}>
<ChatGptIcon />
<NextImage
src={ChatGptIcon.src}
alt="logo"
width={50}
height={50}
/>
</div>

<div>
Expand All @@ -328,9 +351,9 @@ export function ImagePreviewer(props: {
github.com/Yidadaa/ChatGPT-Next-Web
</div>
<div className={styles["icons"]}>
<Avatar avatar={config.avatar}></Avatar>
<ExportAvatar avatar={config.avatar} />
<span className={styles["icon-space"]}>&</span>
<MaskAvatar mask={session.mask} />
<ExportAvatar avatar={mask.avatar} />
</div>
</div>
<div>
Expand Down Expand Up @@ -358,14 +381,12 @@ export function ImagePreviewer(props: {
key={i}
>
<div className={styles["avatar"]}>
{m.role === "user" ? (
<Avatar avatar={config.avatar}></Avatar>
) : (
<MaskAvatar mask={session.mask} />
)}
<ExportAvatar
avatar={m.role === "user" ? config.avatar : mask.avatar}
/>
</div>

<div className={`${styles["body"]} `}>
<div className={styles["body"]}>
<Markdown
content={m.content}
fontSize={config.fontSize}
Expand Down
Binary file added app/icons/bot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/icons/chatgpt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 7 additions & 2 deletions app/store/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,12 @@ export const useChatStore = create<ChatStore>()(
});

// get recent messages
const systemMessages = [systemInfo];
const systemMessages = [];
// if user define a mask with context prompts, wont send system info
if (session.mask.context.length === 0) {
systemMessages.push(systemInfo);
}

const recentMessages = get().getMessagesWithMemory();
const sendMessages = systemMessages.concat(
recentMessages.concat(userMessage),
Expand Down Expand Up @@ -345,7 +350,7 @@ export const useChatStore = create<ChatStore>()(

// wont send cleared context messages
const clearedContextMessages = session.messages.slice(
(session.clearContextIndex ?? 0),
session.clearContextIndex ?? 0,
);
const messages = clearedContextMessages.filter((msg) => !msg.isError);
const n = messages.length;
Expand Down