퀘스트 제목 다국어 · HOME 다시 읽기 · 내 퀘스트 검토 중·반려됨 구분

This commit is contained in:
Sn-Kinos
2026-10-06 01:22:28 +09:00
parent cf3dd06774
commit 83d9c1e8d4
10 changed files with 139 additions and 26 deletions
+17
View File
@@ -169,6 +169,23 @@ extension SnapshotReader on Map<String, dynamic> {
return value is String && value.isNotEmpty ? value : fallback;
}
/// 다국어 필드 — 문자열이거나 언어별 지도(`{ko: …, en: …}`, 운영 Quest 제목 등).
/// 지도면 지금 앱 언어(`zh-CN` · `zh`) → ko → en → 아무 값 순으로 고른다.
String textOr(String key, [String fallback = '']) {
final value = this[key];
if (value is! Map) return strOr(key, fallback);
final map = Map<String, dynamic>.from(value);
final tag = appL10n.localeName.replaceAll('_', '-');
for (final k in [tag, tag.split('-').first, 'ko', 'en']) {
final v = map.strOr(k);
if (v.isNotEmpty) return v;
}
return map.values.whereType<String>().firstWhere(
(v) => v.isNotEmpty,
orElse: () => fallback,
);
}
bool boolOr(String key, [bool fallback = false]) {
final value = this[key];
return value is bool ? value : fallback;