OpenMediacenterMobileFlutter/lib/api/token.dart
lukas-heiligenbrunner 6f6fbb3897 add page for tv shows
only showing up if enabled in backend
2022-10-15 23:15:21 +02:00

67 lines
1.8 KiB
Dart

import 'dart:async';
import 'package:flutter/widgets.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import '../log/log.dart';
class TokenT {
String token;
String domain;
String videoPath;
String tvPath;
TokenT(this.token, this.domain, this.videoPath, this.tvPath);
}
class Token {
static final Token _token = Token._();
final _storage = const FlutterSecureStorage();
String _tokenval = "";
String _domain = "";
String _vPath = "";
String _tvPath = "";
static Token getInstance() {
return _token;
}
Future<TokenT?> getToken() async {
if (_tokenval == "" || _domain == "" || _vPath == "") {
Log.d("reading token store");
WidgetsFlutterBinding.ensureInitialized();
final token = await _storage.read(key: 'jwt');
final domain = await _storage.read(key: 'domain');
// todo paths should be loaded on each app start
final vPath = await _storage.read(key: 'videoPath');
final tvPath = await _storage.read(key: 'tvPath');
// check if value is defined in phone store
if (token != null && domain != null && vPath != null) {
_tokenval = token;
_domain = domain;
return TokenT(token, domain, vPath, tvPath ?? "");
} else {
Log.d("no token defined");
return null;
}
} else {
return TokenT(_tokenval, _domain, _vPath, _tvPath);
}
}
void setToken(String token, String domain, String videoPath, String tvPath) {
_tokenval = token;
_domain = domain;
_vPath = videoPath;
_tvPath = tvPath;
_storage.write(key: 'jwt', value: token);
_storage.write(key: 'domain', value: domain);
_storage.write(key: 'videoPath', value: videoPath);
_storage.write(key: 'tvPath', value: tvPath);
}
Token._();
}