import 'settings_group.dart'; /// 약속 (설정 A): 환경 설정 > Tor 브라우저 (사용자 요청 10/10) - 자기 키 (이름 · 처음 값 · 읽기 · 쓰기) 를 스스로 갖는다. /// 설정 하나를 더할 때는 이 파일만 고친다. 저장 파일의 키 이름은 예전 그대로 (평평한 키) class TorBrowserSettings implements SettingsGroup { /// Tor 화면의 쿠키 · 기록 · 캐시를 닫은 뒤에도 남기기 (기본: 닫으면 지움) bool keepData = false; /// Tor 화면을 떠난 뒤 tor 를 몇 분 더 켜 둘지 (0 = 바로 끔, 처음 2분 - 관리자 결정 10/11). 웹 뷰 · 다리 · 프록시는 늘 바로 정리 int idleMinutes = 2; /// Tor 화면의 처음 · 🏠 주소 String homeUrl = defaultHome; static const defaultHome = 'https://check.torproject.org/'; /// Tor 화면의 JavaScript (끄면 더 안전하지만 많은 사이트가 보이지 않음) bool javaScript = true; /// "공식 Tor Browser 가 아닙니다" 안내를 보았는지 (처음 열 때 한 번) bool noticeSeen = false; @override void write(Map j, {required bool plainSecrets}) { j['torKeepData'] = keepData; j['torIdleMinutes'] = idleMinutes; j['torHomeUrl'] = homeUrl; j['torJavaScript'] = javaScript; j['torNoticeSeen'] = noticeSeen; } @override void read(Map j) { keepData = j['torKeepData'] == true; idleMinutes = j['torIdleMinutes'] is int && (j['torIdleMinutes'] as int) >= 0 && (j['torIdleMinutes'] as int) <= 60 ? j['torIdleMinutes'] as int : 2; homeUrl = j['torHomeUrl'] is String && (j['torHomeUrl'] as String).trim().isNotEmpty ? (j['torHomeUrl'] as String).trim() : defaultHome; javaScript = j['torJavaScript'] != false; noticeSeen = j['torNoticeSeen'] == true; } }