1
0
mirror of https://github.com/XFox111/TabsAsideExtension.git synced 2026-04-22 07:58:01 +03:00
Files
TabsAsideExtension/entrypoints/sidepanel/layouts/collections/messages/CloudIssueMessages.tsx
T
xfox111 2bd9337e63 Major 3.0 (#118)
Co-authored-by: Maison da Silva <maisonmdsgreen@hotmail.com>
2025-07-30 15:02:26 +03:00

51 lines
1.9 KiB
TypeScript

import resolveConflict from "@/features/collectionStorage/utils/resolveConflict";
import { Button, MessageBar, MessageBarActions, MessageBarBody, MessageBarProps, MessageBarTitle } from "@fluentui/react-components";
import { ArrowUpload20Regular, CloudArrowDown20Regular, Wrench20Regular } from "@fluentui/react-icons";
import { useCollections } from "../../../contexts/CollectionsProvider";
export default function CloudIssueMessages(props: MessageBarProps): React.ReactElement
{
const { cloudIssue, refreshCollections } = useCollections();
const overrideStorageWith = async (source: "local" | "sync") =>
{
await resolveConflict(source);
await refreshCollections();
};
return (
<>
{ cloudIssue === "parse_error" &&
<MessageBar intent="error" layout="multiline" { ...props }>
<MessageBarBody>
<MessageBarTitle>{ i18n.t("parse_error_message.title") }</MessageBarTitle>
{ i18n.t("parse_error_message.message") }
</MessageBarBody>
<MessageBarActions>
<Button icon={ <Wrench20Regular /> } onClick={ () => overrideStorageWith("local") }>
{ i18n.t("parse_error_message.action") }
</Button>
</MessageBarActions>
</MessageBar>
}
{ cloudIssue === "merge_conflict" &&
<MessageBar intent="warning" layout="multiline" { ...props }>
<MessageBarBody>
<MessageBarTitle>{ i18n.t("merge_conflict_message.title") }</MessageBarTitle>
{ i18n.t("merge_conflict_message.message") }
</MessageBarBody>
<MessageBarActions>
<Button icon={ <ArrowUpload20Regular /> } onClick={ () => overrideStorageWith("local") }>
{ i18n.t("merge_conflict_message.accept_local") }
</Button>
<Button icon={ <CloudArrowDown20Regular /> } onClick={ () => overrideStorageWith("sync") }>
{ i18n.t("merge_conflict_message.accept_cloud") }
</Button>
</MessageBarActions>
</MessageBar>
}
</>
);
}