Skip to content

Commit

Permalink
feat(frontend): Simple in memory cache for tagger client
Browse files Browse the repository at this point in the history
  • Loading branch information
Grohden committed Aug 5, 2020
1 parent 7dc65c8 commit e5fcd9b
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 4 deletions.
51 changes: 51 additions & 0 deletions frontend/lib/api/tagger/repository_tagger_cache_client.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import 'package:flutter/foundation.dart';

import 'repository_tagger_client.dart';


/// Simple tagger client cache layer
class RepositoryTaggerCacheClient implements RepositoryTaggerClient {
RepositoryTaggerCacheClient({
@required this.delegate,
});

final RepositoryTaggerClient delegate;

List<SimpleRepository> _cachedStarredRepos = [];

@override
Future<UserTag> addTag(CreateTagInput input) => delegate.addTag(input);

@override
Future<DetailedRepository> detailedRepo(int id) => delegate.detailedRepo(id);

@override
Future<bool> hasSession() => delegate.hasSession();

@override
Future<String> oauth() => delegate.oauth();

@override
Future removeTag({int githubId, int userTagId}) => delegate.removeTag(
githubId: githubId,
userTagId: userTagId,
);

@override
Future<TagRepositoriesResponse> repositoriesByTag(int id) =>
delegate.repositoriesByTag(id);

@override
Future<List<SimpleRepository>> starredRepos() async {
if (_cachedStarredRepos.isEmpty) {
final repos = await delegate.starredRepos();

_cachedStarredRepos = repos;
}

return _cachedStarredRepos;
}

@override
Future<List<UserTag>> userTags() => delegate.userTags();
}
17 changes: 13 additions & 4 deletions frontend/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,19 @@ class TaggerApp extends StatelessWidget {
}))
..interceptors.add(LogInterceptor(responseBody: false));

final tagger = Get.put(RepositoryTaggerClient(
dio,
baseUrl: getTaggerUrl(),
));
final tagger = Get.put<RepositoryTaggerClient>(
RepositoryTaggerCacheClient(
delegate: RepositoryTaggerClient(
dio,
baseUrl: getTaggerUrl(),
),
),
);

// To fix issues related to
// flutter/get url handlers we need to make sure
// that get doesn't delete home controller.
Get.put(HomeController());

return TaggerApp._(
dio: dio,
Expand Down

0 comments on commit e5fcd9b

Please sign in to comment.