import 'package:friendly_map/modules/core/core.dart'; import 'package:friendly_map/modules/storage/storage.dart'; import 'change_bus.dart'; /// 내 번호 문자 확인. 확인 방식(보관함 서버 등)은 [PhoneVerifier] 약속 뒤에 있어 여기서는 모른다. class VerifyService { VerifyService(this._storage, this._clock, this._bus, this._verifier); static const _key = 'phone_verified'; final Storage _storage; final Clock _clock; final ChangeBus _bus; final PhoneVerifier? _verifier; /// 이 앱에 확인 수단이 붙어 있는지. bool get available => _verifier != null; Future isVerified() async => (await _storage.settings.getText(_key)) == 'true'; Future request() async => await _verifier?.requestCode() ?? VerifyStart.unavailable; /// 확인 번호를 넣는다. 맞으면 "확인됨"으로 기록한다. Future confirm(String code) async { final ok = await _verifier?.confirm(code) ?? false; if (ok) { await _storage.settings.putText(_key, 'true', _clock.now()); _bus.notify(); } return ok; } }