This repository has been archived on 2023-11-13. You can view files and clone it, but cannot push or open issues or pull requests.
imagini/web_native/lib/api/imagini_api_repository.dart

48 lines
1.4 KiB
Dart

import 'dart:async';
import 'package:imagini/api/api_provider.dart';
import 'package:imagini/graphql/imagini_graphql.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:cached_network_image/cached_network_image.dart';
class ImaginiAPIRepository {
APIProvider _apiProvider;
ImaginiAPIRepository(this._apiProvider);
Stream<bool> login(String user, password, server) {
return Stream.fromFuture(_apiProvider.login(user, password, server).then((QueryResult resp) {
if (resp.exception != null)
return false;
final loginResponse = Login$Query.fromJson(resp.data);
if (loginResponse.login.result == AuthResult.failure)
return false;
return true;
}));
}
Stream<QueryResult> me() {
return Stream.fromFuture(_apiProvider.me());
}
Stream<MediaItems$Query> mediaItems() {
return Stream.fromFuture(_apiProvider.mediaItems().then((QueryResult resp) {
final mediaItemsResponse = MediaItems$Query.fromJson(resp.data);
return mediaItemsResponse;
}));
}
Stream<bool> isAuthenticated() {
return Stream.fromFuture(_apiProvider.me().then((QueryResult resp) {
if (resp.exception != null)
return false;
return true;
}));
}
Future<CachedNetworkImage> getImage(String fileName, int derivedContentWidth) {
return _apiProvider.getImage(fileName, derivedContentWidth);
}
}