Skip to content

Commit ca13acf

Browse files
committedSep 8, 2021
+reddit authorization
1 parent d99593b commit ca13acf

14 files changed

+564
-65
lines changed
 

‎lib/application/accounts/bloc/accounts_bloc.dart

+3-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ class AccountsBloc extends Bloc<AccountsEvent, AccountsState> {
4040
},
4141
AuthorizeReddit: (e) async* {
4242
if (e.args.state == _authRandomString) {
43-
final account = RedditAccount(token: e.args.token);
43+
final response = await _redditAPI.getAccessToken(e.args.code);
44+
final account = RedditAccount.fromResponse(response);
45+
4446
_accountsRepository.setAccount(account);
4547
yield state.copyWith(
4648
redditAccount: Option.of(account),

‎lib/application/navigator/routes.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class RedditRedirectArguments with _$RedditRedirectArguments {
2525
assert(state != null);
2626
assert(code != null);
2727

28-
return RedditRedirectArguments(state: state!, token: code!);
28+
return RedditRedirectArguments(state: state!, code: code!);
2929
}
3030
factory RedditRedirectArguments({
31-
required String token,
31+
required String code,
3232
required String state,
3333
}) = _RedditRedirectArguments;
3434
}

‎lib/application/navigator/routes.freezed.dart

+21-22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
+4-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
abstract class OAuthAccountModel {
22
const OAuthAccountModel();
33

4-
String get token;
4+
String get accessToken;
5+
int get expiresIn;
6+
String get refreshToken;
7+
String get scope;
58
}

‎lib/domain/auth/reddit_account.dart

+21-2
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,39 @@
11
import 'package:devour/domain/auth/oauth_account_model.dart';
2+
import 'package:devour/infrastructure/api/reddit_api.dart';
23
import 'package:freezed_annotation/freezed_annotation.dart';
34
import 'package:hive_flutter/hive_flutter.dart';
45

56
part 'reddit_account.freezed.dart';
67
part 'reddit_account.g.dart';
78

9+
// TODO: currently, there is bad inheritance because of freezed. Try to do something.
810
@freezed
911
class RedditAccount extends OAuthAccountModel with _$RedditAccount {
1012
/// Creates a reddit account model
1113
@HiveType(typeId: 0)
1214
const factory RedditAccount({
13-
@HiveField(0) required String token,
15+
@HiveField(0) required String accessToken,
16+
@HiveField(1) required int expiresIn,
17+
@HiveField(2) required String refreshToken,
18+
@HiveField(3) required String scope,
1419
}) = _RedditAccount;
1520

21+
factory RedditAccount.fromResponse(AuthorizationResponse response) =>
22+
RedditAccount(
23+
accessToken: response.accessToken,
24+
expiresIn: response.expiresIn,
25+
refreshToken: response.refreshToken,
26+
scope: response.scope,
27+
);
28+
1629
const RedditAccount._();
1730

1831
@override
19-
String get token => token;
32+
String get accessToken => accessToken;
33+
@override
34+
int get expiresIn => expiresIn;
35+
@override
36+
String get refreshToken => refreshToken;
37+
@override
38+
String get scope => scope;
2039
}

0 commit comments

Comments
 (0)