Browse Source

feat(neon): make result constructors constant

Signed-off-by: Nikolas Rimikis <leptopoda@users.noreply.github.com>
pull/875/head
Nikolas Rimikis 1 year ago
parent
commit
39ca440da4
No known key found for this signature in database
GPG Key ID: 85ED1DE9786A4FF2
  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,
});
factory Result.loading() => const Result(
null,
null,
isLoading: true,
isCached: false,
);
const Result.loading()
: data = null,
error = null,
isLoading = true,
isCached = false;
factory Result.success(final T data) => Result(
data,
null,
isLoading: false,
isCached: false,
);
const Result.success(this.data)
: error = null,
isLoading = false,
isCached = false;
factory Result.error(final Object error) => Result(
null,
error,
isLoading: false,
isCached: false,
);
const Result.error(this.error)
: data = null,
isLoading = false,
isCached = false;
final T? data;
final Object? error;

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

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

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

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

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

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

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

@ -102,7 +102,7 @@ class RequestManager {
final int retries = 0,
]) async {
// 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);
final key = '$clientID-$k';

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

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

Loading…
Cancel
Save