mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 04:17:23 +00:00
Implement localStorage management for publish data during component lifecycle
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { useEffect, useState } from "react";
|
import { useEffect, useRef, useState } from "react";
|
||||||
import {
|
import {
|
||||||
MdAdd,
|
MdAdd,
|
||||||
MdClose,
|
MdClose,
|
||||||
@@ -29,6 +29,37 @@ export default function PublishPage() {
|
|||||||
const [error, setError] = useState<string | null>(null);
|
const [error, setError] = useState<string | null>(null);
|
||||||
const [isSubmitting, setSubmitting] = useState(false);
|
const [isSubmitting, setSubmitting] = useState(false);
|
||||||
|
|
||||||
|
const isFirstLoad = useRef(true);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (isFirstLoad.current) {
|
||||||
|
const oldData = localStorage.getItem("publish_data");
|
||||||
|
if (oldData) {
|
||||||
|
try {
|
||||||
|
const data = JSON.parse(oldData);
|
||||||
|
setTitle(data.title || "");
|
||||||
|
setAltTitles(data.alternative_titles || []);
|
||||||
|
setTags(data.tags || []);
|
||||||
|
setArticle(data.article || "");
|
||||||
|
setImages(data.images || []);
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Failed to parse publish_data from localStorage", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isFirstLoad.current = false;
|
||||||
|
} else {
|
||||||
|
const data = {
|
||||||
|
title: title,
|
||||||
|
alternative_titles: altTitles,
|
||||||
|
tags: tags,
|
||||||
|
article: article,
|
||||||
|
images: images,
|
||||||
|
};
|
||||||
|
const dataString = JSON.stringify(data);
|
||||||
|
localStorage.setItem("publish_data", dataString);
|
||||||
|
}
|
||||||
|
}, [altTitles, article, images, tags, title]);
|
||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
|
|
||||||
@@ -69,6 +100,7 @@ export default function PublishPage() {
|
|||||||
images: images,
|
images: images,
|
||||||
});
|
});
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
|
localStorage.removeItem("publish_data");
|
||||||
setSubmitting(false);
|
setSubmitting(false);
|
||||||
appContext.clear();
|
appContext.clear();
|
||||||
navigate("/resources/" + res.data!, { replace: true });
|
navigate("/resources/" + res.data!, { replace: true });
|
||||||
|
Reference in New Issue
Block a user