Add correct edit right widget
This commit is contained in:
		@@ -6,7 +6,6 @@ const authInstance = axios.create({
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
authInstance.interceptors.request.use((config: InternalAxiosRequestConfig) => {
 | 
			
		||||
  console.log(config);
 | 
			
		||||
  config.headers.Authorization = `Bearer ${localStorage.getItem("token")}`;
 | 
			
		||||
  config.headers["X-Language"] = languageStore.language ?? "ru";
 | 
			
		||||
  return config;
 | 
			
		||||
 
 | 
			
		||||
@@ -21,12 +21,13 @@ import { MediaViewer } from "@widgets";
 | 
			
		||||
interface SelectMediaDialogProps {
 | 
			
		||||
  open: boolean; // Corrected prop name
 | 
			
		||||
  onClose: () => void;
 | 
			
		||||
  onSelectMedia: (media: {
 | 
			
		||||
  onSelectMedia?: (media: {
 | 
			
		||||
    id: string;
 | 
			
		||||
    filename: string;
 | 
			
		||||
    media_name?: string;
 | 
			
		||||
    media_type: number;
 | 
			
		||||
  }) => void; // Renamed from onSelectArticle
 | 
			
		||||
  onSelectForSightMedia?: (mediaId: string) => void;
 | 
			
		||||
  linkedMediaIds?: string[]; // Renamed from linkedArticleIds, assuming it refers to media already in use
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -35,6 +36,7 @@ export const SelectMediaDialog = observer(
 | 
			
		||||
    open, // Corrected prop name
 | 
			
		||||
    onClose,
 | 
			
		||||
    onSelectMedia, // Renamed prop
 | 
			
		||||
    onSelectForSightMedia,
 | 
			
		||||
    linkedMediaIds = [], // Default to empty array if not provided, renamed
 | 
			
		||||
  }: SelectMediaDialogProps) => {
 | 
			
		||||
    const { media, getMedia } = mediaStore;
 | 
			
		||||
@@ -55,7 +57,11 @@ export const SelectMediaDialog = observer(
 | 
			
		||||
          if (hoveredMediaId) {
 | 
			
		||||
            const mediaItem = media.find((m) => m.id === hoveredMediaId);
 | 
			
		||||
            if (mediaItem) {
 | 
			
		||||
              onSelectMedia(mediaItem);
 | 
			
		||||
              if (onSelectForSightMedia) {
 | 
			
		||||
                onSelectForSightMedia(mediaItem.id);
 | 
			
		||||
              } else if (onSelectMedia) {
 | 
			
		||||
                onSelectMedia(mediaItem);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
            onClose();
 | 
			
		||||
          }
 | 
			
		||||
@@ -114,7 +120,11 @@ export const SelectMediaDialog = observer(
 | 
			
		||||
                      key={mediaItem.id}
 | 
			
		||||
                      onClick={() => setHoveredMediaId(mediaItem.id)} // Call onSelectMedia
 | 
			
		||||
                      onDoubleClick={() => {
 | 
			
		||||
                        onSelectMedia(mediaItem);
 | 
			
		||||
                        if (onSelectForSightMedia) {
 | 
			
		||||
                          onSelectForSightMedia(mediaItem.id);
 | 
			
		||||
                        } else if (onSelectMedia) {
 | 
			
		||||
                          onSelectMedia(mediaItem);
 | 
			
		||||
                        }
 | 
			
		||||
                        onClose();
 | 
			
		||||
                      }}
 | 
			
		||||
                      sx={{
 | 
			
		||||
 
 | 
			
		||||
@@ -24,16 +24,22 @@ import { ModelViewer3D } from "@widgets";
 | 
			
		||||
interface UploadMediaDialogProps {
 | 
			
		||||
  open: boolean;
 | 
			
		||||
  onClose: () => void;
 | 
			
		||||
  afterUpload: (media: {
 | 
			
		||||
  afterUpload?: (media: {
 | 
			
		||||
    id: string;
 | 
			
		||||
    filename: string;
 | 
			
		||||
    media_name?: string;
 | 
			
		||||
    media_type: number;
 | 
			
		||||
  }) => void;
 | 
			
		||||
  afterUploadSight?: (id: string) => void;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const UploadMediaDialog = observer(
 | 
			
		||||
  ({ open, onClose, afterUpload }: UploadMediaDialogProps) => {
 | 
			
		||||
  ({
 | 
			
		||||
    open,
 | 
			
		||||
    onClose,
 | 
			
		||||
    afterUpload,
 | 
			
		||||
    afterUploadSight,
 | 
			
		||||
  }: UploadMediaDialogProps) => {
 | 
			
		||||
    const [isLoading, setIsLoading] = useState(false);
 | 
			
		||||
    const [error, setError] = useState<string | null>(null);
 | 
			
		||||
    const [success, setSuccess] = useState(false);
 | 
			
		||||
@@ -103,7 +109,11 @@ export const UploadMediaDialog = observer(
 | 
			
		||||
          mediaName
 | 
			
		||||
        );
 | 
			
		||||
        if (media) {
 | 
			
		||||
          await afterUpload(media);
 | 
			
		||||
          if (afterUploadSight) {
 | 
			
		||||
            await afterUploadSight(media.id);
 | 
			
		||||
          } else if (afterUpload) {
 | 
			
		||||
            await afterUpload(media);
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        setSuccess(true);
 | 
			
		||||
      } catch (err) {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ type SightLanguageInfo = {
 | 
			
		||||
      media_type: number;
 | 
			
		||||
    }[];
 | 
			
		||||
  };
 | 
			
		||||
  right: { heading: string; body: string }[];
 | 
			
		||||
  right: { id: number; heading: string; body: string; media: [] }[];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
type SightCommonInfo = {
 | 
			
		||||
@@ -90,19 +90,43 @@ class CreateSightStore {
 | 
			
		||||
    makeAutoObservable(this);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  createNewRightArticle = () => {
 | 
			
		||||
    this.sight.ru.right.push({
 | 
			
		||||
  createNewRightArticle = async () => {
 | 
			
		||||
    const articleId = await languageInstance("ru").post("/article", {
 | 
			
		||||
      heading: "Введите русский заголовок",
 | 
			
		||||
      body: "Введите русский текст",
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.en.right.push({
 | 
			
		||||
    const { id } = articleId.data;
 | 
			
		||||
    await languageInstance("en").patch(`/article/${id}`, {
 | 
			
		||||
      heading: "Enter the English heading",
 | 
			
		||||
      body: "Enter the English text",
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.zh.right.push({
 | 
			
		||||
    await languageInstance("zh").patch(`/article/${id}`, {
 | 
			
		||||
      heading: "Введите китайский заголовок",
 | 
			
		||||
      body: "Введите китайский текст",
 | 
			
		||||
    });
 | 
			
		||||
    await authInstance.post(`/sight/${this.sight.id}/article`, {
 | 
			
		||||
      article_id: id,
 | 
			
		||||
      page_num: this.sight.ru.right.length + 1,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.sight.ru.right.push({
 | 
			
		||||
      id: id,
 | 
			
		||||
      heading: "Введите русский заголовок",
 | 
			
		||||
      body: "Введите русский текст",
 | 
			
		||||
      media: [],
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.en.right.push({
 | 
			
		||||
      id: id,
 | 
			
		||||
      heading: "Enter the English heading",
 | 
			
		||||
      body: "Enter the English text",
 | 
			
		||||
      media: [],
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.zh.right.push({
 | 
			
		||||
      id: id,
 | 
			
		||||
      heading: "Введите китайский заголовок",
 | 
			
		||||
      body: "Введите китайский текст",
 | 
			
		||||
      media: [],
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  updateLeftInfo = (language: Language, heading: string, body: string) => {
 | 
			
		||||
@@ -444,6 +468,32 @@ class CreateSightStore {
 | 
			
		||||
      filename: media.filename,
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  unlinkRightAritcle = async (id: number) => {
 | 
			
		||||
    this.sight.ru.right = this.sight.ru.right.filter(
 | 
			
		||||
      (article) => article.id !== id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.en.right = this.sight.en.right.filter(
 | 
			
		||||
      (article) => article.id !== id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.zh.right = this.sight.zh.right.filter(
 | 
			
		||||
      (article) => article.id !== id
 | 
			
		||||
    );
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  deleteRightArticle = async (id: number) => {
 | 
			
		||||
    await authInstance.delete(`/article/${id}`);
 | 
			
		||||
 | 
			
		||||
    this.sight.ru.right = this.sight.ru.right.filter(
 | 
			
		||||
      (article) => article.id !== id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.en.right = this.sight.en.right.filter(
 | 
			
		||||
      (article) => article.id !== id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.zh.right = this.sight.zh.right.filter(
 | 
			
		||||
      (article) => article.id !== id
 | 
			
		||||
    );
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const createSightStore = new CreateSightStore();
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,12 @@ export type SightLanguageInfo = {
 | 
			
		||||
    body: string;
 | 
			
		||||
    media: { id: string; media_type: number; filename: string }[];
 | 
			
		||||
  };
 | 
			
		||||
  right: { heading: string; body: string }[];
 | 
			
		||||
  right: {
 | 
			
		||||
    id: number;
 | 
			
		||||
    heading: string;
 | 
			
		||||
    body: string;
 | 
			
		||||
    media: { id: string; media_type: number; filename: string }[];
 | 
			
		||||
  }[];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export type SightCommonInfo = {
 | 
			
		||||
@@ -111,21 +116,42 @@ class EditSightStore {
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  getRightArticles = async (id: number) => {
 | 
			
		||||
    const responseRu = await languageInstance("ru").get(`/sight/${id}/article`);
 | 
			
		||||
    const responseEn = await languageInstance("en").get(`/sight/${id}/article`);
 | 
			
		||||
    const responseZh = await languageInstance("zh").get(`/sight/${id}/article`);
 | 
			
		||||
    let responseRu = await languageInstance("ru").get(`/sight/${id}/article`);
 | 
			
		||||
    let responseEn = await languageInstance("en").get(`/sight/${id}/article`);
 | 
			
		||||
    let responseZh = await languageInstance("zh").get(`/sight/${id}/article`);
 | 
			
		||||
 | 
			
		||||
    // Function to fetch media for a given set of articles
 | 
			
		||||
    const fetchMediaForArticles = async (articles: any[]) => {
 | 
			
		||||
      const articlesWithMedia = [];
 | 
			
		||||
      for (const article of articles) {
 | 
			
		||||
        const responseMedia = await authInstance.get(
 | 
			
		||||
          `/article/${article.id}/media`
 | 
			
		||||
        );
 | 
			
		||||
        articlesWithMedia.push({
 | 
			
		||||
          ...article,
 | 
			
		||||
          media: responseMedia.data,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      return articlesWithMedia;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Fetch media for articles in each language
 | 
			
		||||
    const ruArticlesWithMedia = await fetchMediaForArticles(responseRu.data);
 | 
			
		||||
    const enArticlesWithMedia = await fetchMediaForArticles(responseEn.data);
 | 
			
		||||
    const zhArticlesWithMedia = await fetchMediaForArticles(responseZh.data);
 | 
			
		||||
 | 
			
		||||
    const data = {
 | 
			
		||||
      ru: {
 | 
			
		||||
        right: responseRu.data,
 | 
			
		||||
        right: ruArticlesWithMedia,
 | 
			
		||||
      },
 | 
			
		||||
      en: {
 | 
			
		||||
        right: responseEn.data,
 | 
			
		||||
        right: enArticlesWithMedia,
 | 
			
		||||
      },
 | 
			
		||||
      zh: {
 | 
			
		||||
        right: responseZh.data,
 | 
			
		||||
        right: zhArticlesWithMedia,
 | 
			
		||||
      },
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    runInAction(() => {
 | 
			
		||||
      this.sight = {
 | 
			
		||||
        ...this.sight,
 | 
			
		||||
@@ -137,7 +163,6 @@ class EditSightStore {
 | 
			
		||||
          ...this.sight.en,
 | 
			
		||||
          right: data.en.right,
 | 
			
		||||
        },
 | 
			
		||||
 | 
			
		||||
        zh: {
 | 
			
		||||
          ...this.sight.zh,
 | 
			
		||||
          right: data.zh.right,
 | 
			
		||||
@@ -279,8 +304,13 @@ class EditSightStore {
 | 
			
		||||
      left_article: createdLeftArticleId,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    if (this.sight.common.left_article == 0) {
 | 
			
		||||
      return;
 | 
			
		||||
    for (const language of ["ru", "en", "zh"] as Language[]) {
 | 
			
		||||
      for (const article of this.sight[language].right) {
 | 
			
		||||
        await languageInstance(language).patch(`/article/${article.id}`, {
 | 
			
		||||
          heading: article.heading,
 | 
			
		||||
          body: article.body,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // await languageInstance("ru").patch(
 | 
			
		||||
@@ -375,6 +405,38 @@ class EditSightStore {
 | 
			
		||||
    );
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  unlinkRightArticle = async (article_id: number) => {
 | 
			
		||||
    await authInstance.delete(`/sight/${this.sight.common.id}/article`, {
 | 
			
		||||
      data: {
 | 
			
		||||
        article_id: article_id,
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.sight.ru.right = this.sight.ru.right.filter(
 | 
			
		||||
      (article) => article.id !== article_id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.en.right = this.sight.en.right.filter(
 | 
			
		||||
      (article) => article.id !== article_id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.zh.right = this.sight.zh.right.filter(
 | 
			
		||||
      (article) => article.id !== article_id
 | 
			
		||||
    );
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  deleteRightArticle = async (article_id: number) => {
 | 
			
		||||
    this.sight.ru.right = this.sight.ru.right.filter(
 | 
			
		||||
      (article) => article.id !== article_id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.en.right = this.sight.en.right.filter(
 | 
			
		||||
      (article) => article.id !== article_id
 | 
			
		||||
    );
 | 
			
		||||
    this.sight.zh.right = this.sight.zh.right.filter(
 | 
			
		||||
      (article) => article.id !== article_id
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    await authInstance.delete(`/article/${article_id}`);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  uploadMediaOpen = false;
 | 
			
		||||
  setUploadMediaOpen = (open: boolean) => {
 | 
			
		||||
    this.uploadMediaOpen = open;
 | 
			
		||||
@@ -442,6 +504,168 @@ class EditSightStore {
 | 
			
		||||
      filename: media.filename,
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  unlinkPreviewMedia = async () => {
 | 
			
		||||
    this.sight.common.preview_media = null;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  linkPreviewMedia = async (mediaId: string) => {
 | 
			
		||||
    this.sight.common.preview_media = mediaId;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  linkArticle = async (article_id: number) => {
 | 
			
		||||
    const response = await languageInstance("ru").get(`/article/${article_id}`);
 | 
			
		||||
    const responseEn = await languageInstance("en").get(
 | 
			
		||||
      `/article/${article_id}`
 | 
			
		||||
    );
 | 
			
		||||
    const responseZh = await languageInstance("zh").get(
 | 
			
		||||
      `/article/${article_id}`
 | 
			
		||||
    );
 | 
			
		||||
    const mediaIds = await authInstance.get(`/article/${article_id}/media`);
 | 
			
		||||
    runInAction(() => {
 | 
			
		||||
      this.sight.ru.right.push({
 | 
			
		||||
        id: article_id,
 | 
			
		||||
        heading: response.data.heading,
 | 
			
		||||
        body: response.data.body,
 | 
			
		||||
        media: mediaIds.data,
 | 
			
		||||
      });
 | 
			
		||||
      this.sight.en.right.push({
 | 
			
		||||
        id: article_id,
 | 
			
		||||
        heading: responseEn.data.heading,
 | 
			
		||||
        body: responseEn.data.body,
 | 
			
		||||
        media: mediaIds.data,
 | 
			
		||||
      });
 | 
			
		||||
      this.sight.zh.right.push({
 | 
			
		||||
        id: article_id,
 | 
			
		||||
        heading: responseZh.data.heading,
 | 
			
		||||
        body: responseZh.data.body,
 | 
			
		||||
        media: mediaIds.data,
 | 
			
		||||
      });
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  deleteRightArticleMedia = async (article_id: number, media_id: string) => {
 | 
			
		||||
    await authInstance.delete(`/article/${article_id}/media`, {
 | 
			
		||||
      data: {
 | 
			
		||||
        media_id: media_id,
 | 
			
		||||
      },
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.sight.ru.right = this.sight.ru.right.map((article) => {
 | 
			
		||||
      if (article.id === article_id) {
 | 
			
		||||
        article.media = article.media.filter((media) => media.id !== media_id);
 | 
			
		||||
      }
 | 
			
		||||
      return article;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.sight.en.right = this.sight.en.right.map((article) => {
 | 
			
		||||
      if (article.id === article_id) {
 | 
			
		||||
        article.media = article.media.filter((media) => media.id !== media_id);
 | 
			
		||||
      }
 | 
			
		||||
      return article;
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.sight.zh.right = this.sight.zh.right.map((article) => {
 | 
			
		||||
      if (article.id === article_id) {
 | 
			
		||||
        article.media = article.media.filter((media) => media.id !== media_id);
 | 
			
		||||
      }
 | 
			
		||||
      return article;
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  createNewRightArticle = async () => {
 | 
			
		||||
    const articleId = await languageInstance("ru").post("/article", {
 | 
			
		||||
      heading: "Введите русский заголовок",
 | 
			
		||||
      body: "Введите русский текст",
 | 
			
		||||
    });
 | 
			
		||||
    const { id } = articleId.data;
 | 
			
		||||
    await languageInstance("en").patch(`/article/${id}`, {
 | 
			
		||||
      heading: "Enter the English heading",
 | 
			
		||||
      body: "Enter the English text",
 | 
			
		||||
    });
 | 
			
		||||
    await languageInstance("zh").patch(`/article/${id}`, {
 | 
			
		||||
      heading: "Введите китайский заголовок",
 | 
			
		||||
      body: "Введите китайский текст",
 | 
			
		||||
    });
 | 
			
		||||
    await authInstance.post(`/sight/${this.sight.common.id}/article`, {
 | 
			
		||||
      article_id: id,
 | 
			
		||||
      page_num: this.sight.ru.right.length + 1,
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.sight.ru.right.push({
 | 
			
		||||
      id: id,
 | 
			
		||||
      heading: "Введите русский заголовок",
 | 
			
		||||
      body: "Введите русский текст",
 | 
			
		||||
      media: [],
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.en.right.push({
 | 
			
		||||
      id: id,
 | 
			
		||||
      heading: "Enter the English heading",
 | 
			
		||||
      body: "Enter the English text",
 | 
			
		||||
      media: [],
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.zh.right.push({
 | 
			
		||||
      id: id,
 | 
			
		||||
      heading: "Введите китайский заголовок",
 | 
			
		||||
      body: "Введите китайский текст",
 | 
			
		||||
      media: [],
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  createLinkWithRightArticle = async (
 | 
			
		||||
    media: {
 | 
			
		||||
      id: string;
 | 
			
		||||
      filename: string;
 | 
			
		||||
      media_name?: string;
 | 
			
		||||
      media_type: number;
 | 
			
		||||
    },
 | 
			
		||||
    article_id: number
 | 
			
		||||
  ) => {
 | 
			
		||||
    await authInstance.post(`/article/${article_id}/media`, {
 | 
			
		||||
      media_id: media.id,
 | 
			
		||||
      media_order: 1,
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.ru.right = this.sight.ru.right.map((article) => {
 | 
			
		||||
      if (article.id === article_id) {
 | 
			
		||||
        article.media.unshift({
 | 
			
		||||
          id: media.id,
 | 
			
		||||
          media_type: media.media_type,
 | 
			
		||||
          filename: media.filename,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      return article;
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.en.right = this.sight.en.right.map((article) => {
 | 
			
		||||
      if (article.id === article_id) {
 | 
			
		||||
        article.media.unshift({
 | 
			
		||||
          id: media.id,
 | 
			
		||||
          media_type: media.media_type,
 | 
			
		||||
          filename: media.filename,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      return article;
 | 
			
		||||
    });
 | 
			
		||||
    this.sight.zh.right = this.sight.zh.right.map((article) => {
 | 
			
		||||
      if (article.id === article_id) {
 | 
			
		||||
        article.media.unshift({
 | 
			
		||||
          id: media.id,
 | 
			
		||||
          media_type: media.media_type,
 | 
			
		||||
          filename: media.filename,
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
      return article;
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  updateRightArticleInfo = (
 | 
			
		||||
    index: number,
 | 
			
		||||
    language: Language,
 | 
			
		||||
    heading: string,
 | 
			
		||||
    body: string
 | 
			
		||||
  ) => {
 | 
			
		||||
    this.sight[language].right[index].heading = heading;
 | 
			
		||||
    this.sight[language].right[index].body = body;
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const editSightStore = new EditSightStore();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user