Skip to content

Commit b902b1c

Browse files
committed
update
1 parent 68b9aec commit b902b1c

25 files changed

+290
-883
lines changed

.idea/libraries/Dart_Packages.xml

Lines changed: 3 additions & 600 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/libraries/Flutter_Plugins.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

Lines changed: 52 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

android/app/build.gradle

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ apply plugin: 'com.android.application'
1515
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
1616

1717
android {
18-
compileSdkVersion 28
18+
compileSdkVersion 29
1919

2020
lintOptions {
2121
disable 'InvalidPackage'
@@ -24,11 +24,11 @@ android {
2424
defaultConfig {
2525
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
2626
applicationId "com.hoc.searchbook"
27-
minSdkVersion 16
28-
targetSdkVersion 28
27+
minSdkVersion 21
28+
targetSdkVersion 29
2929
versionCode 1
3030
versionName "1.0"
31-
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
31+
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
3232
}
3333

3434
buildTypes {
@@ -46,6 +46,6 @@ flutter {
4646

4747
dependencies {
4848
testImplementation 'junit:junit:4.12'
49-
androidTestImplementation 'com.android.support.test:runner:1.0.1'
50-
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
49+
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
50+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
5151
}

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ buildscript {
55
}
66

77
dependencies {
8-
classpath 'com.android.tools.build:gradle:3.0.1'
8+
classpath 'com.android.tools.build:gradle:3.5.3'
99
}
1010
}
1111

android/gradle.properties

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
org.gradle.jvmargs=-Xmx1536M
22
android.enableR8=true
3+
android.useAndroidX=true
4+
android.enableJetifier=true
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
#Fri Jun 23 08:50:38 CEST 2017
1+
#Tue Dec 24 09:26:24 ICT 2019
22
distributionBase=GRADLE_USER_HOME
33
distributionPath=wrapper/dists
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
6+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

lib/app.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
import 'package:search_book/domain/book_repo.dart';
22
import 'package:search_book/pages/home_page/home_bloc.dart';
33
import 'package:search_book/pages/home_page/home_page.dart';
4-
import 'package:search_book/data/local/shared_pref.dart';
54
import 'package:flutter_bloc_pattern/flutter_bloc_pattern.dart';
65
import 'package:flutter/material.dart';
76
import 'package:flutter/services.dart';
87
import 'package:flutter_provider/flutter_provider.dart';
8+
import 'package:search_book/domain/favorited_books_repo.dart';
99

1010
class MyApp extends StatelessWidget {
1111
const MyApp({Key key}) : super(key: key);
@@ -18,7 +18,7 @@ class MyApp extends StatelessWidget {
1818
fontFamily: 'NunitoSans',
1919
brightness: Brightness.dark,
2020
),
21-
home: Consumer2<SharedPref, BookRepo>(
21+
home: Consumer2<FavoritedBooksRepo, BookRepo>(
2222
builder: (context, sharedPref, bookRepo) {
2323
return BlocProvider<HomeBloc>(
2424
child: MyHomePage(),
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import 'dart:async';
2+
3+
import 'package:built_collection/built_collection.dart';
4+
import 'package:distinct_value_connectable_stream/distinct_value_connectable_stream.dart';
5+
import 'package:meta/meta.dart';
6+
import 'package:rx_shared_preferences/rx_shared_preferences.dart';
7+
import 'package:rxdart/rxdart.dart';
8+
import 'package:search_book/domain/toggle_fav_result.dart';
9+
import 'package:search_book/domain/favorited_books_repo.dart';
10+
11+
class FavoritedBooksRepoImpl implements FavoritedBooksRepo {
12+
@visibleForTesting
13+
static const favoritedIdsKey =
14+
'com.hoc.search_book_api_search_book_rxdart.favorited_ids';
15+
16+
final RxSharedPreferences _rxPrefs;
17+
18+
@override
19+
final ValueStream<BuiltSet<String>> favoritedIds$;
20+
21+
FavoritedBooksRepoImpl(this._rxPrefs)
22+
: favoritedIds$ = _rxPrefs
23+
.getStringListStream(favoritedIdsKey)
24+
.map((ids) => BuiltSet.of(ids ?? <String>[]))
25+
.publishValueDistinct()
26+
..listen((ids) => print('[FAV_IDS] ids=$ids'))
27+
..connect();
28+
29+
@override
30+
Future<ToggleFavResult> toggleFavorited(String bookId) async {
31+
final ids = (await _rxPrefs.getStringList(favoritedIdsKey)) ?? <String>[];
32+
33+
bool added;
34+
List<String> newIds;
35+
if (ids.contains(bookId)) {
36+
newIds = ids.where((id) => id != bookId).toList();
37+
added = false;
38+
} else {
39+
newIds = [...ids, bookId];
40+
added = true;
41+
}
42+
43+
try {
44+
final bool result = await _rxPrefs.setStringList(favoritedIdsKey, newIds);
45+
return ToggleFavResult(
46+
(b) => b
47+
..added = added
48+
..error = null
49+
..result = result
50+
..id = bookId,
51+
);
52+
} catch (e) {
53+
return ToggleFavResult(
54+
(b) => b
55+
..added = added
56+
..error = e
57+
..result = false
58+
..id = bookId,
59+
);
60+
}
61+
}
62+
}

lib/data/local/shared_pref.dart

Lines changed: 0 additions & 118 deletions
This file was deleted.

0 commit comments

Comments
 (0)