chore: update tag rename

This commit is contained in:
Steven 2024-01-27 05:26:32 +08:00
parent 566171783d
commit b9cbe6626f
5 changed files with 15 additions and 11 deletions

View file

@ -233,6 +233,7 @@ func (s *APIV1Service) UploadResource(c echo.Context) error {
if err != nil {
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to create resource").SetInternal(err)
}
metric.Enqueue("resource create")
return c.JSON(http.StatusOK, convertResourceFromStore(resource))
}

View file

@ -11,6 +11,7 @@ import (
"google.golang.org/protobuf/types/known/timestamppb"
apiv2pb "github.com/usememos/memos/proto/gen/api/v2"
"github.com/usememos/memos/server/service/metric"
"github.com/usememos/memos/store"
)
@ -44,6 +45,8 @@ func (s *APIV2Service) CreateResource(ctx context.Context, request *apiv2pb.Crea
if err != nil {
return nil, status.Errorf(codes.Internal, "failed to create resource: %v", err)
}
metric.Enqueue("resource create")
return &apiv2pb.CreateResourceResponse{
Resource: s.convertResourceFromStore(ctx, resource),
}, nil

View file

@ -104,7 +104,7 @@ func (s *APIV2Service) RenameTag(ctx context.Context, request *apiv2pb.RenameTag
return nil, status.Errorf(codes.Internal, "failed to parse memo: %v", err)
}
traverseASTNodes(nodes, func(node ast.Node) {
if tag, ok := node.(*ast.Tag); ok {
if tag, ok := node.(*ast.Tag); ok && tag.Content == request.OldName {
tag.Content = request.NewName
}
})

View file

@ -38,8 +38,8 @@ const EmbeddedMemo = ({ resourceId, params: paramsStr }: Props) => {
// Add the memo to the set of embedded memos. This is used to prevent infinite loops when a memo embeds itself.
context.embeddedMemos.add(resourceName);
const params = new URLSearchParams(paramsStr);
const useInlineMode = params.has("inline");
if (useInlineMode) {
const inlineMode = params.has("inline");
if (inlineMode) {
return (
<div className="w-full">
<MemoContent nodes={memo.nodes} memoId={memo.id} embeddedMemos={context.embeddedMemos} />

View file

@ -4,6 +4,7 @@ import { toast } from "react-hot-toast";
import { tagServiceClient } from "@/grpcweb";
import useCurrentUser from "@/hooks/useCurrentUser";
import useLoading from "@/hooks/useLoading";
import { useFilterStore } from "@/store/module";
import { useTranslate } from "@/utils/i18n";
import { generateDialog } from "./Dialog";
import Icon from "./Icon";
@ -15,6 +16,7 @@ interface Props extends DialogProps {
const RenameTagDialog: React.FC<Props> = (props: Props) => {
const { tag, destroy } = props;
const t = useTranslate();
const filterStore = useFilterStore();
const currentUser = useCurrentUser();
const [newName, setNewName] = useState(tag);
const requestState = useLoading(false);
@ -24,8 +26,8 @@ const RenameTagDialog: React.FC<Props> = (props: Props) => {
};
const handleConfirm = async () => {
if (!newName) {
toast.error("Please fill all required fields");
if (!newName || newName.includes(" ")) {
toast.error("Tag name cannot be empty or contain spaces");
return;
}
if (newName === tag) {
@ -40,13 +42,12 @@ const RenameTagDialog: React.FC<Props> = (props: Props) => {
newName: newName,
});
toast.success("Rename tag successfully");
setTimeout(() => {
window.location.reload();
}, 300);
filterStore.setTagFilter(newName);
} catch (error: any) {
console.error(error);
toast.error(error.details);
}
destroy();
};
return (
@ -75,9 +76,8 @@ const RenameTagDialog: React.FC<Props> = (props: Props) => {
/>
</div>
<List className="!leading-5" size="sm" marker="disc">
<ListItem>All memes with this tag will be updated.</ListItem>
<ListItem>If the amount of data is large, it will take longer and the server load will become higher.</ListItem>
<ListItem>The page will be automatically refreshed when the task is completed</ListItem>
<ListItem>All your memos with this tag will be updated.</ListItem>
<ListItem>If the number of related memos is large, it will take longer and the server load will become higher.</ListItem>
</List>
</div>
<div className="w-full flex flex-row justify-end items-center mt-2 space-x-2">