import React from "react"; import { AppCircle, AppCircleContainer, AppDownloadButton, AppDownloadButtonText, AppInfoAppName, AppInfoSnippetContainer, AppInfoSnippetLeft, AppInfoSnippetMiddle, AppInfoSnippetRight, AppInfoUserName, } from "./Apps-styles"; import { Avatar, ButtonBase } from "@mui/material"; import { getBaseApiReact, isMobile } from "../../App"; import LogoSelected from "../../assets/svgs/LogoSelected.svg"; import { Spacer } from "../../common/Spacer"; import { executeEvent } from "../../utils/events"; import { AppRating } from "./AppRating"; import { useRecoilState, useSetRecoilState } from "recoil"; import { settingsLocalLastUpdatedAtom, sortablePinnedAppsAtom } from "../../atoms/global"; import { saveToLocalStorage } from "./AppsNavBar"; export const AppInfoSnippet = ({ app, myName, isFromCategory }) => { const isInstalled = app?.status?.status === 'READY' const [sortablePinnedApps, setSortablePinnedApps] = useRecoilState(sortablePinnedAppsAtom); const isSelectedAppPinned = !!sortablePinnedApps?.find((item)=> item?.name === app?.name && item?.service === app?.service) const setSettingsLocalLastUpdated = useSetRecoilState(settingsLocalLastUpdatedAtom); return ( { if(isFromCategory){ executeEvent("selectedAppInfoCategory", { data: app, }); return } executeEvent("selectedAppInfo", { data: app, }); }} > center-icon { if(isFromCategory){ executeEvent("selectedAppInfoCategory", { data: app, }); return } executeEvent("selectedAppInfo", { data: app, }); }}> {app?.metadata?.title || app?.name} { app?.name} {!isMobile && ( { setSortablePinnedApps((prev) => { let updatedApps; if (isSelectedAppPinned) { // Remove the selected app if it is pinned updatedApps = prev.filter( (item) => !(item?.name === app?.name && item?.service === app?.service) ); } else { // Add the selected app if it is not pinned updatedApps = [...prev, { name: app?.name, service: app?.service, }]; } saveToLocalStorage('ext_saved_settings', 'sortablePinnedApps', updatedApps) return updatedApps; }); setSettingsLocalLastUpdated(Date.now()) }} sx={{ backgroundColor: '#359ff7ff', opacity: isSelectedAppPinned ? 0.6 : 1 }}> {isSelectedAppPinned ? 'Unpin' : 'Pin'} )} { executeEvent("addTab", { data: app }) }} sx={{ backgroundColor: isInstalled ? '#0091E1' : '#247C0E', }}> {isInstalled ? 'Open' : 'Download'} ); };