fix: menu item/category create, demo banner reach, token refresh, blog publish
Dashboard & API bug fixes for owner-reported breakage: - MenuController validators (PosValidators): NameEn was required but the dashboard sends null when blank, so every manual menu-item create failed and category create failed 100% (the form never sends nameEn). Now optional. - DemoDataBanner: only showed when a cafe was exactly empty, so showcase-seeded cafes (2-3 cats / 3-5 items) could never trigger the one-click seed. Widened gate to sparse menus (<5 cats && <10 items) and added a clear "nothing to add" message when already populated. - client.ts: added one-time JWT refresh-and-retry on 401 (shared in-flight promise) before bouncing to /login. Expired access tokens silently broke ticket list, add-table, and other reads. - Surface API errors as toasts on menu + table mutations (were swallowed silently, so failures looked like "nothing happens"). - Admin blog editor: saving an edit dropped IsPublished (defaulted false, silently unpublishing the post on every save); now persisted with a toggle. Also hoisted the inner Field component to module scope - it was remounting every input on each keystroke and dropping focus. - Admin integrations: replaced raw radio gateway selector with a styled RadioDot matching the iOS toggles. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -43,6 +43,12 @@ export function DemoDataBanner({ invalidateKeys, className }: Props) {
|
||||
|
||||
if (!cafeId || (role !== "Owner" && role !== "Manager")) return null;
|
||||
if (done && summary) {
|
||||
const nothingAdded =
|
||||
summary.categoriesAdded === 0 &&
|
||||
summary.itemsAdded === 0 &&
|
||||
summary.tablesAdded === 0 &&
|
||||
summary.ingredientsAdded === 0 &&
|
||||
!summary.taxCreated;
|
||||
return (
|
||||
<div
|
||||
className={cn(
|
||||
@@ -52,10 +58,16 @@ export function DemoDataBanner({ invalidateKeys, className }: Props) {
|
||||
>
|
||||
<Sparkles className="size-4 shrink-0" />
|
||||
<span>
|
||||
دادههای نمونه اضافه شد — {summary.categoriesAdded} دسته،{" "}
|
||||
{summary.itemsAdded} آیتم، {summary.tablesAdded} میز،{" "}
|
||||
{summary.ingredientsAdded} ماده اولیه
|
||||
{summary.taxCreated ? "، مالیات ۹٪" : ""}.
|
||||
{nothingAdded ? (
|
||||
"همه دادههای نمونه از قبل موجود بودند — موردی اضافه نشد."
|
||||
) : (
|
||||
<>
|
||||
دادههای نمونه اضافه شد — {summary.categoriesAdded} دسته،{" "}
|
||||
{summary.itemsAdded} آیتم، {summary.tablesAdded} میز،{" "}
|
||||
{summary.ingredientsAdded} ماده اولیه
|
||||
{summary.taxCreated ? "، مالیات ۹٪" : ""}.
|
||||
</>
|
||||
)}
|
||||
</span>
|
||||
</div>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user