Refactor mobile to use OpenApi generated SDK (#336)

This commit is contained in:
Alex
2022-07-13 07:23:48 -05:00
committed by GitHub
parent d69470e207
commit ae7e582ec8
276 changed files with 14513 additions and 3003 deletions

View File

@@ -1,70 +1,49 @@
import 'dart:convert';
import 'package:dio/dio.dart';
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:http/http.dart';
import 'package:http_parser/http_parser.dart';
import 'package:image_picker/image_picker.dart';
import 'package:immich_mobile/constants/hive_box.dart';
import 'package:immich_mobile/shared/models/upload_profile_image_repsonse.model.dart';
import 'package:immich_mobile/shared/models/user.model.dart';
import 'package:immich_mobile/shared/services/network.service.dart';
import 'package:immich_mobile/utils/dio_http_interceptor.dart';
import 'package:immich_mobile/shared/services/api.service.dart';
import 'package:immich_mobile/utils/files_helper.dart';
import 'package:openapi/api.dart';
final userServiceProvider =
Provider((ref) => UserService(ref.watch(networkServiceProvider)));
final userServiceProvider = Provider(
(ref) => UserService(
ref.watch(apiServiceProvider),
),
);
class UserService {
final NetworkService _networkService;
UserService(this._networkService);
final ApiService _apiService;
Future<List<User>> getAllUsersInfo() async {
UserService(this._apiService);
Future<List<UserResponseDto>?> getAllUsersInfo({required bool isAll}) async {
try {
var res = await _networkService.getRequest(url: 'user');
List<dynamic> decodedData = jsonDecode(res.toString());
List<User> result = List.from(decodedData.map((e) => User.fromMap(e)));
return result;
return await _apiService.userApi.getAllUsers(isAll);
} catch (e) {
debugPrint("Error getAllUsersInfo ${e.toString()}");
debugPrint("Error [getAllUsersInfo] ${e.toString()}");
return null;
}
return [];
}
Future<UploadProfileImageResponse?> uploadProfileImage(XFile image) async {
var dio = Dio();
dio.interceptors.add(AuthenticatedRequestInterceptor());
String savedEndpoint = Hive.box(userInfoBox).get(serverEndpointKey);
var mimeType = FileHelper.getMimeType(image.path);
final imageData = MultipartFile.fromBytes(
await image.readAsBytes(),
filename: image.name,
contentType: MediaType(
mimeType["type"],
mimeType["subType"],
),
);
final formData = FormData.fromMap({'file': imageData});
Future<CreateProfileImageResponseDto?> uploadProfileImage(XFile image) async {
try {
Response res = await dio.post(
'$savedEndpoint/user/profile-image',
data: formData,
var mimeType = FileHelper.getMimeType(image.path);
return await _apiService.userApi.createProfileImage(
MultipartFile.fromBytes(
'file',
await image.readAsBytes(),
filename: image.name,
contentType: MediaType(
mimeType["type"],
mimeType["subType"],
),
),
);
var payload = UploadProfileImageResponse.fromJson(res.toString());
return payload;
} on DioError catch (e) {
debugPrint("Error uploading file: ${e.response}");
return null;
} catch (e) {
debugPrint("Error uploading file: $e");
debugPrint("Error [uploadProfileImage] ${e.toString()}");
return null;
}
}