[client] Upgrade offtheline

This commit is contained in:
Abhishek Shroff
2025-03-08 23:16:24 +05:30
parent 5a3145a6d8
commit d830e8934c
4 changed files with 17 additions and 25 deletions
+3 -2
View File
@@ -1,6 +1,7 @@
import 'dart:convert';
import 'package:collection/collection.dart';
import 'package:offtheline/offtheline.dart';
import 'package:phylum/libphylum/db/db.dart';
import 'package:phylum/libphylum/db/resource_helpers.dart';
import 'package:phylum/libphylum/phylum_account.dart';
@@ -25,7 +26,7 @@ class ExplorerPageFolder extends ExplorerPage {
@override
Future<bool> refresh(PhylumAccount account) =>
account.resourceRepository.requestResource(folderId).then((result) => result.success);
account.resourceRepository.requestResource(folderId).then((result) => result is ApiSuccessResponse);
@override
Stream<Resource?> watchResource(PhylumAccount account) => account.db.watchResource(folderId);
@@ -105,7 +106,7 @@ class ExplorerPageShared extends ExplorerPage {
@override
Future<bool> refresh(PhylumAccount account) {
return account.sharedResourcesRepository.refresh().then((result) => result.success);
return account.sharedResourcesRepository.refresh().then((result) => result is ApiSuccessResponse);
}
@override
+11 -20
View File
@@ -16,7 +16,10 @@ part 'user_list_response.dart';
typedef JsonMapResponseParser = PhylumApiSuccessResponse Function(Map<String, dynamic> data);
Future<ApiResponse> parseJsonMapResponse(StreamedResponse response, JsonMapResponseParser parseResponse) async {
Future<ApiResponse<PhylumAccount>> parseJsonMapResponse(
StreamedResponse response,
JsonMapResponseParser parseResponse,
) async {
final body = await response.bodyString();
if (response.statusCode >= 200 && response.statusCode < 300) {
final responseMap = (jsonDecode(body) as Map<String, dynamic>?) ?? const {};
@@ -25,36 +28,24 @@ Future<ApiResponse> parseJsonMapResponse(StreamedResponse response, JsonMapRespo
return PhylumApiErrorResponse.fromResponseBody(body);
}
abstract class PhylumApiSuccessResponse extends ApiResponse<PhylumAccount> {
typedef PhylumApiSuccessResponse = ApiSuccessResponse<PhylumAccount>;
class PhylumApiErrorResponse extends ApiErrorResponse<PhylumAccount> {
@override
bool get success => true;
@override
String get description => 'Success';
const PhylumApiSuccessResponse();
}
class PhylumApiErrorResponse extends ApiResponse<PhylumAccount> {
final int httpStatusCode;
final bool serverError;
final String code;
final String message;
@override
String get description => message;
@override
bool get success => false;
@override
Future<void> process(PhylumAccount account) => Future.value();
PhylumApiErrorResponse({required this.httpStatusCode, required this.code, required this.message});
PhylumApiErrorResponse({required this.serverError, required this.code, required this.message});
factory PhylumApiErrorResponse.fromResponseBody(String body) {
final map = (jsonDecode(body) as Map<String, dynamic>?) ?? const {};
final statusCode = map['status'] ?? 500;
return PhylumApiErrorResponse(
httpStatusCode: map['status'] ?? 500,
serverError: statusCode >= 500,
code: map['code'] ?? 'server_error',
message: map['msg'] ?? 'Server Error',
);
+2 -2
View File
@@ -596,8 +596,8 @@ packages:
dependency: "direct main"
description:
path: "."
ref: b51cf4bdc89396e996fa7572206e165739621edb
resolved-ref: b51cf4bdc89396e996fa7572206e165739621edb
ref: "38d765a3f3532ff4ecfc70db839ef9333e30ed38"
resolved-ref: "38d765a3f3532ff4ecfc70db839ef9333e30ed38"
url: "https://codeberg.org/shroff/offtheline.git"
source: git
version: "0.16.0"
+1 -1
View File
@@ -24,7 +24,7 @@ dependencies:
offtheline:
git:
url: https://codeberg.org/shroff/offtheline.git
ref: b51cf4bdc89396e996fa7572206e165739621edb
ref: 38d765a3f3532ff4ecfc70db839ef9333e30ed38
open_file:
path:
path_provider: