33 lines
1.1 KiB
Dart
33 lines
1.1 KiB
Dart
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<bool> isVerified() async => (await _storage.settings.getText(_key)) == 'true';
|
|
|
|
Future<VerifyStart> request() async => await _verifier?.requestCode() ?? VerifyStart.unavailable;
|
|
|
|
/// 확인 번호를 넣는다. 맞으면 "확인됨"으로 기록한다.
|
|
Future<bool> 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;
|
|
}
|
|
}
|