- Doctor page map: the visible locations card read doctor.address (empty
from the detail endpoint) while coordinates live in the separately
fetched addresses. Thread `addresses` (with map.latitude/longitude) down
page → DoctorPage → DetailDoctor → Locations; card hidden when empty
- Claim modal: updated info-box text ("نوبتهای این پروفایل عمومی و غیرخاص
هستند")، added mobile field (validated, must match account), added ALTCHA
widget (submit disabled until captcha resolves; payload sent as `altcha`)
- Owner delete: services.deleteDoctor + a guarded two-step "حذف این پروفایل"
in the claim success screen (owner enforced server-side; 403/409 shown)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
28 lines
714 B
JavaScript
28 lines
714 B
JavaScript
import Link from "./Link";
|
|
import Share from "./Share";
|
|
import Title from "./Title";
|
|
import AboutDcotor from "./cards/AboutDcotor";
|
|
import Comments from "./cards/comments";
|
|
import Locations from "./cards/locations";
|
|
|
|
function DetailDoctor({ doctor, comments, rateAggregate, addresses }) {
|
|
return (
|
|
<div className="w-full lg:w-[59%]">
|
|
<div className="hidden lg:flex">
|
|
<Share data={doctor} />
|
|
</div>
|
|
<Title doctor={doctor} />
|
|
<Link />
|
|
<AboutDcotor doctor={doctor} />
|
|
<Locations addresses={addresses} />
|
|
<Comments
|
|
doctor={doctor}
|
|
comments={comments}
|
|
rateAggregate={rateAggregate}
|
|
/>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default DetailDoctor;
|