{"version":3,"sources":["../../src/hooks/useWallPosts.ts"],"names":[],"mappings":";;AAuBO,SAAS,aAAa,IAAA,EAAgD;AAC3E,EAAA,MAAM,aAAA,GAAgB,MAAM,aAAA,IAAiB,WAAA;AAC7C,EAAA,MAAM,MAAA,GAAS,MAAM,MAAA,IAAU,CAAA;AAE/B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,QAAA,CAAqB,EAAE,CAAA;AACjD,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAAS,IAAI,CAAA;AAC3C,EAAA,MAAM,OAAA,GAAU,OAA8C,IAAI,CAAA;AAElE,EAAA,MAAM,OAAA,GAAU,YAAY,YAAY;AACtC,IAAA,IAAI;AACF,MAAA,MAAM,MAAM,MAAM,KAAA,CAAM,eAAe,EAAE,KAAA,EAAO,YAAY,CAAA;AAC5D,MAAA,MAAM,IAAA,GAA+B,MAAM,GAAA,CAAI,IAAA,EAAK;AACpD,MAAA,QAAA,CAAS,IAAA,CAAK,KAAA,IAAS,EAAE,CAAA;AAAA,IAC3B,CAAA,CAAA,MAAQ;AAAA,IAER;AAAA,EACF,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAA,EAAQ,CAAE,OAAA,CAAQ,MAAM,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,EAC3C,CAAA,EAAG,CAAC,OAAO,CAAC,CAAA;AAEZ,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,UAAU,CAAA,EAAG;AACjB,IAAA,OAAA,CAAQ,OAAA,GAAU,YAAY,MAAM;AAClC,MAAA,OAAA,EAAQ;AAAA,IACV,GAAG,MAAM,CAAA;AACT,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAA,CAAQ,OAAA,EAAS,aAAA,CAAc,OAAA,CAAQ,OAAO,CAAA;AAAA,IACpD,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,OAAO,CAAC,CAAA;AAEpB,EAAA,OAAO,EAAE,KAAA,EAAO,OAAA,EAAS,OAAA,EAAQ;AACnC","file":"useWallPosts.mjs","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { WallPost } from '../types/wall';\n\nexport interface UseWallPostsOptions {\n  /** Endpoint that returns `{ posts: WallPost[] }`. Defaults to '/api/wall'. */\n  postsEndpoint?: string;\n  /**\n   * Poll interval in ms. Default 0 (no polling — only manual refresh).\n   * Some demos poll posts every 10s for admins; pass 10000 in that case.\n   */\n  pollMs?: number;\n}\n\nexport interface UseWallPostsResult {\n  posts: WallPost[];\n  loading: boolean;\n  refresh: () => Promise<void>;\n}\n\n/**\n * Fetches and (optionally) polls wall posts. Returns the array, a loading\n * flag for the initial load, and a manual refresh handler.\n */\nexport function useWallPosts(opts?: UseWallPostsOptions): UseWallPostsResult {\n  const postsEndpoint = opts?.postsEndpoint ?? '/api/wall';\n  const pollMs = opts?.pollMs ?? 0;\n\n  const [posts, setPosts] = useState<WallPost[]>([]);\n  const [loading, setLoading] = useState(true);\n  const pollRef = useRef<ReturnType<typeof setInterval> | null>(null);\n\n  const refresh = useCallback(async () => {\n    try {\n      const res = await fetch(postsEndpoint, { cache: 'no-store' });\n      const data: { posts?: WallPost[] } = await res.json();\n      setPosts(data.posts ?? []);\n    } catch {\n      /* silent */\n    }\n  }, [postsEndpoint]);\n\n  useEffect(() => {\n    refresh().finally(() => setLoading(false));\n  }, [refresh]);\n\n  useEffect(() => {\n    if (pollMs <= 0) return;\n    pollRef.current = setInterval(() => {\n      refresh();\n    }, pollMs);\n    return () => {\n      if (pollRef.current) clearInterval(pollRef.current);\n    };\n  }, [pollMs, refresh]);\n\n  return { posts, loading, refresh };\n}\n"]}