Figma 설명 프레임 반영 — 로그인·온보딩·스플래시 · HOME · GALAXY · 퀘스트·이클립스·알림

This commit is contained in:
Sn-Kinos
2026-10-06 03:03:20 +09:00
parent 64825e72b0
commit ecf5998725
77 changed files with 2703 additions and 640 deletions
@@ -177,6 +177,12 @@ class FirestorePlanetRepository implements PlanetRepository {
final member = memberSnap.data() ?? const <String, dynamic>{};
final posts = await postsF;
final targets = nebulaTargetsFrom((await policyF).data());
// 생성자 = `founderUid`(성운 생성자 · 탄생 전 탈퇴 시 승계자, C-100). 프로필 · 닉네임은 그 멤버 문서에서
// 읽는다(Figma `544:19765` 「생성자 프로필 · 닉네임」). 떠났거나 시드 행성이면 줄을 그리지 않는다.
final founderUid = fandom.strOr('founderUid');
final founder = founderUid.isEmpty
? null
: (await db.doc('fandoms/$fandomId/members/$founderUid').get()).data();
final axes = _map(fandom, 'fpiAxes');
final ranks = _map(fandom, 'fpiRanks');
@@ -199,6 +205,8 @@ class FirestorePlanetRepository implements PlanetRepository {
_ => null,
};
return PlanetDetail(
isOwner: founderUid.isNotEmpty && founderUid == uid,
ownerName: founder == null ? null : publicName(founder['nickname']),
joined: memberSnap.exists,
stage: stage,
fandomId: fandomId,
@@ -325,6 +333,8 @@ class FirestorePlanetRepository implements PlanetRepository {
// 순위 동향 = 직전 순위 − 현재 순위. 둘 다 서버가 적은 값이다.
change: _map(data, 'fpiRanksPrev').intOr(axis, rank) - rank,
isMine: id == fandomId,
planetType: data['planetType'] is String ? data['planetType'] as String : null,
colorKey: data['colorKey'] is String ? data['colorKey'] as String : null,
);
}
@@ -335,7 +345,11 @@ class FirestorePlanetRepository implements PlanetRepository {
required String fandomId,
int limit = 30,
}) async {
final ranking = await _userRanking(metric: metric, fandomId: fandomId, limit: limit);
final ranking = await _userRanking(
metric: metric,
fandomId: fandomId,
limit: limit,
);
final fandom = (await _backend.db.doc('fandoms/$fandomId').get()).data();
return ranking.withUpdate(_time(fandom?['memberRankedAt']), 5);
}