diff --git a/lib/api/auth.dart b/lib/api/auth.dart index d977881..f997f3a 100644 --- a/lib/api/auth.dart +++ b/lib/api/auth.dart @@ -123,7 +123,7 @@ class PremiumAuth { Future refreshAuth({bool removePremium = false}) async { if (!removePremium) { - if (_settings.premiumAccessToken == "") { + if (_settings.plusSessionId == "") { await _settings.update(premiumScopes: [], premiumLogin: ""); return false; } @@ -140,11 +140,11 @@ class PremiumAuth { try { if (kDebugMode) { print(FilcAPI.plusActivation); - print(_settings.premiumAccessToken); + print(_settings.plusSessionId); } final res = await http.post(Uri.parse(FilcAPI.plusActivation), body: { - "access_token": _settings.premiumAccessToken, + "session_id": _settings.plusSessionId, }); if (kDebugMode) print(res.body); @@ -156,13 +156,16 @@ class PremiumAuth { if (res.body == "empty_sponsors") { throw "This user isn't sponsoring anyone currently!"; } + if (res.body == "expired_subscription") { + throw "This user isn't a subscriber anymore!"; + } final premium = PremiumResult.fromJson(jsonDecode(res.body) as Map); // successful activation of reFilc+ log("[INFO] reFilc+ activated: ${premium.scopes.join(',')}"); await _settings.update( - premiumAccessToken: premium.accessToken, + plusSessionId: premium.sessionId, premiumScopes: premium.scopes, premiumLogin: premium.login, ); @@ -178,7 +181,11 @@ class PremiumAuth { // activation of reFilc+ failed await _settings.update( - premiumAccessToken: "", premiumScopes: [], premiumLogin: ""); + premiumAccessToken: "", + premiumScopes: [], + premiumLogin: "", + plusSessionId: "", + ); return false; } } diff --git a/lib/models/premium_result.dart b/lib/models/premium_result.dart index 4ed19f9..613fc7d 100644 --- a/lib/models/premium_result.dart +++ b/lib/models/premium_result.dart @@ -1,19 +1,19 @@ class PremiumResult { - final String accessToken; + final String sessionId; final List scopes; final String login; PremiumResult({ - required this.accessToken, + required this.sessionId, required this.scopes, required this.login, }); factory PremiumResult.fromJson(Map json) { return PremiumResult( - accessToken: json["access_token"] ?? "", + sessionId: json["session_id"] ?? "", scopes: (json["scopes"] ?? []).cast(), - login: json["login"] ?? "", + login: json["customer_id"] ?? "", ); } } diff --git a/lib/providers/premium_provider.dart b/lib/providers/premium_provider.dart index ab0767b..4c213a5 100644 --- a/lib/providers/premium_provider.dart +++ b/lib/providers/premium_provider.dart @@ -6,12 +6,12 @@ import 'package:flutter/widgets.dart'; class PremiumProvider extends ChangeNotifier { final SettingsProvider _settings; List get scopes => _settings.premiumScopes; - bool hasScope(String scope) => false; - // scopes.contains(scope) || scopes.contains(PremiumScopes.all); + bool hasScope(String scope) => + scopes.contains(scope) || scopes.contains(PremiumScopes.all); String get accessToken => _settings.premiumAccessToken; String get login => _settings.premiumLogin; bool get hasPremium => - _settings.premiumAccessToken != "" && _settings.premiumScopes.isNotEmpty; + _settings.plusSessionId != "" && _settings.premiumScopes.isNotEmpty; late final PremiumAuth _auth; PremiumAuth get auth => _auth;