nitro-v36-with-renderer-v36
/
src /
components /
room /
widgets /
furniture /
FurnitureFriendFurniView.tsx
FurnitureFriendFurniView.tsx 4.5 Ko
Télécharger le fichier
import { FC } from 'react';
import { LocalizeText } from '../../../../api';
import { Button, DraggableWindow, LayoutAvatarImageView, OctaneCardContentView, OctaneCardHeaderView, OctaneCardView } from '../../../../common';
import { useFurnitureFriendFurniWidget } from '../../../../hooks';
import { BaseButton } from '../../../../common/BaseButton';
import '../../../../css/room/FurniWindowsBAir.css';
import { NativeTextTree } from '../../../../common/native-text/NativeTextTree';
const formatEngravingDate = (value: string) => {
if (!value) return value;
const parts = value.split(/[-/.]/).map((part) => parseInt(part, 10));
if (parts.length !== 3 || parts.some(Number.isNaN)) return value;
const [day, month, year] = parts;
return `${String(day).padStart(2, '0')}/${String(month).padStart(2, '0')}/${year}`;
};
const getEngravingCaption = (type: number) => {
switch (type) {
case 3:
return LocalizeText('wildwest.engraving.caption');
case 4:
return LocalizeText('habboween.engraving.caption');
default:
return LocalizeText('lovelock.engraving.caption');
}
};
export const FurnitureFriendFurniView: FC<{}> = (props) => {
const { objectId = -1, type = 0, stage = 0, partnerConfirmed = false, usernames = [], figures = [], date = null, onClose = null, cancelLock = null, respond = null } = useFurnitureFriendFurniWidget();
if (objectId === -1) return null;
if (stage > 0) {
const lockStage = partnerConfirmed ? 2 : stage;
return (
<NativeTextTree>
<OctaneCardView className="octane-engraving-lock octane-furni-lock-confirm" theme="primary-slim">
<OctaneCardHeaderView headerText={LocalizeText('friend.furniture.confirm.lock.caption')} onCloseClick={cancelLock ?? onClose} />
<OctaneCardContentView>
<h5 className="octane-furni-lock-confirm__subtitle text-black text-center font-bold mt-2 mb-2">{LocalizeText('friend.furniture.confirm.lock.subtitle')}</h5>
<div className="flex justify-center mb-2">
<div className={`engraving-lock-stage-${lockStage}`} />
</div>
{(stage === 2 || partnerConfirmed) && (
<div className="octane-furni-lock-confirm__message text-black text-center mb-2">{LocalizeText('friend.furniture.confirm.lock.other.locked')}</div>
)}
<div className="flex gap-1">
<Button fullWidth onClick={() => (cancelLock ?? onClose)()}>
{LocalizeText('friend.furniture.confirm.lock.button.cancel')}
</Button>
<Button fullWidth variant="success" onClick={() => respond(true)}>
{LocalizeText('friend.furniture.confirm.lock.button.confirm')}
</Button>
</div>
</OctaneCardContentView>
</OctaneCardView>
</NativeTextTree>
);
}
if (usernames.length > 0) {
const engravingTypeClass = type === 3 || type === 4 ? `engraving-lock-${type}` : '';
return (
<NativeTextTree>
<DraggableWindow handleSelector=".octane-engraving-lock-view">
<div className={`octane-engraving-lock-view octane-furni-lovelock ${engravingTypeClass}`.trim()}>
<BaseButton type="button" className="engraving-lock-close" onClick={onClose} aria-label="Close" />
<div className="engraving-lock-avatar engraving-lock-avatar--left">
<LayoutAvatarImageView direction={2} figure={figures[0]} />
</div>
<div className="engraving-lock-avatar engraving-lock-avatar--right">
<LayoutAvatarImageView direction={4} figure={figures[1]} />
</div>
<div className="engraving-lock-header">{getEngravingCaption(type)}</div>
<div className="engraving-lock-date">{formatEngravingDate(date)}</div>
<div className="engraving-lock-name engraving-lock-name--left">{usernames[0]}</div>
<div className="engraving-lock-name engraving-lock-name--right">{usernames[1]}</div>
</div>
</DraggableWindow>
</NativeTextTree>
);
}
return null;
};
