feat: fix sight edit
This commit is contained in:
@@ -98,18 +98,22 @@ class CreateSightStore {
|
||||
heading: "New Heading (EN)",
|
||||
body: "New Text (EN)",
|
||||
};
|
||||
const articleZhData = { heading: "新标题 (ZH)", body: "新文本 (ZH)" };
|
||||
const articleZhData = {
|
||||
heading: "Новый заголовок (ZH)",
|
||||
body: "Новый текст (ZH)",
|
||||
};
|
||||
|
||||
try {
|
||||
const articleRes = await languageInstance("ru").post(
|
||||
"/article",
|
||||
articleRuData
|
||||
);
|
||||
this.needLeaveAgree = true;
|
||||
const articleRes = await authInstance.post("/article", {
|
||||
translation: {
|
||||
ru: articleRuData,
|
||||
en: articleEnData,
|
||||
zh: articleZhData,
|
||||
},
|
||||
});
|
||||
const { id } = articleRes.data; // New article's ID
|
||||
|
||||
await languageInstance("en").patch(`/article/${id}`, articleEnData);
|
||||
await languageInstance("zh").patch(`/article/${id}`, articleZhData);
|
||||
|
||||
runInAction(() => {
|
||||
const newArticleEntry = { id, media: [] };
|
||||
this.sight.ru.right.push({ ...newArticleEntry, ...articleRuData });
|
||||
@@ -376,6 +380,7 @@ class CreateSightStore {
|
||||
|
||||
// --- General Store Methods ---
|
||||
clearCreateSight = () => {
|
||||
this.needLeaveAgree = false;
|
||||
this.sight = JSON.parse(JSON.stringify(initialSightState)); // Reset to initial
|
||||
};
|
||||
|
||||
@@ -383,6 +388,7 @@ class CreateSightStore {
|
||||
content: Partial<SightLanguageInfo | SightCommonInfo>, // Corrected types
|
||||
language?: Language
|
||||
) => {
|
||||
this.needLeaveAgree = true;
|
||||
if (language) {
|
||||
this.sight[language] = { ...this.sight[language], ...content };
|
||||
} else {
|
||||
@@ -587,10 +593,31 @@ class CreateSightStore {
|
||||
}
|
||||
};
|
||||
|
||||
updateRightArticles = async (articles: any[], language: Language) => {
|
||||
runInAction(() => {
|
||||
this.sight[language].right = articles;
|
||||
});
|
||||
updateRightArticles = async (articles: any[]) => {
|
||||
const articlesIds = articles.map((article) => article.id);
|
||||
|
||||
const sortArticles = (existing: any[]) => {
|
||||
const articleMap = new Map(
|
||||
existing.map((article) => [article.id, article])
|
||||
);
|
||||
return articlesIds
|
||||
.map((id) => articleMap.get(id))
|
||||
.filter(
|
||||
(article): article is (typeof existing)[number] =>
|
||||
article !== undefined
|
||||
);
|
||||
};
|
||||
|
||||
this.sight.ru.right = sortArticles(this.sight.ru.right);
|
||||
this.sight.en.right = sortArticles(this.sight.en.right);
|
||||
this.sight.zh.right = sortArticles(this.sight.zh.right); // теперь zh тоже сортируется одинаково
|
||||
|
||||
this.needLeaveAgree = true;
|
||||
};
|
||||
|
||||
needLeaveAgree = false;
|
||||
setNeedLeaveAgree = (need: boolean) => {
|
||||
this.needLeaveAgree = need;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user