mirror of
				https://github.com/KevinMidboe/immich.git
				synced 2025-10-29 17:40:28 +00:00 
			
		
		
		
	Refactor mobile to use OpenApi generated SDK (#336)
This commit is contained in:
		| @@ -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; | ||||
|     } | ||||
|   } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user