Browse Source

Merge pull request #875 from nextcloud/feat/neon/const_result

make result constructors constant
pull/585/head
Nikolas Rimikis 1 year ago committed by GitHub
parent
commit
827a842664
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      packages/neon/neon/lib/src/bloc/result.dart
  2. 2
      packages/neon/neon/lib/src/blocs/login_check_account.dart
  3. 2
      packages/neon/neon/lib/src/blocs/login_check_server_status.dart
  4. 2
      packages/neon/neon/lib/src/blocs/login_flow.dart
  5. 10
      packages/neon/neon/lib/src/blocs/unified_search.dart
  6. 4
      packages/neon/neon/lib/src/blocs/user_statuses.dart
  7. 2
      packages/neon/neon/lib/src/utils/request_manager.dart
  8. 10
      packages/neon/neon/test/result_test.dart

31
packages/neon/neon/lib/src/bloc/result.dart

@ -9,26 +9,21 @@ class Result<T> {
required this.isCached, required this.isCached,
}); });
factory Result.loading() => const Result( const Result.loading()
null, : data = null,
null, error = null,
isLoading: true, isLoading = true,
isCached: false, isCached = false;
);
factory Result.success(final T data) => Result( const Result.success(this.data)
data, : error = null,
null, isLoading = false,
isLoading: false, isCached = false;
isCached: false,
);
factory Result.error(final Object error) => Result( const Result.error(this.error)
null, : data = null,
error, isLoading = false,
isLoading: false, isCached = false;
isCached: false,
);
final T? data; final T? data;
final Object? error; final Object? error;

2
packages/neon/neon/lib/src/blocs/login_check_account.dart

@ -45,7 +45,7 @@ class LoginCheckAccountBloc extends InteractiveBloc
@override @override
Future<void> refresh() async { Future<void> refresh() async {
state.add(Result.loading()); state.add(const Result.loading());
try { try {
final client = NextcloudClient( final client = NextcloudClient(

2
packages/neon/neon/lib/src/blocs/login_check_server_status.dart

@ -38,7 +38,7 @@ class LoginCheckServerStatusBloc extends InteractiveBloc
@override @override
Future<void> refresh() async { Future<void> refresh() async {
state.add(Result.loading()); state.add(const Result.loading());
try { try {
final client = NextcloudClient( final client = NextcloudClient(

2
packages/neon/neon/lib/src/blocs/login_flow.dart

@ -51,7 +51,7 @@ class LoginFlowBloc extends InteractiveBloc implements LoginFlowBlocEvents, Logi
@override @override
Future<void> refresh() async { Future<void> refresh() async {
try { try {
init.add(Result.loading()); init.add(const Result.loading());
final initResponse = await _client.core.clientFlowLoginV2.init(); final initResponse = await _client.core.clientFlowLoginV2.init();
init.add(Result.success(initResponse.body)); init.add(Result.success(initResponse.body));

10
packages/neon/neon/lib/src/blocs/unified_search.dart

@ -48,7 +48,7 @@ class UnifiedSearchBloc extends InteractiveBloc implements UnifiedSearchBlocEven
@override @override
BehaviorSubject<Result<Map<CoreUnifiedSearchProvider, Result<CoreUnifiedSearchResult>>?>> results = BehaviorSubject<Result<Map<CoreUnifiedSearchProvider, Result<CoreUnifiedSearchResult>>?>> results =
BehaviorSubject.seeded(Result.success(null)); BehaviorSubject.seeded(const Result.success(null));
@override @override
void dispose() { void dispose() {
@ -76,13 +76,13 @@ class UnifiedSearchBloc extends InteractiveBloc implements UnifiedSearchBlocEven
@override @override
void disable() { void disable() {
enabled.add(false); enabled.add(false);
results.add(Result.success(null)); results.add(const Result.success(null));
_term = ''; _term = '';
} }
Future<void> _search() async { Future<void> _search() async {
if (_term.isEmpty) { if (_term.isEmpty) {
results.add(Result.success(null)); results.add(const Result.success(null));
return; return;
} }
@ -107,12 +107,12 @@ class UnifiedSearchBloc extends InteractiveBloc implements UnifiedSearchBlocEven
final Iterable<CoreUnifiedSearchProvider> providers, final Iterable<CoreUnifiedSearchProvider> providers,
) sync* { ) sync* {
for (final provider in providers) { for (final provider in providers) {
yield MapEntry(provider, Result.loading()); yield MapEntry(provider, const Result.loading());
} }
} }
Future<void> _searchProvider(final CoreUnifiedSearchProvider provider) async { Future<void> _searchProvider(final CoreUnifiedSearchProvider provider) async {
_updateResults(provider, Result.loading()); _updateResults(provider, const Result.loading());
try { try {
final response = await _account.client.core.unifiedSearch.search( final response = await _account.client.core.unifiedSearch.search(
providerId: provider.id, providerId: provider.id,

4
packages/neon/neon/lib/src/blocs/user_statuses.dart

@ -58,7 +58,7 @@ class UserStatusesBloc extends InteractiveBloc implements UserStatusesBlocEvents
} }
try { try {
_updateStatus(username, Result.loading()); _updateStatus(username, const Result.loading());
UserStatusPublicInterface? data; UserStatusPublicInterface? data;
@ -90,7 +90,7 @@ class UserStatusesBloc extends InteractiveBloc implements UserStatusesBlocEvents
_updateStatus(username, Result.success(data)); _updateStatus(username, Result.success(data));
} catch (e, s) { } catch (e, s) {
if (e is DynamiteApiException && e.statusCode == 404) { if (e is DynamiteApiException && e.statusCode == 404) {
_updateStatus(username, Result.success(null)); _updateStatus(username, const Result.success(null));
return; return;
} }
debugPrint(e.toString()); debugPrint(e.toString());

2
packages/neon/neon/lib/src/utils/request_manager.dart

@ -102,7 +102,7 @@ class RequestManager {
final int retries = 0, final int retries = 0,
]) async { ]) async {
// emit loading state with the current value if present // emit loading state with the current value if present
final value = subject.valueOrNull?.copyWith(isLoading: true) ?? Result.loading(); final value = subject.valueOrNull?.asLoading() ?? const Result.loading();
subject.add(value); subject.add(value);
final key = '$clientID-$k'; final key = '$clientID-$k';

10
packages/neon/neon/test/result_test.dart

@ -31,7 +31,7 @@ void main() {
test('Transform to loading', () { test('Transform to loading', () {
const data = 'someData'; const data = 'someData';
final a = Result.success(data); const a = Result.success(data);
const b = Result( const b = Result(
data, data,
null, null,
@ -46,8 +46,8 @@ void main() {
test('data check', () { test('data check', () {
const data = 'someData'; const data = 'someData';
final a = Result.loading(); const a = Result.loading();
final b = Result.success(data); const b = Result.success(data);
const c = Result( const c = Result(
data, data,
null, null,
@ -68,7 +68,7 @@ void main() {
test('error check', () { test('error check', () {
const error = 'someError'; const error = 'someError';
final a = Result.error(error); const a = Result.error(error);
expect(a.hasError, true); expect(a.hasError, true);
}); });
@ -76,7 +76,7 @@ void main() {
test('transform', () { test('transform', () {
const data = 1; const data = 1;
final a = Result.success(data); const a = Result.success(data);
String transformer(final int data) => data.toString(); String transformer(final int data) => data.toString();

Loading…
Cancel
Save