todos-contra-el-fuego-web/imports
vjrj 229b2cb233 cleanup: UNSAFE_componentWillReceiveProps -> modern lifecycles (React 19)
The 4 class components on UNSAFE_componentWillReceiveProps converted:
- FromNow, FireStats: state is a pure mirror of props -> getDerivedStateFromProps
- Fires: split the derived state (getDerivedStateFromProps) from the URL-
  canonicalization side effect (componentDidUpdate, guarded by prevProps) so
  the side effect never runs inside the pure gDSFP
- SelectionMap: marker is also locally draggable, so gDSFP would clobber a
  drag -> componentDidUpdate guarded on a real center/distance value change
  (no clobber, no setState loop), merged with the existing fit()

Browser-verified: /fires count, fire detail + FromNow, active-fire URL
canonicalizes to /fire/archive/:id, home SelectionMap renders stably (no
render loop). No UNSAFE_ warnings remain from our code. REST smoke
byte-identical.
2026-07-21 14:03:44 +02:00
..
api fix: fire ids leaked into URLs as ObjectID("...") on Mongo 7 2026-07-17 18:31:59 +02:00
modules notif: remove code migrated to tcef-notifications microservice 2026-07-13 19:45:13 +02:00
startup deps: i18next 10 -> 23, react-i18next 7 -> 14 2026-07-18 06:28:41 +02:00
ui cleanup: UNSAFE_componentWillReceiveProps -> modern lifecycles (React 19) 2026-07-21 14:03:44 +02:00