MCPcopy Create free account
hub / github.com/ImGoodBai/MapGoGoGo / HomeView

Function HomeView

frontend/src/App.tsx:310–392  ·  view source on GitHub ↗
({
  challenges,
  onCreate,
  onOpen,
}: {
  challenges: Challenge[];
  onCreate: () => void;
  onOpen: (id: string) => void;
})

Source from the content-addressed store, hash-verified

308}
309
310function HomeView({
311 challenges,
312 onCreate,
313 onOpen,
314}: {
315 challenges: Challenge[];
316 onCreate: () => void;
317 onOpen: (id: string) => void;
318}) {
319 const [shareMessage, setShareMessage] = useState("");
320 const [shareFallbackText, setShareFallbackText] = useState("");
321
322 async function shareChallenge(challenge: Challenge) {
323 const text = challengeShareText(challenge);
324 const copied = await copyText(text);
325 setShareMessage(copied ? "分享文案已复制。" : "复制失败,可手动复制下面的文案。");
326 setShareFallbackText(copied ? "" : text);
327 }
328
329 return (
330 <section className="contentGrid">
331 <div className="panel heroPanel">
332 <span className="eyebrow">点亮城市</span>
333 <h1>勾选一个地图区域,让大家一起来点亮。</h1>
334 <p>
335 选择学校、公园、街区或任意地点,生成一个可分享的地图挑战。参与者在范围内走动,经过的区域会被点亮。
336 </p>
337 <div className="heroActions">
338 <button className="primaryButton" onClick={onCreate}>
339 <Plus size={18} />
340 发起挑战
341 </button>
342 <button
343 className="secondaryButton"
344 onClick={() => challenges[0] && onOpen(challenges[0].id)}
345 disabled={!challenges[0]}
346 >
347 <Play size={18} />
348 打开最新挑战
349 </button>
350 </div>
351 </div>
352 <div className="challengeList">
353 {shareMessage ? <div className="inlineNotice">{shareMessage}</div> : null}
354 {shareFallbackText ? <pre className="shareFallbackText">{shareFallbackText}</pre> : null}
355 {challenges.length === 0 ? (
356 <div className="panel emptyPanel">
357 <MapPin />
358 <strong>还没有挑战</strong>
359 <span>现在可以发起第一个地图挑战。</span>
360 </div>
361 ) : (
362 challenges.map((challenge) => (
363 <article
364 key={challenge.id}
365 className="challengeCard"
366 >
367 <button className="challengeCardMain" onClick={() => onOpen(challenge.id)}>

Callers

nothing calls this directly

Calls 2

pctFunction · 0.85
shareChallengeFunction · 0.85

Tested by

no test coverage detected