퀘스트 완료 햅틱 · HOME 행성 반응 · Push·라이브 띠 중복 제어 · 알림함 위계 · Push 탭 화면 이동

This commit is contained in:
Sn-Kinos
2026-10-08 15:48:56 +09:00
parent 0b95454b28
commit 93150a0d5b
28 changed files with 619 additions and 52 deletions
@@ -22,7 +22,12 @@ String liveEventMessage(LiveEvent event) => switch (event.kind) {
};
/// 홈 라이브 띠(전광판)에 올릴 한 줄. [hero] 면 띠가 HERO TIME 참여 진입이 된다.
typedef TickerLine = ({String text, bool hero});
/// [push] 는 같은 사건을 알리는 Push 의 `kind` — 띠가 떠 있으면 앱 안 Push 를 겹쳐 띄우지 않는다(v1.5 §1.1).
typedef TickerLine = ({String text, bool hero, String? push});
/// 지금 화면에 보이는 HOME 라이브 띠의 사건 — `liveTickerKey(kind, fandomId)`. 띠가 그릴 때 적는다.
/// ponytail: 전역 하나. HOME 이 띠를 하나만 그리므로 충분하다 — 띠가 여러 곳에 생기면 집합으로.
String? liveTickerShowing;
/// 띠 한 줄 고르기 — 원장 C-78 순서(위기 → 성취)대로 핵심 이벤트가 먼저 오른다.
///
@@ -48,12 +53,14 @@ TickerLine? tickerLine({
return (
text: appL10n.eclipseLiveOccurred(eclipse.fandomName),
hero: false,
push: 'eclipse',
);
}
if (eclipse.canShake(now) && eclipse.defense >= 2) {
return (
text: appL10n.liveEclipseDefending('${eclipse.defense}'),
hero: false,
push: 'eclipse',
);
}
}
@@ -63,8 +70,12 @@ TickerLine? tickerLine({
? appL10n.liveHeroTime(fandomName)
: appL10n.liveHeroTimeBy(fandomName, heroNicknames.join(' · ')),
hero: true,
// HERO TIME 발동 알림(영웅의 선물)은 알림함 `item_used` 로 온다.
push: 'item_used',
);
}
if (event != null) return (text: liveEventMessage(event), hero: false);
return fallback == null ? null : (text: fallback, hero: false);
if (event != null) {
return (text: liveEventMessage(event), hero: false, push: null);
}
return fallback == null ? null : (text: fallback, hero: false, push: null);
}