-
Mahmoud Aglan authored
Image uploads never worked (validateFile's null success was read as failure, generatePath got three arguments, the returned URL was treated as a flag); expiry was never saved; an Arabic-only announcement could not be stored (title and content are NOT NULL); the list linked to an unpublish route that did not exist. Now: Arabic title and text are what is required, expiry is entered in Cairo time, images go to org-media (JPEG/PNG/WebP up to 5 MB, removed from storage when replaced, removed or the announcement is deleted). Publishing sets published_at and sends one org_announcement notification to every active member, in chunks of 500, with org_id and announcement_id in data; it is logged in org_activity_log. Republishing after an unpublish never notifies twice. "Publish now" on create needs the same permission as publish. Co-Authored-By:Claude Opus 5.5 <noreply@anthropic.com>
38add483