mirror of
https://github.com/immich-app/immich
synced 2025-10-17 18:19:27 +00:00
Refactor mobile to use OpenApi generated SDK (#336)
This commit is contained in:
parent
d69470e207
commit
ae7e582ec8
276 changed files with 14513 additions and 3003 deletions
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue