chore: Implement a fake response for testing (#202)

Co-authored-by: PartyDonut <PartyDonut@users.noreply.github.com>
This commit is contained in:
PartyDonut 2025-01-06 18:10:36 +01:00 committed by GitHub
parent 5b781cf642
commit d60fec405a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 729 additions and 27 deletions

View file

@ -6,6 +6,7 @@ import 'package:collection/collection.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:path/path.dart';
import 'package:fladder/fake/fake_jellyfin_open_api.dart';
import 'package:fladder/jellyfin/enum_models.dart';
import 'package:fladder/jellyfin/jellyfin_open_api.swagger.dart';
import 'package:fladder/models/account_model.dart';
@ -13,25 +14,12 @@ import 'package:fladder/models/credentials_model.dart';
import 'package:fladder/models/item_base_model.dart';
import 'package:fladder/models/items/media_segments_model.dart';
import 'package:fladder/models/items/trick_play_model.dart';
import 'package:fladder/providers/api_provider.dart';
import 'package:fladder/providers/auth_provider.dart';
import 'package:fladder/providers/image_provider.dart';
import 'package:fladder/providers/user_provider.dart';
import 'package:fladder/util/duration_extensions.dart';
import 'package:fladder/util/jellyfin_extension.dart';
final jellyServiceProvider = StateProvider<JellyService>(
(ref) => JellyService(
ref,
JellyfinOpenApi.create(
interceptors: [
JellyRequest(ref),
JellyResponse(ref),
HttpLoggingInterceptor(level: Level.basic),
],
),
),
);
class ServerQueryResult {
final List<BaseItemDto> original;
final List<ItemBaseModel> items;
@ -77,9 +65,20 @@ class ServerQueryResult {
}
class JellyService {
JellyService(this.ref, this.api);
JellyService(this.ref, this._api);
final JellyfinOpenApi _api;
JellyfinOpenApi get api {
var authServer = ref.read(authProvider).tempCredentials.server;
var currentServer = ref.read(userProvider)?.credentials.server;
if ((authServer.isNotEmpty ? authServer : currentServer) == FakeHelper.fakeTestServerUrl) {
return FakeJellyfinOpenApi();
} else {
return _api;
}
}
final JellyfinOpenApi api;
final Ref ref;
AccountModel? get account => ref.read(userProvider);
@ -294,10 +293,11 @@ class JellyService {
);
return response.copyWith(
body: response.body?.items
?.map(
(e) => ItemBaseModel.fromBaseDto(e, ref),
)
.toList(),
?.map(
(e) => ItemBaseModel.fromBaseDto(e, ref),
)
.toList() ??
[],
);
}